-WaboSign is a self-hosted, open-source platform for secure digital document signing and processing. Create PDF forms, fill them in online from any device, and collect signatures with an easy-to-use, mobile-optimized web tool.
+DocuSeal is an open source platform that provides secure and efficient digital document signing and processing. Create PDF forms to have them filled and signed online on any device with an easy-to-use, mobile-optimized web tool.
The embed assets could not be served from this WaboSign instance. Check that the host is reachable and that the embed script is being served from the same origin.
- Bulk send via CSV/XLSX import is not bundled with this open-source edition. Use the JSON API (POST /api/submissions with an array of submitters) to create submissions in bulk programmatically.
+ <%= t('unlock_with_docuseal_pro') %>
+
+ " data-turbo="false">
+ <%= t('learn_more') %>
+
diff --git a/config/application.rb b/config/application.rb
index 9de808b5..bf560893 100644
--- a/config/application.rb
+++ b/config/application.rb
@@ -25,6 +25,10 @@ module WaboSign
config.active_storage.draw_routes = ENV['MULTITENANT'] != 'true'
+ config.active_storage.analyzers = []
+
+ config.active_storage.variant_processor = :disabled
+
config.active_storage.content_types_to_serve_as_binary += %w[
application/javascript
text/javascript
diff --git a/config/brakeman.ignore b/config/brakeman.ignore
index 29372ac6..51b1f357 100644
--- a/config/brakeman.ignore
+++ b/config/brakeman.ignore
@@ -17,16 +17,12 @@
"note": "Safe SQL"
},
{
- "fingerprint": "dbbfb4a4ace7f43d8247cbb44afa8b628e005e6194ca5552e029b200f725a2d5",
- "message": "Unescaped find_by!(uuid: params[:id]) is not risky"
- },
- {
- "fingerprint": "4ce817efd946b7806f6d3da9a6923aa282e3ff992810353ed35d8f83a82cb7a0",
- "note": "HighlightCode returns escaped HTML for syntax-highlighted MCP token preview"
+ "fingerprint": "f3a20210cde7b9cb5944d53505fe80fea502308416143f4da9ec2422f6b7035c",
+ "note": "Safe Param"
},
{
- "fingerprint": "3f83dd553eb9ee8027ee629960e3e42d18b7e4143131d266899e916b7a6472c1",
- "note": "filter_path is validated with start_with?('/') — prevents javascript: and absolute-URL payloads; Brakeman tracks taint through the conditional assignment"
+ "fingerprint": "dbbfb4a4ace7f43d8247cbb44afa8b628e005e6194ca5552e029b200f725a2d5",
+ "message": "Unescaped find_by!(uuid: params[:id]) is not risky"
}
]
}
diff --git a/config/initializers/devise.rb b/config/initializers/devise.rb
index 00d40200..efa97448 100644
--- a/config/initializers/devise.rb
+++ b/config/initializers/devise.rb
@@ -334,23 +334,6 @@ Devise.setup do |config|
# changed. Defaults to true, so a user is signed in automatically after changing a password.
# config.sign_in_after_change_password = true
- # The :google_oauth2 strategy is always registered so its routes exist at
- # boot. Credentials are resolved per-request by the setup proc, which
- # consults Wabosign.google_sso_credentials (ENV takes priority, falling
- # back to the `google_sso_configs` EncryptedConfig record). This lets
- # admins manage Google SSO from /settings/sso without restarting the app.
- config.omniauth :google_oauth2, '', '',
- setup: lambda { |env|
- strategy = env['omniauth.strategy']
- creds = Wabosign.google_sso_credentials
- strategy.options[:client_id] = creds[:client_id].to_s
- strategy.options[:client_secret] = creds[:client_secret].to_s
- strategy.options[:scope] = 'email,profile'
- strategy.options[:prompt] = 'select_account'
- strategy.options[:access_type] = 'online'
- strategy.options[:hd] = creds[:allowed_domains].presence
- }
-
ActiveSupport.run_load_hooks(:devise_config, config)
end
# rubocop:enable Metrics/BlockLength
diff --git a/config/locales/i18n.yml b/config/locales/i18n.yml
index a36d497a..bcc99a63 100644
--- a/config/locales/i18n.yml
+++ b/config/locales/i18n.yml
@@ -86,8 +86,8 @@ en: &en
you_have_been_invited_to_account_name_product_name_please_sign_up_using_the_link_below_: 'You have been invited to %{account_name} %{product_name}. Please sign up using the link below:'
sent_using_product_name_in_testing_mode_html: 'Sent using %{product_name} in testing mode'
sent_using_product_name_free_document_signing_html: 'Sent using %{product_name} free document signing.'
- sent_with_wabosign_pro_html: 'Sent with WaboSign Pro'
- show_send_with_wabosign_pro_attribution_in_emails_html: Show "Sent with WaboSign Pro" attribution in emails
+ sent_with_docuseal_pro_html: 'Sent with WaboSign Pro'
+ show_send_with_docuseal_pro_attribution_in_emails_html: Show "Sent with WaboSign Pro" attribution in emails
sign_documents_with_trusted_certificate_provided_by_docu_seal_your_documents_and_data_are_never_shared_with_docu_seal_p_d_f_checksum_is_provided_to_generate_a_trusted_signature: Sign documents with trusted certificate provided by WaboSign. Your documents and data are never shared with WaboSign. PDF checksum is provided to generate a trusted signature.
you_have_been_invited_to_submit_the_name_form: 'You have been invited to submit the "%{name}" form.'
you_have_been_invited_to_sign_the_name: 'You have been invited to sign the "%{name}".'
@@ -190,7 +190,7 @@ en: &en
profile_details: Profile Details
sign_up_with_google: Sign up with Google
sign_up_with_microsoft: Sign up with Microsoft
- by_creating_an_account_you_agree_to_our_html: 'By creating an account, you agree to our Privacy Policy and Terms of Service.'
+ by_creating_an_account_you_agree_to_our_html: 'By creating an account, you agree to our Privacy Policy and Terms of Service.'
enter_email_to_continue: Enter email to continue
account: Account
preferences: Preferences
@@ -212,7 +212,7 @@ en: &en
combine_completed_documents_and_audit_log: Combine completed documents and Audit Log
salesforce_integration: Salesforce Integration
salesforce_has_been_connected: Salesforce has been connected.
- connect_salesforce_account_to_integrate_with_wabosign: Connect Salesforce account to integrate with WaboSign
+ connect_salesforce_account_to_integrate_with_docuseal: Connect Salesforce account to integrate with WaboSign
re_connect_salesforce: Re-connect Salesforce
connect_salesforce: Connect Salesforce
danger_zone: Danger Zone
@@ -241,13 +241,13 @@ en: &en
resetting_password: Resetting password
sign_in_with_name_account: 'Sign in with %{name} account'
two_factor_code_from_authenticator_app: Two-Factor Code from Authenticator App
- sign_up_in_wabosign_console_to_upgrade_on_premises_app_is_completely_standalone_console_is_used_only_to_manage_your_license: Sign up in WaboSign Console to upgrade. On-premises app is completely standalone, Console is used only to manage your license.
+ sign_up_in_docuseal_console_to_upgrade_on_premises_app_is_completely_standalone_console_is_used_only_to_manage_your_license: Sign up in WaboSign Console to upgrade. On-premises app is completely standalone, Console is used only to manage your license.
send_from_email: Send from Email
optional: optional
save: Save
saving: Saving
changes_have_been_saved: Changes have been saved.
- unlock_with_wabosign_pro: Unlock with WaboSign Pro
+ unlock_with_docuseal_pro: Unlock with WaboSign Pro
use_your_own_certificates_to_sign_and_verify_pdf_files: Use your own certificates to sign and verify PDF files.
upload_certificate: Upload Certificate
name: Name
@@ -291,6 +291,7 @@ en: &en
code_is_invalid: Code is invalid
2fa_has_been_removed: 2FA has been removed.
2fa_has_been_set_up_already: 2FA has been set up already.
+ developer_newsletters: Developer Newsletters
skip: Skip
email_notifications: Email Notifications
receive_notification_emails_on_completed_submission: Receive notification emails on completed submission
@@ -346,7 +347,7 @@ en: &en
password_has_been_changed: Password has been changed.
email_integration: Email Integration
send_via_connected_email: Send via connected email
- activate_with_wabosign_pro: Activate with WaboSign Pro
+ activate_with_docuseal_pro: Activate with WaboSign Pro
send_signature_request_to_your_recipients_directly_from_your_email: Send signature request to your recipients directly from your email
connect_gmail: Connect Gmail
re_connect_gmail: Re-connect Gmail
@@ -367,8 +368,6 @@ en: &en
sign_out: Sign out
page_number: 'Page %{number}'
powered_by: Powered by
- based_on: based on
- view_on_github: View on GitHub
qr_code: QR Code
print: Print
scan_the_qr_code_above_with_your_phone_camera_to_open_and_sign_this_document: Scan the QR code above with your phone camera to open and sign this document.
@@ -428,7 +427,7 @@ en: &en
upgrade_to_send_unlimited_signature_requests: Upgrade to send unlimited signature requests
add_without_sending: Add without sending
upgade_now: Upgrade Now
- send_signature_request_emails_without_limits_with_wabosign_pro: Send signature request emails without limits with WaboSign Pro
+ send_signature_request_emails_without_limits_with_docuseal_pro: Send signature request emails without limits with WaboSign Pro
count_emails_used: '%{count} emails used'
has_been_connected: has been connected
sms_not_configured: SMS not Configured
@@ -530,7 +529,7 @@ en: &en
new_user: New User
unarchive: Unarchive
last_session: Last session
- unlock_more_user_roles_with_wabosign_pro: Unlock more user roles with WaboSign Pro.
+ unlock_more_user_roles_with_docuseal_pro: Unlock more user roles with WaboSign Pro.
view_active: View Active
team_account: Team account
team_accounts: Team Accounts
@@ -659,6 +658,9 @@ en: &en
create_a_new_template_document_form_or_submit_the_existing_one_html: Create a new template document form or submit the existing one
send_email_copy_with_completed_documents_to_a_specified_bcc_address: Send email copy with completed documents to a specified BCC address.
re_send_email: Re-send Email
+ re_send_emails: Re-send Emails
+ are_you_sure_you_want_to_re_send_email_to_n_recipients: Are you sure you want to re-send the invitation email to %{count} recipients?
+ emails_have_been_sent_to_n_recipients: Emails have been sent to %{count} recipients.
send_email: Send Email
copy_share_link: Copy Share Link
copied_to_clipboard: Copied to Clipboard
@@ -754,25 +756,25 @@ en: &en
seamlessly_automate_your_document_signing_process_with_make_com: Seamlessly automate your document signing process with Make.com.
find_suitable_zapier_templates_to_automate_your_workflow: Find suitable Zapier templates to automate your workflow.
get_started: Get started
- click_here_to_learn_more_about_user_roles_and_permissions_html: 'Click here to learn more about user roles and permissions.'
+ click_here_to_learn_more_about_user_roles_and_permissions_html: 'Click here to learn more about user roles and permissions.'
count_10_signature_request_emails_sent_this_month_upgrade_to_pro_to_send_unlimited_signature_request_email: '%{count} / 10 signature request emails sent this month. Upgrade to Pro to send unlimited signature request emails.'
test_mode_emails_limit_will_be_reset_within_24_hours: Test mode emails limit will be reset within 24 hours.
- on_a_scale_of_1_to_10_how_satisfied_are_you_with_the_wabosign_product_: On a scale of 1 to 10, how satisfied are you with the WaboSign product?
+ on_a_scale_of_1_to_10_how_satisfied_are_you_with_the_docuseal_product_: On a scale of 1 to 10, how satisfied are you with the WaboSign product?
tell_us_more_about_your_experience: Tell us more about your experience
extremely_dissatisfied: Extremely Dissatisfied
extremely_satisfied: Extremely Satisfied
your_pro_plan_payment_is_overdue: Your Pro plan payment is overdue.
click_here_to_update_your_payment_details_and_clear_the_invoice_to_ensure_uninterrupted_service_html: Click here to update your payment details and clear the invoice to ensure uninterrupted service.
overdue_payment: Overdue Payment
- your_pro_plan_has_been_suspended_due_to_unpaid_invoices_you_can_update_your_payment_details_to_settle_the_invoice_and_continue_using_wabosign_or_cancel_your_subscription: Your Pro Plan has been suspended due to unpaid invoices. You can update your payment details to settle the invoice and continue using WaboSign or cancel your subscription.
+ your_pro_plan_has_been_suspended_due_to_unpaid_invoices_you_can_update_your_payment_details_to_settle_the_invoice_and_continue_using_docuseal_or_cancel_your_subscription: Your Pro Plan has been suspended due to unpaid invoices. You can update your payment details to settle the invoice and continue using WaboSign or cancel your subscription.
manage_subscription: Manage Subscription
submission_created_by_email_html: 'Submission created by %{email}'
submission_created_by_email_via_source_html: 'Submission created by %{email} via %{source}'
submission_created_via_source_html: 'Submission created via %{source}'
pro_user_seats_used: Pro user seats used
manage_plan: Manage plan
- this_submission_has_multiple_signers_which_prevents_the_use_of_a_sharing_link_html: This submission has multiple signers, which prevents the use of a sharing link as it's unclear which signer is responsible for specific fields. To resolve this, follow this guide to define the default signer details.
- welcome_to_wabosign: Welcome to WaboSign
+ this_submission_has_multiple_signers_which_prevents_the_use_of_a_sharing_link_html: This submission has multiple signers, which prevents the use of a sharing link as it's unclear which signer is responsible for specific fields. To resolve this, follow this guide to define the default signer details.
+ welcome_to_docuseal: Welcome to WaboSign
start_a_quick_tour_to_learn_how_to_create_and_send_your_first_document: Start a quick tour to learn how to create and send your first document
start_tour: Start Tour
name_a_z: Name A-Z
@@ -848,13 +850,13 @@ en: &en
use_otp_code_to_access_the_api_key_html: Use %{code} code to access the API key.
please_reply_to_this_email_if_you_dont_recognize_this_request: Please reply to this email if you don't recognize this request.
your_user_account_has_been_archived_contact_your_administrator_to_restore_access_to_your_account: Your user account has been archived. Contact your administrator to restore access to your account.
- your_email_could_not_be_reached_this_may_happen_if_there_was_a_typo_in_your_address_or_if_your_mailbox_is_not_available_please_contact_support_email_to_log_in: Your email could not be reached. This may happen if there was a typo in your address or if your mailbox is not available. Please contact wabosign@wabo.cc to log in.
+ your_email_could_not_be_reached_this_may_happen_if_there_was_a_typo_in_your_address_or_if_your_mailbox_is_not_available_please_contact_support_email_to_log_in: Your email could not be reached. This may happen if there was a typo in your address or if your mailbox is not available. Please contact support@wabosign.com to log in.
efficient_search_with_search_index: Efficient search with search index
reindex: Reindex
build_search_index: Build Search Index
require_two_factor_authentication_2fa_with_an_authenticator_app_e_g_google_authenticator_authy_all_users_signing_documents_must_pass_the_second_factor_verification_using_a_secure_code_in_addition_to_their_password: Require two-factor authentication (2FA) with an authenticator app (e.g., Google Authenticator, Authy). All users signing documents must pass the second factor verification using a secure code in addition to their password.
- add_a_unique_signature_id_and_timestamp_to_each_signature_for_audit_and_traceability_purposes_along_with_the_timestamp_part_of_wabosigns_21_cfr_part_11_compliance_settings: "Add a unique Signature ID and timestamp to each signature for audit and traceability purposes along with the timestamp. Part of WaboSign's 21 CFR Part 11 compliance settings."
- require_signer_to_provide_a_reason_for_signing_before_completing_their_signature_e_g_approvals_certifications_part_of_wabosigns_21_cfr_part_11_compliance_settings: "Require signers to provide a reason for signing before completing their signature (e.g., approvals, certifications). Part of WaboSign's 21 CFR Part 11 compliance settings."
+ add_a_unique_signature_id_and_timestamp_to_each_signature_for_audit_and_traceability_purposes_along_with_the_timestamp_part_of_docuseals_21_cfr_part_11_compliance_settings: "Add a unique Signature ID and timestamp to each signature for audit and traceability purposes along with the timestamp. Part of WaboSign's 21 CFR Part 11 compliance settings."
+ require_signer_to_provide_a_reason_for_signing_before_completing_their_signature_e_g_approvals_certifications_part_of_docuseals_21_cfr_part_11_compliance_settings: "Require signers to provide a reason for signing before completing their signature (e.g., approvals, certifications). Part of WaboSign's 21 CFR Part 11 compliance settings."
allow_signers_to_create_signatures_by_typing_their_name_instead_of_drawing_or_uploading_one: Allow signers to create signatures by typing their name instead of drawing or uploading one.
allow_signers_to_resubmit_forms_after_completion_useful_when_corrections_or_multiple_submissions_are_needed: Allow signers to resubmit forms after completion, useful when corrections or multiple submissions are needed.
allow_recipients_to_decline_signing_a_document_the_decline_reason_notification_will_be_sent_to_the_signature_requester: Allow recipients to decline signing a document. The decline reason notification will be sent to the signature requester.
@@ -929,12 +931,15 @@ en: &en
mcp_token_has_been_removed: MCP token has been removed.
enable_mcp_server: Enable MCP server
all_existing_mcp_connections_will_be_stopped_immediately_when_this_setting_is_disabled: All existing MCP connections will be stopped immediately when this setting is disabled.
- connect_to_product_name_mcp: Connect to %{product_name} MCP
+ connect_to_docuseal_mcp: Connect to WaboSign MCP
add_the_following_to_your_mcp_client_configuration: Add the following to your MCP client configuration
works_with_claude_desktop_cursor_windsurf_vs_code_and_any_mcp_compatible_client: Works with Claude Desktop, Cursor, Windsurf, VS Code, and any MCP-compatible client.
your_email_address_has_been_changed: Your email address has been changed
the_email_address_for_your_account_has_been_changed_to_new_email: The email address for your account has been changed to %{new_email}.
if_you_did_not_make_this_change_please_contact_us_by_replying_to_this_email: If you did not make this change, please contact us by replying to this email.
+ open_file_from: 'Open file from'
+ cancel: Cancel
+ open: Open
devise:
confirmations:
confirmed: Your email address has been successfully confirmed.
@@ -1029,7 +1034,7 @@ en: &en
settings: 'Settings'
settings_account_description: 'With comprehensive account settings, you can customize the eSigning experience and invite more users.'
support: 'Support'
- support_description: 'You can use our self-service AI assistant or email us at wabosign@wabo.cc if you have any questions.'
+ support_description: 'You can use our self-service AI assistant or email us at support@wabosign.com if you have any questions.'
settings_template_description: 'Use this button to access your account settings page.'
doorkeeper:
scopes:
@@ -1137,8 +1142,8 @@ es: &es
you_have_been_invited_to_account_name_product_name_please_sign_up_using_the_link_below_: 'Has sido invitado a %{account_name} %{product_name}. Por favor, regístrate usando el enlace a continuación:'
sent_using_product_name_in_testing_mode_html: 'Enviado usando %{product_name} en Modo de Prueba'
sent_using_product_name_free_document_signing_html: 'Enviado usando la firma de documentos gratuita de %{product_name}.'
- sent_with_wabosign_pro_html: 'Enviado con WaboSign Pro'
- show_send_with_wabosign_pro_attribution_in_emails_html: Mostrar el mensaje "Enviado con WaboSign Pro" en los correos electrónicos
+ sent_with_docuseal_pro_html: 'Enviado con WaboSign Pro'
+ show_send_with_docuseal_pro_attribution_in_emails_html: Mostrar el mensaje "Enviado con WaboSign Pro" en los correos electrónicos
sign_documents_with_trusted_certificate_provided_by_docu_seal_your_documents_and_data_are_never_shared_with_docu_seal_p_d_f_checksum_is_provided_to_generate_a_trusted_signature: Firme documentos con un certificado de confianza proporcionado por WaboSign. Sus documentos y datos nunca se comparten con WaboSign. Se proporciona un checksum de PDF para generar una firma de confianza.
hi_there: Hola
thanks: Gracias
@@ -1241,7 +1246,7 @@ es: &es
profile_details: Detalles del perfil
sign_up_with_google: Registrarse con Google
sign_up_with_microsoft: Registrarse con Microsoft
- by_creating_an_account_you_agree_to_our_html: 'Al crear una cuenta, aceptas nuestra Política de Privacidad y Términos de Servicio.'
+ by_creating_an_account_you_agree_to_our_html: 'Al crear una cuenta, aceptas nuestra Política de Privacidad y Términos de Servicio.'
enter_email_to_continue: Ingresa tu correo electrónico para continuar
account: Cuenta
preferences: Preferencias
@@ -1263,7 +1268,7 @@ es: &es
combine_completed_documents_and_audit_log: Combinar documentos completados y Registro de Auditoría
salesforce_integration: Integración con Salesforce
salesforce_has_been_connected: Salesforce ha sido conectado.
- connect_salesforce_account_to_integrate_with_wabosign: Conectar cuenta de Salesforce para integrar con WaboSign
+ connect_salesforce_account_to_integrate_with_docuseal: Conectar cuenta de Salesforce para integrar con WaboSign
re_connect_salesforce: Volver a conectar Salesforce
connect_salesforce: Conectar Salesforce
danger_zone: Zona de peligro
@@ -1292,13 +1297,13 @@ es: &es
resetting_password: Restableciendo contraseña
sign_in_with_name_account: 'Iniciar sesión con la cuenta de %{name}'
two_factor_code_from_authenticator_app: Código de dos factores de la aplicación Authenticator
- sign_up_in_wabosign_console_to_upgrade_on_premises_app_is_completely_standalone_console_is_used_only_to_manage_your_license: Regístrate en la consola de WaboSign para actualizar. La aplicación local es completamente independiente, la consola solo se utiliza para gestionar tu licencia.
+ sign_up_in_docuseal_console_to_upgrade_on_premises_app_is_completely_standalone_console_is_used_only_to_manage_your_license: Regístrate en la consola de WaboSign para actualizar. La aplicación local es completamente independiente, la consola solo se utiliza para gestionar tu licencia.
send_from_email: Enviar desde correo electrónico
optional: opcional
save: Guardar
saving: Guardando
changes_have_been_saved: Los cambios han sido guardados.
- unlock_with_wabosign_pro: Desbloquear con WaboSign Pro
+ unlock_with_docuseal_pro: Desbloquear con WaboSign Pro
use_your_own_certificates_to_sign_and_verify_pdf_files: Usa tus propios certificados para firmar y verificar archivos PDF.
upload_certificate: Subir certificado
name: Nombre
@@ -1342,6 +1347,7 @@ es: &es
code_is_invalid: El código no es válido
2fa_has_been_removed: 2FA ha sido eliminado.
2fa_has_been_set_up_already: 2FA ya ha sido configurado.
+ developer_newsletters: Boletines para desarrolladores
skip: Omitir
email_notifications: Notificaciones por correo electrónico
receive_notification_emails_on_completed_submission: Recibir notificaciones por correo electrónico sobre formularios completados
@@ -1397,7 +1403,7 @@ es: &es
password_has_been_changed: La contraseña ha sido cambiada.
email_integration: Integración de correo electrónico
send_via_connected_email: Enviar vía correo electrónico conectado
- activate_with_wabosign_pro: Activar con WaboSign Pro
+ activate_with_docuseal_pro: Activar con WaboSign Pro
send_signature_request_to_your_recipients_directly_from_your_email: Envía la solicitud de firma a tus destinatarios directamente desde tu correo electrónico
connect_gmail: Conectar Gmail
re_connect_gmail: Volver a conectar Gmail
@@ -1418,8 +1424,6 @@ es: &es
sign_out: Cerrar sesión
page_number: 'Página %{number}'
powered_by: Desarrollado por
- based_on: based on
- view_on_github: View on GitHub
qr_code: Código QR
print: Imprimir
scan_the_qr_code_above_with_your_phone_camera_to_open_and_sign_this_document: Escanea el código QR de arriba con la cámara de tu teléfono para abrir y firmar este documento.
@@ -1466,7 +1470,7 @@ es: &es
type_emails_here: Escribe correos electrónicos aquí
or_embed_on_your_website: O integra en tu sitio web
phone: Teléfono
- send_emails: Enviar correos electrónicos
+ send_emails: Enviar emails
edit_message: Editar mensaje
smtp_not_configured: SMTP no configurado
configure_smtp_settings_in_order_to_send_emails_: 'Configura los ajustes de SMTP para enviar correos electrónicos:'
@@ -1479,7 +1483,7 @@ es: &es
upgrade_to_send_unlimited_signature_requests: Actualiza para enviar solicitudes de firma ilimitadas
add_without_sending: Agregar sin enviar
upgade_now: Actualizar ahora
- send_signature_request_emails_without_limits_with_wabosign_pro: Envía solicitudes de firma sin límites con WaboSign Pro
+ send_signature_request_emails_without_limits_with_docuseal_pro: Envía solicitudes de firma sin límites con WaboSign Pro
count_emails_used: '%{count} correos electrónicos utilizados'
has_been_connected: ha sido conectado
sms_not_configured: SMS no configurado
@@ -1581,7 +1585,7 @@ es: &es
new_user: Nuevo usuario
unarchive: Desarchivar
last_session: Última sesión
- unlock_more_user_roles_with_wabosign_pro: Desbloquea más roles de usuario con WaboSign Pro.
+ unlock_more_user_roles_with_docuseal_pro: Desbloquea más roles de usuario con WaboSign Pro.
view_active: Ver activos
team_account: Cuenta de equipo
team_accounts: Cuentas de equipo
@@ -1709,8 +1713,11 @@ es: &es
sign_in_person: Firma en persona
create_a_new_template_document_form_or_submit_the_existing_one_html: Crear una nueva plantilla de documento o enviar el existente
send_email_copy_with_completed_documents_to_a_specified_bcc_address: Enviar una copia del correo electrónico con los documentos completados a una dirección BCC especificada.
- re_send_email: Reenviar correo electrónico
- send_email: Enviar correo electrónico
+ re_send_email: Reenviar email
+ re_send_emails: Reenviar emails
+ are_you_sure_you_want_to_re_send_email_to_n_recipients: ¿Estás seguro de que quieres reenviar el email de invitación a %{count} destinatarios?
+ emails_have_been_sent_to_n_recipients: Los emails han sido enviados a %{count} destinatarios.
+ send_email: Enviar email
copy_share_link: Copiar enlace de compartir
copied_to_clipboard: Copiado al portapapeles
link: Enlace
@@ -1802,25 +1809,25 @@ es: &es
seamlessly_automate_your_document_signing_process_with_make_com: Automatiza sin problemas tu proceso de firma de documentos con Make.com.
find_suitable_zapier_templates_to_automate_your_workflow: Encuentra plantillas de Zapier adecuadas para automatizar tu flujo de trabajo.
get_started: Comenzar
- click_here_to_learn_more_about_user_roles_and_permissions_html: 'Haz clic aquí para obtener más información sobre los roles y permisos de usuario.'
+ click_here_to_learn_more_about_user_roles_and_permissions_html: 'Haz clic aquí para obtener más información sobre los roles y permisos de usuario.'
count_10_signature_request_emails_sent_this_month_upgrade_to_pro_to_send_unlimited_signature_request_email: '%{count} / 10 correos electrónicos de solicitud de firma enviados este mes. Mejora a Pro para enviar solicitudes de firma ilimitadas.'
test_mode_emails_limit_will_be_reset_within_24_hours: El límite de correos electrónicos en modo de prueba se restablecerá en 24 horas.
- on_a_scale_of_1_to_10_how_satisfied_are_you_with_the_wabosign_product_: 'En una escala del 1 al 10, ¿qué tan satisfecho estás con el producto WaboSign?'
+ on_a_scale_of_1_to_10_how_satisfied_are_you_with_the_docuseal_product_: 'En una escala del 1 al 10, ¿qué tan satisfecho estás con el producto WaboSign?'
tell_us_more_about_your_experience: Cuéntanos más sobre tu experiencia
extremely_dissatisfied: Extremadamente insatisfecho
extremely_satisfied: Extremadamente satisfecho
your_pro_plan_payment_is_overdue: El pago de tu plan Pro está atrasado.
click_here_to_update_your_payment_details_and_clear_the_invoice_to_ensure_uninterrupted_service_html: 'Haz clic aquí para actualizar tus datos de pago y liquidar la factura para garantizar un servicio ininterrumpido.'
overdue_payment: Pago Atrasado
- your_pro_plan_has_been_suspended_due_to_unpaid_invoices_you_can_update_your_payment_details_to_settle_the_invoice_and_continue_using_wabosign_or_cancel_your_subscription: Tu plan Pro ha sido suspendido debido a facturas impagas. Puedes actualizar tus datos de pago para liquidar la factura y seguir usando WaboSign o cancelar tu suscripción.
+ your_pro_plan_has_been_suspended_due_to_unpaid_invoices_you_can_update_your_payment_details_to_settle_the_invoice_and_continue_using_docuseal_or_cancel_your_subscription: Tu plan Pro ha sido suspendido debido a facturas impagas. Puedes actualizar tus datos de pago para liquidar la factura y seguir usando WaboSign o cancelar tu suscripción.
manage_subscription: Gestionar Suscripción
submission_created_by_email_html: 'Envío creado por %{email}'
submission_created_by_email_via_source_html: 'Envío creado por %{email} a través de %{source}'
submission_created_via_source_html: 'Envío creado a través de %{source}'
pro_user_seats_used: Plazas de usuario Pro en uso
manage_plan: Gestionar plan
- this_submission_has_multiple_signers_which_prevents_the_use_of_a_sharing_link_html: 'Este envío tiene múltiples firmantes, lo que impide el uso de un enlace para compartir, ya que no está claro qué firmante es responsable de los campos específicos. Para resolver esto, sigue esta guía para definir los detalles predeterminados del firmante.'
- welcome_to_wabosign: Bienvenido a WaboSign
+ this_submission_has_multiple_signers_which_prevents_the_use_of_a_sharing_link_html: 'Este envío tiene múltiples firmantes, lo que impide el uso de un enlace para compartir, ya que no está claro qué firmante es responsable de los campos específicos. Para resolver esto, sigue esta guía para definir los detalles predeterminados del firmante.'
+ welcome_to_docuseal: Bienvenido a WaboSign
start_a_quick_tour_to_learn_how_to_create_and_send_your_first_document: Inicia una guía rápida para aprender a crear y enviar tu primer documento.
start_tour: Iniciar guía
name_a_z: Nombre A-Z
@@ -1896,13 +1903,13 @@ es: &es
use_otp_code_to_access_the_api_key_html: Usa el código %{code} para acceder a la clave API.
please_reply_to_this_email_if_you_dont_recognize_this_request: Responde a este correo si no reconoces esta solicitud.
your_user_account_has_been_archived_contact_your_administrator_to_restore_access_to_your_account: Tu cuenta de usuario ha sido archivada. Contacta a tu administrador para restaurar el acceso a tu cuenta.
- your_email_could_not_be_reached_this_may_happen_if_there_was_a_typo_in_your_address_or_if_your_mailbox_is_not_available_please_contact_support_email_to_log_in: No se pudo acceder a tu correo electrónico. Esto puede ocurrir si hubo un error tipográfico en tu dirección o si tu buzón no está disponible. Por favor, contacta a wabosign@wabo.cc para iniciar sesión.
+ your_email_could_not_be_reached_this_may_happen_if_there_was_a_typo_in_your_address_or_if_your_mailbox_is_not_available_please_contact_support_email_to_log_in: No se pudo acceder a tu correo electrónico. Esto puede ocurrir si hubo un error tipográfico en tu dirección o si tu buzón no está disponible. Por favor, contacta a support@wabosign.com para iniciar sesión.
efficient_search_with_search_index: Búsqueda eficiente con índice de búsqueda
reindex: Reindexar
build_search_index: Construir índice de búsqueda
require_two_factor_authentication_2fa_with_an_authenticator_app_e_g_google_authenticator_authy_all_users_signing_documents_must_pass_the_second_factor_verification_using_a_secure_code_in_addition_to_their_password: Requerir autenticación de dos factores (2FA) con una aplicación de autenticación (p. ej., Google Authenticator, Authy). Todos los usuarios que firman documentos deben pasar la verificación del segundo factor usando un código seguro además de su contraseña.
- add_a_unique_signature_id_and_timestamp_to_each_signature_for_audit_and_traceability_purposes_along_with_the_timestamp_part_of_wabosigns_21_cfr_part_11_compliance_settings: Agregar un ID de firma único y una marca de tiempo a cada firma para fines de auditoría y trazabilidad junto con la marca de tiempo. Parte de la configuración de cumplimiento 21 CFR Parte 11 de WaboSign.
- require_signer_to_provide_a_reason_for_signing_before_completing_their_signature_e_g_approvals_certifications_part_of_wabosigns_21_cfr_part_11_compliance_settings: Requerir que los firmantes proporcionen un motivo para firmar antes de completar su firma (p. ej., aprobaciones, certificaciones). Parte de la configuración de cumplimiento 21 CFR Parte 11 de WaboSign.
+ add_a_unique_signature_id_and_timestamp_to_each_signature_for_audit_and_traceability_purposes_along_with_the_timestamp_part_of_docuseals_21_cfr_part_11_compliance_settings: Agregar un ID de firma único y una marca de tiempo a cada firma para fines de auditoría y trazabilidad junto con la marca de tiempo. Parte de la configuración de cumplimiento 21 CFR Parte 11 de WaboSign.
+ require_signer_to_provide_a_reason_for_signing_before_completing_their_signature_e_g_approvals_certifications_part_of_docuseals_21_cfr_part_11_compliance_settings: Requerir que los firmantes proporcionen un motivo para firmar antes de completar su firma (p. ej., aprobaciones, certificaciones). Parte de la configuración de cumplimiento 21 CFR Parte 11 de WaboSign.
allow_signers_to_create_signatures_by_typing_their_name_instead_of_drawing_or_uploading_one: Permitir que los firmantes creen firmas escribiendo su nombre en lugar de dibujar o subir una.
allow_signers_to_resubmit_forms_after_completion_useful_when_corrections_or_multiple_submissions_are_needed: Permitir que los firmantes vuelvan a enviar formularios después de completarlos, útil cuando se necesitan correcciones o múltiples envíos.
allow_recipients_to_decline_signing_a_document_the_decline_reason_notification_will_be_sent_to_the_signature_requester: Permitir que los destinatarios rechacen firmar un documento. La notificación del motivo del rechazo se enviará al solicitante de la firma.
@@ -1977,12 +1984,15 @@ es: &es
mcp_token_has_been_removed: El token MCP ha sido eliminado.
enable_mcp_server: Habilitar servidor MCP
all_existing_mcp_connections_will_be_stopped_immediately_when_this_setting_is_disabled: Todas las conexiones MCP existentes se detendrán inmediatamente cuando se desactive esta configuración.
- connect_to_product_name_mcp: Conectar a %{product_name} MCP
+ connect_to_docuseal_mcp: Conectar a WaboSign MCP
add_the_following_to_your_mcp_client_configuration: Agregue lo siguiente a la configuración de su cliente MCP
works_with_claude_desktop_cursor_windsurf_vs_code_and_any_mcp_compatible_client: Funciona con Claude Desktop, Cursor, Windsurf, VS Code y cualquier cliente compatible con MCP.
your_email_address_has_been_changed: Tu dirección de correo electrónico ha sido cambiada
the_email_address_for_your_account_has_been_changed_to_new_email: La dirección de correo electrónico de tu cuenta ha sido cambiada a %{new_email}.
if_you_did_not_make_this_change_please_contact_us_by_replying_to_this_email: Si no realizaste este cambio, contáctanos respondiendo a este correo electrónico.
+ open_file_from: 'Abrir archivo desde'
+ cancel: Cancelar
+ open: Abrir
devise:
confirmations:
confirmed: Tu dirección de correo electrónico ha sido confirmada correctamente.
@@ -2077,7 +2087,7 @@ es: &es
settings: 'Configuración'
settings_account_description: 'Con una configuración completa de la cuenta, puedes personalizar la experiencia de firma y añadir más usuarios.'
support: 'Soporte'
- support_description: 'Puedes usar nuestro asistente de IA o escribirnos a wabosign@wabo.cc si tienes preguntas.'
+ support_description: 'Puedes usar nuestro asistente de IA o escribirnos a support@wabosign.com si tienes preguntas.'
settings_template_description: 'Usa este botón para acceder a la configuración de tu cuenta.'
doorkeeper:
scopes:
@@ -2185,8 +2195,8 @@ it: &it
you_have_been_invited_to_account_name_product_name_please_sign_up_using_the_link_below_: 'Sei stato invitato a %{account_name} %{product_name}. Registrati utilizzando il link qui sotto:'
sent_using_product_name_in_testing_mode_html: 'Inviato utilizzando %{product_name} in Modalità di Test'
sent_using_product_name_free_document_signing_html: 'Inviato utilizzando la firma di documenti gratuita di %{product_name}.'
- sent_with_wabosign_pro_html: 'Inviato con WaboSign Pro'
- show_send_with_wabosign_pro_attribution_in_emails_html: Mostra la dicitura "Inviato con WaboSign Pro" nelle email
+ sent_with_docuseal_pro_html: 'Inviato con WaboSign Pro'
+ show_send_with_docuseal_pro_attribution_in_emails_html: Mostra la dicitura "Inviato con WaboSign Pro" nelle email
sign_documents_with_trusted_certificate_provided_by_docu_seal_your_documents_and_data_are_never_shared_with_docu_seal_p_d_f_checksum_is_provided_to_generate_a_trusted_signature: "Firma documenti con un certificato di fiducia fornito da WaboSign. I tuoi documenti e i tuoi dati non vengono mai condivisi con WaboSign. Il checksum PDF è fornito per generare una firma di fiducia."
hi_there: Ciao
thanks: Grazie
@@ -2289,7 +2299,7 @@ it: &it
profile_details: Dettagli del profilo
sign_up_with_google: Registrati con Google
sign_up_with_microsoft: Registrati con Microsoft
- by_creating_an_account_you_agree_to_our_html: 'Creando un account, accetti la nostra Privacy Policy e i nostri Termini di servizio.'
+ by_creating_an_account_you_agree_to_our_html: 'Creando un account, accetti la nostra Privacy Policy e i nostri Termini di servizio.'
enter_email_to_continue: "Inserisci l'email per continuare"
account: Account
preferences: Preferenze
@@ -2311,7 +2321,7 @@ it: &it
combine_completed_documents_and_audit_log: Combinare i documenti completati e il Registro di Audit
salesforce_integration: Integrazione con Salesforce
salesforce_has_been_connected: Salesforce è stato connesso.
- connect_salesforce_account_to_integrate_with_wabosign: "Connetti l'account Salesforce per integrare con WaboSign"
+ connect_salesforce_account_to_integrate_with_docuseal: "Connetti l'account Salesforce per integrare con WaboSign"
re_connect_salesforce: Riconnetti Salesforce
connect_salesforce: Connetti Salesforce
danger_zone: Zona di pericolo
@@ -2340,13 +2350,13 @@ it: &it
resetting_password: Reimpostazione password in corso
sign_in_with_name_account: "Accedi con l'account %{name}"
two_factor_code_from_authenticator_app: "Codice a due fattori dall'app Authenticator"
- sign_up_in_wabosign_console_to_upgrade_on_premises_app_is_completely_standalone_console_is_used_only_to_manage_your_license: "Registrati nella console di WaboSign per aggiornare. L'applicazione on-premise è completamente autonoma, la console viene utilizzata solo per gestire la tua licenza."
+ sign_up_in_docuseal_console_to_upgrade_on_premises_app_is_completely_standalone_console_is_used_only_to_manage_your_license: "Registrati nella console di WaboSign per aggiornare. L'applicazione on-premise è completamente autonoma, la console viene utilizzata solo per gestire la tua licenza."
send_from_email: Invia da Email
optional: opzionale
save: Salva
saving: Salvataggio in corso
changes_have_been_saved: Le modifiche sono state salvate.
- unlock_with_wabosign_pro: Sblocca con WaboSign Pro
+ unlock_with_docuseal_pro: Sblocca con WaboSign Pro
use_your_own_certificates_to_sign_and_verify_pdf_files: Usa i tuoi certificati per firmare e verificare i file PDF.
upload_certificate: Carica certificato
name: Nome
@@ -2390,6 +2400,7 @@ it: &it
code_is_invalid: Il codice non è valido
2fa_has_been_removed: 2FA è stata rimossa.
2fa_has_been_set_up_already: 2FA è già stata configurata.
+ developer_newsletters: Newsletter per sviluppatori
skip: Salta
email_notifications: Notifiche email
receive_notification_emails_on_completed_submission: Ricevi notifiche email su moduli completati
@@ -2445,7 +2456,7 @@ it: &it
password_has_been_changed: La password è stata cambiata.
email_integration: Integrazione email
send_via_connected_email: Invia tramite email connessa
- activate_with_wabosign_pro: Attiva con WaboSign Pro
+ activate_with_docuseal_pro: Attiva con WaboSign Pro
send_signature_request_to_your_recipients_directly_from_your_email: Invia la richiesta di firma ai tuoi destinatari direttamente dalla tua email
connect_gmail: Connetti Gmail
re_connect_gmail: Riconnetti Gmail
@@ -2466,8 +2477,6 @@ it: &it
sign_out: Esci
page_number: 'Pagina %{number}'
powered_by: Fornito da
- based_on: based on
- view_on_github: View on GitHub
qr_code: Codice QR
print: Stampa
scan_the_qr_code_above_with_your_phone_camera_to_open_and_sign_this_document: Scansiona il codice QR qui sopra con la fotocamera del tuo telefono per aprire e firmare questo documento.
@@ -2527,7 +2536,7 @@ it: &it
upgrade_to_send_unlimited_signature_requests: Aggiorna per inviare richieste di firma illimitate
add_without_sending: Aggiungi senza inviare
upgade_now: Aggiorna ora
- send_signature_request_emails_without_limits_with_wabosign_pro: Invia email di richiesta di firma senza limiti con WaboSign Pro
+ send_signature_request_emails_without_limits_with_docuseal_pro: Invia email di richiesta di firma senza limiti con WaboSign Pro
count_emails_used: '%{count} email utilizzate'
has_been_connected: è stato connesso
sms_not_configured: SMS non configurato
@@ -2629,7 +2638,7 @@ it: &it
new_user: Nuovo utente
unarchive: Disarchivia
last_session: Ultima sessione
- unlock_more_user_roles_with_wabosign_pro: Sblocca più ruoli utente con WaboSign Pro.
+ unlock_more_user_roles_with_docuseal_pro: Sblocca più ruoli utente con WaboSign Pro.
view_active: Visualizza attivi
team_account: Account di squadra
team_accounts: Account di squadra
@@ -2757,7 +2766,10 @@ it: &it
sign_in_person: Firma di persona
create_a_new_template_document_form_or_submit_the_existing_one_html: Crea un nuovo modello di documento o invia quello esistente
send_email_copy_with_completed_documents_to_a_specified_bcc_address: Invia una copia dell'email con i documenti completati a un indirizzo BCC specificato.
- re_send_email: Invia di nuovo l'email
+ re_send_email: Reinvia email
+ re_send_emails: Reinvia le email
+ are_you_sure_you_want_to_re_send_email_to_n_recipients: Sei sicuro di voler inviare di nuovo l'email di invito a %{count} destinatari?
+ emails_have_been_sent_to_n_recipients: Le email sono state inviate a %{count} destinatari.
send_email: Invia email
copy_share_link: Copia link di condivisione
copied_to_clipboard: Copiato negli appunti
@@ -2850,25 +2862,25 @@ it: &it
seamlessly_automate_your_document_signing_process_with_make_com: Automatizza senza problemi il tuo processo di firma dei documenti con Make.com.
find_suitable_zapier_templates_to_automate_your_workflow: Trova modelli Zapier adatti per automatizzare il tuo flusso di lavoro.
get_started: Inizia
- click_here_to_learn_more_about_user_roles_and_permissions_html: 'Fai clic qui per saperne di più sui ruoli e le autorizzazioni degli utenti.'
+ click_here_to_learn_more_about_user_roles_and_permissions_html: 'Fai clic qui per saperne di più sui ruoli e le autorizzazioni degli utenti.'
count_10_signature_request_emails_sent_this_month_upgrade_to_pro_to_send_unlimited_signature_request_email: '%{count} / 10 e-mail di richiesta di firma inviate questo mese. Passa a Pro per inviare richieste di firma illimitate.'
test_mode_emails_limit_will_be_reset_within_24_hours: Il limite di e-mail in modalità di test verrà ripristinato entro 24 ore.
- on_a_scale_of_1_to_10_how_satisfied_are_you_with_the_wabosign_product_: 'Su una scala da 1 a 10, quanto sei soddisfatto del prodotto WaboSign?'
+ on_a_scale_of_1_to_10_how_satisfied_are_you_with_the_docuseal_product_: 'Su una scala da 1 a 10, quanto sei soddisfatto del prodotto WaboSign?'
tell_us_more_about_your_experience: Raccontaci di più sulla tua esperienza
extremely_dissatisfied: Estremamente insoddisfatto
extremely_satisfied: Estremamente soddisfatto
your_pro_plan_payment_is_overdue: Il pagamento del tuo piano Pro è in ritardo.
click_here_to_update_your_payment_details_and_clear_the_invoice_to_ensure_uninterrupted_service_html: 'Fai clic qui per aggiornare i tuoi dati di pagamento e saldare la fattura per garantire un servizio ininterrotto.'
overdue_payment: Pagamento Scaduto
- your_pro_plan_has_been_suspended_due_to_unpaid_invoices_you_can_update_your_payment_details_to_settle_the_invoice_and_continue_using_wabosign_or_cancel_your_subscription: Il tuo piano Pro è stato sospeso a causa di fatture non pagate. Puoi aggiornare i tuoi dati di pagamento per saldare la fattura e continuare a utilizzare WaboSign o annullare l'abbonamento.
+ your_pro_plan_has_been_suspended_due_to_unpaid_invoices_you_can_update_your_payment_details_to_settle_the_invoice_and_continue_using_docuseal_or_cancel_your_subscription: Il tuo piano Pro è stato sospeso a causa di fatture non pagate. Puoi aggiornare i tuoi dati di pagamento per saldare la fattura e continuare a utilizzare WaboSign o annullare l'abbonamento.
manage_subscription: Gestisci Abbonamento
submission_created_by_email_html: 'Invio creato da %{email}'
submission_created_by_email_via_source_html: 'Invio creato da %{email} tramite %{source}'
submission_created_via_source_html: 'Invio creato tramite %{source}'
pro_user_seats_used: Posti utente Pro in uso
manage_plan: Gestisci piano
- this_submission_has_multiple_signers_which_prevents_the_use_of_a_sharing_link_html: "Questa sottomissione ha più firmatari, il che impedisce l'uso di un link di condivisione poiché non è chiaro quale firmatario sia responsabile di specifici campi. Per risolvere questo problema, segui questa guida per definire i dettagli predefiniti del firmatario."
- welcome_to_wabosign: Benvenuto in WaboSign
+ this_submission_has_multiple_signers_which_prevents_the_use_of_a_sharing_link_html: "Questa sottomissione ha più firmatari, il che impedisce l'uso di un link di condivisione poiché non è chiaro quale firmatario sia responsabile di specifici campi. Per risolvere questo problema, segui questa guida per definire i dettagli predefiniti del firmatario."
+ welcome_to_docuseal: Benvenuto in WaboSign
start_a_quick_tour_to_learn_how_to_create_and_send_your_first_document: Inizia un tour rapido per imparare a creare e inviare il tuo primo documento.
start_tour: Inizia il tour
name_a_z: Nome A-Z
@@ -2944,13 +2956,13 @@ it: &it
use_otp_code_to_access_the_api_key_html: Usa il codice %{code} per accedere alla chiave API.
please_reply_to_this_email_if_you_dont_recognize_this_request: Rispondi a questa email se non riconosci questa richiesta.
your_user_account_has_been_archived_contact_your_administrator_to_restore_access_to_your_account: Il tuo account utente è stato archiviato. Contatta il tuo amministratore per ripristinare l'accesso al tuo account.
- your_email_could_not_be_reached_this_may_happen_if_there_was_a_typo_in_your_address_or_if_your_mailbox_is_not_available_please_contact_support_email_to_log_in: Non è stato possibile raggiungere la tua email. Questo può accadere se c'è stato un errore di digitazione nell'indirizzo o se la tua casella di posta non è disponibile. Contatta wabosign@wabo.cc per accedere.
+ your_email_could_not_be_reached_this_may_happen_if_there_was_a_typo_in_your_address_or_if_your_mailbox_is_not_available_please_contact_support_email_to_log_in: Non è stato possibile raggiungere la tua email. Questo può accadere se c'è stato un errore di digitazione nell'indirizzo o se la tua casella di posta non è disponibile. Contatta support@wabosign.com per accedere.
efficient_search_with_search_index: Ricerca efficiente con indice di ricerca
reindex: Reindicizza
build_search_index: Crea indice di ricerca
require_two_factor_authentication_2fa_with_an_authenticator_app_e_g_google_authenticator_authy_all_users_signing_documents_must_pass_the_second_factor_verification_using_a_secure_code_in_addition_to_their_password: "Richiedere l'autenticazione a due fattori (2FA) con un'app di autenticazione (es. Google Authenticator, Authy). Tutti gli utenti che firmano documenti devono superare la verifica del secondo fattore utilizzando un codice sicuro oltre alla password."
- add_a_unique_signature_id_and_timestamp_to_each_signature_for_audit_and_traceability_purposes_along_with_the_timestamp_part_of_wabosigns_21_cfr_part_11_compliance_settings: Aggiungere un ID firma univoco e una marca temporale a ogni firma per scopi di audit e tracciabilità insieme alla marca temporale. Parte delle impostazioni di conformità 21 CFR Parte 11 di WaboSign.
- require_signer_to_provide_a_reason_for_signing_before_completing_their_signature_e_g_approvals_certifications_part_of_wabosigns_21_cfr_part_11_compliance_settings: Richiedere ai firmatari di fornire una motivazione prima di completare la firma (es. approvazioni, certificazioni). Parte delle impostazioni di conformità 21 CFR Parte 11 di WaboSign.
+ add_a_unique_signature_id_and_timestamp_to_each_signature_for_audit_and_traceability_purposes_along_with_the_timestamp_part_of_docuseals_21_cfr_part_11_compliance_settings: Aggiungere un ID firma univoco e una marca temporale a ogni firma per scopi di audit e tracciabilità insieme alla marca temporale. Parte delle impostazioni di conformità 21 CFR Parte 11 di WaboSign.
+ require_signer_to_provide_a_reason_for_signing_before_completing_their_signature_e_g_approvals_certifications_part_of_docuseals_21_cfr_part_11_compliance_settings: Richiedere ai firmatari di fornire una motivazione prima di completare la firma (es. approvazioni, certificazioni). Parte delle impostazioni di conformità 21 CFR Parte 11 di WaboSign.
allow_signers_to_create_signatures_by_typing_their_name_instead_of_drawing_or_uploading_one: Consentire ai firmatari di creare firme digitando il proprio nome invece di disegnarle o caricarle.
allow_signers_to_resubmit_forms_after_completion_useful_when_corrections_or_multiple_submissions_are_needed: Consentire ai firmatari di reinviare i moduli dopo il completamento, utile quando sono necessarie correzioni o più invii.
allow_recipients_to_decline_signing_a_document_the_decline_reason_notification_will_be_sent_to_the_signature_requester: Consentire ai destinatari di rifiutare di firmare un documento. La notifica del motivo del rifiuto verrà inviata al richiedente della firma.
@@ -3025,12 +3037,15 @@ it: &it
mcp_token_has_been_removed: Il token MCP è stato rimosso.
enable_mcp_server: Abilita server MCP
all_existing_mcp_connections_will_be_stopped_immediately_when_this_setting_is_disabled: Tutte le connessioni MCP esistenti verranno interrotte immediatamente quando questa impostazione viene disattivata.
- connect_to_product_name_mcp: Connetti a %{product_name} MCP
+ connect_to_docuseal_mcp: Connetti a WaboSign MCP
add_the_following_to_your_mcp_client_configuration: Aggiungi quanto segue alla configurazione del tuo client MCP
works_with_claude_desktop_cursor_windsurf_vs_code_and_any_mcp_compatible_client: Funziona con Claude Desktop, Cursor, Windsurf, VS Code e qualsiasi client compatibile con MCP.
your_email_address_has_been_changed: Il tuo indirizzo email è stato modificato
the_email_address_for_your_account_has_been_changed_to_new_email: L'indirizzo email del tuo account è stato modificato in %{new_email}.
if_you_did_not_make_this_change_please_contact_us_by_replying_to_this_email: Se non hai effettuato questa modifica, contattaci rispondendo a questa email.
+ open_file_from: 'Aprire file da'
+ cancel: Annulla
+ open: Apri
devise:
confirmations:
confirmed: Il tuo indirizzo email è stato confermato con successo.
@@ -3125,7 +3140,7 @@ it: &it
settings: 'Impostazioni'
settings_account_description: "Con impostazioni complete dell'account, puoi personalizzare l'esperienza di firma elettronica e invitare altri utenti."
support: 'Supporto'
- support_description: 'Puoi usare il nostro assistente AI oppure scriverci a wabosign@wabo.cc se hai domande.'
+ support_description: 'Puoi usare il nostro assistente AI oppure scriverci a support@wabosign.com se hai domande.'
settings_template_description: "Usa questo pulsante per accedere alla pagina delle impostazioni dell'account."
doorkeeper:
scopes:
@@ -3233,8 +3248,8 @@ fr: &fr
you_have_been_invited_to_account_name_product_name_please_sign_up_using_the_link_below_: 'Vous avez été invité à %{account_name} %{product_name}. Veuillez vous inscrire en utilisant le lien ci-dessous :'
sent_using_product_name_in_testing_mode_html: Envoyé avec %{product_name} en mode test
sent_using_product_name_free_document_signing_html: Envoyé avec %{product_name} signature de documents gratuite.
- sent_with_wabosign_pro_html: Envoyé avec WaboSign Pro
- show_send_with_wabosign_pro_attribution_in_emails_html: Afficher l’attribution "Envoyé avec WaboSign Pro" dans les e‑mails
+ sent_with_docuseal_pro_html: Envoyé avec WaboSign Pro
+ show_send_with_docuseal_pro_attribution_in_emails_html: Afficher l’attribution "Envoyé avec WaboSign Pro" dans les e‑mails
sign_documents_with_trusted_certificate_provided_by_docu_seal_your_documents_and_data_are_never_shared_with_docu_seal_p_d_f_checksum_is_provided_to_generate_a_trusted_signature: Signez des documents avec un certificat de confiance fourni par WaboSign. Vos documents et données ne sont jamais partagés avec WaboSign. Une empreinte (checksum) PDF est fournie pour générer une signature de confiance.
hi_there: Bonjour
thanks: Merci
@@ -3337,7 +3352,7 @@ fr: &fr
profile_details: Détails du profil
sign_up_with_google: S’inscrire avec Google
sign_up_with_microsoft: S’inscrire avec Microsoft
- by_creating_an_account_you_agree_to_our_html: En créant un compte, vous acceptez notre Politique de confidentialité et nos Conditions d’utilisation.
+ by_creating_an_account_you_agree_to_our_html: En créant un compte, vous acceptez notre Politique de confidentialité et nos Conditions d’utilisation.
enter_email_to_continue: Entrez votre e‑mail pour continuer
account: Compte
preferences: Préférences
@@ -3359,7 +3374,7 @@ fr: &fr
combine_completed_documents_and_audit_log: Combiner les documents complétés et le journal d’audit
salesforce_integration: Intégration Salesforce
salesforce_has_been_connected: Salesforce a été connecté.
- connect_salesforce_account_to_integrate_with_wabosign: Connectez un compte Salesforce pour l’intégrer à WaboSign
+ connect_salesforce_account_to_integrate_with_docuseal: Connectez un compte Salesforce pour l’intégrer à WaboSign
re_connect_salesforce: Reconnecter Salesforce
connect_salesforce: Connecter Salesforce
danger_zone: Zone de danger
@@ -3388,13 +3403,13 @@ fr: &fr
resetting_password: Réinitialisation du mot de passe
sign_in_with_name_account: Se connecter avec le compte %{name}
two_factor_code_from_authenticator_app: Code 2FA de l’application d’authentification
- sign_up_in_wabosign_console_to_upgrade_on_premises_app_is_completely_standalone_console_is_used_only_to_manage_your_license: Inscrivez-vous sur la Console WaboSign pour mettre à niveau. L’application on‑premises est entièrement autonome ; la Console sert uniquement à gérer votre licence.
+ sign_up_in_docuseal_console_to_upgrade_on_premises_app_is_completely_standalone_console_is_used_only_to_manage_your_license: Inscrivez-vous sur la Console WaboSign pour mettre à niveau. L’application on‑premises est entièrement autonome ; la Console sert uniquement à gérer votre licence.
send_from_email: Envoyer depuis l’e‑mail
optional: facultatif
save: Enregistrer
saving: Enregistrement
changes_have_been_saved: Les modifications ont été enregistrées.
- unlock_with_wabosign_pro: Débloquer avec WaboSign Pro
+ unlock_with_docuseal_pro: Débloquer avec WaboSign Pro
use_your_own_certificates_to_sign_and_verify_pdf_files: Utilisez vos propres certificats pour signer et vérifier des fichiers PDF.
upload_certificate: Téléverser un certificat
name: Nom
@@ -3438,6 +3453,7 @@ fr: &fr
code_is_invalid: Le code est invalide
2fa_has_been_removed: La 2FA a été supprimée.
2fa_has_been_set_up_already: La 2FA est déjà configurée.
+ developer_newsletters: Newsletters développeur
skip: Ignorer
email_notifications: Notifications par e‑mail
receive_notification_emails_on_completed_submission: Recevoir des e‑mails de notification lors de la finalisation d’une soumission
@@ -3493,7 +3509,7 @@ fr: &fr
password_has_been_changed: Le mot de passe a été modifié.
email_integration: Intégration e‑mail
send_via_connected_email: Envoyer via l’e‑mail connecté
- activate_with_wabosign_pro: Activer avec WaboSign Pro
+ activate_with_docuseal_pro: Activer avec WaboSign Pro
send_signature_request_to_your_recipients_directly_from_your_email: Envoyez des demandes de signature directement depuis votre e‑mail
connect_gmail: Connecter Gmail
re_connect_gmail: Reconnecter Gmail
@@ -3514,8 +3530,6 @@ fr: &fr
sign_out: Se déconnecter
page_number: Page %{number}
powered_by: Propulsé par
- based_on: based on
- view_on_github: View on GitHub
qr_code: Code QR
print: Imprimer
scan_the_qr_code_above_with_your_phone_camera_to_open_and_sign_this_document: Scannez le code QR ci-dessus avec l'appareil photo de votre téléphone pour ouvrir et signer ce document.
@@ -3575,7 +3589,7 @@ fr: &fr
upgrade_to_send_unlimited_signature_requests: Passez à la version Pro pour envoyer un nombre illimité de demandes de signature
add_without_sending: Ajouter sans envoyer
upgade_now: Mettre à niveau maintenant
- send_signature_request_emails_without_limits_with_wabosign_pro: Envoyez des e‑mails de demande de signature sans limites avec WaboSign Pro
+ send_signature_request_emails_without_limits_with_docuseal_pro: Envoyez des e‑mails de demande de signature sans limites avec WaboSign Pro
count_emails_used: "%{count} e‑mails utilisés"
has_been_connected: a été connecté
sms_not_configured: SMS non configuré
@@ -3677,7 +3691,7 @@ fr: &fr
new_user: Nouvel utilisateur
unarchive: Désarchiver
last_session: Dernière session
- unlock_more_user_roles_with_wabosign_pro: Débloquez davantage de rôles utilisateurs avec WaboSign Pro.
+ unlock_more_user_roles_with_docuseal_pro: Débloquez davantage de rôles utilisateurs avec WaboSign Pro.
view_active: Voir actifs
team_account: Compte d’équipe
team_accounts: Comptes d’équipe
@@ -3806,6 +3820,9 @@ fr: &fr
create_a_new_template_document_form_or_submit_the_existing_one_html: Créez un nouveau modèle de document ou soumettez l’existant
send_email_copy_with_completed_documents_to_a_specified_bcc_address: Envoyer une copie e‑mail avec les documents complétés à une adresse Cci spécifiée.
re_send_email: Renvoyer l’e‑mail
+ re_send_emails: Renvoyer e‑mails
+ are_you_sure_you_want_to_re_send_email_to_n_recipients: Êtes‑vous sûr de vouloir renvoyer l’e‑mail d’invitation à %{count} destinataires ?
+ emails_have_been_sent_to_n_recipients: Les e‑mails ont été envoyés à %{count} destinataires.
send_email: Envoyer l’e‑mail
copy_share_link: Copier le lien de partage
copied_to_clipboard: Copié dans le presse‑papiers
@@ -3898,25 +3915,25 @@ fr: &fr
seamlessly_automate_your_document_signing_process_with_make_com: Automatisez en toute fluidité votre processus de signature de documents avec Make.com.
find_suitable_zapier_templates_to_automate_your_workflow: Trouvez des modèles Zapier adaptés pour automatiser votre flux de travail.
get_started: Commencer
- click_here_to_learn_more_about_user_roles_and_permissions_html: Cliquez ici pour en savoir plus sur les rôles et permissions des utilisateurs.
+ click_here_to_learn_more_about_user_roles_and_permissions_html: Cliquez ici pour en savoir plus sur les rôles et permissions des utilisateurs.
count_10_signature_request_emails_sent_this_month_upgrade_to_pro_to_send_unlimited_signature_request_email: "%{count} / 10 e‑mails de demande de signature envoyés ce mois‑ci. Passez à Pro pour envoyer des e‑mails de demande de signature illimités."
test_mode_emails_limit_will_be_reset_within_24_hours: La limite d’e‑mails en mode test sera réinitialisée sous 24 heures.
- on_a_scale_of_1_to_10_how_satisfied_are_you_with_the_wabosign_product_: Sur une échelle de 1 à 10, quel est votre niveau de satisfaction du produit WaboSign ?
+ on_a_scale_of_1_to_10_how_satisfied_are_you_with_the_docuseal_product_: Sur une échelle de 1 à 10, quel est votre niveau de satisfaction du produit WaboSign ?
tell_us_more_about_your_experience: Dites‑nous en plus sur votre expérience
extremely_dissatisfied: Extrêmement insatisfait
extremely_satisfied: Extrêmement satisfait
your_pro_plan_payment_is_overdue: Le paiement de votre offre Pro est en retard.
click_here_to_update_your_payment_details_and_clear_the_invoice_to_ensure_uninterrupted_service_html: Cliquez ici pour mettre à jour vos informations de paiement et régler la facture afin de garantir la continuité du service.
overdue_payment: Paiement en retard
- your_pro_plan_has_been_suspended_due_to_unpaid_invoices_you_can_update_your_payment_details_to_settle_the_invoice_and_continue_using_wabosign_or_cancel_your_subscription: "Votre offre Pro a été suspendue en raison de factures impayées.\nVous pouvez mettre à jour vos informations de paiement pour régler la facture et continuer à utiliser WaboSign, ou annuler votre abonnement."
+ your_pro_plan_has_been_suspended_due_to_unpaid_invoices_you_can_update_your_payment_details_to_settle_the_invoice_and_continue_using_docuseal_or_cancel_your_subscription: "Votre offre Pro a été suspendue en raison de factures impayées.\nVous pouvez mettre à jour vos informations de paiement pour régler la facture et continuer à utiliser WaboSign, ou annuler votre abonnement."
manage_subscription: Gérer l’abonnement
submission_created_by_email_html: "Soumission créée par %{email}"
submission_created_by_email_via_source_html: "Soumission créée par %{email} via %{source}"
submission_created_via_source_html: "Soumission créée via %{source}"
pro_user_seats_used: Places d’utilisateurs Pro utilisées
manage_plan: Gérer la formule
- this_submission_has_multiple_signers_which_prevents_the_use_of_a_sharing_link_html: Cette soumission comporte plusieurs signataires, ce qui empêche l’utilisation d’un lien de partage car il n’est pas clair quel signataire est responsable de quels champs. Pour résoudre cela, suivez ce guide pour définir les détails du signataire par défaut.
- welcome_to_wabosign: Bienvenue sur WaboSign
+ this_submission_has_multiple_signers_which_prevents_the_use_of_a_sharing_link_html: Cette soumission comporte plusieurs signataires, ce qui empêche l’utilisation d’un lien de partage car il n’est pas clair quel signataire est responsable de quels champs. Pour résoudre cela, suivez ce guide pour définir les détails du signataire par défaut.
+ welcome_to_docuseal: Bienvenue sur WaboSign
start_a_quick_tour_to_learn_how_to_create_and_send_your_first_document: Lancez une visite rapide pour apprendre à créer et envoyer votre premier document
start_tour: Démarrer la visite
name_a_z: Nom A‑Z
@@ -3988,13 +4005,13 @@ fr: &fr
use_otp_code_to_access_the_api_key_html: Utilisez le code %{code} pour accéder à la clé API.
please_reply_to_this_email_if_you_dont_recognize_this_request: Veuillez répondre à cet e‑mail si vous ne reconnaissez pas cette demande.
your_user_account_has_been_archived_contact_your_administrator_to_restore_access_to_your_account: Votre compte utilisateur a été archivé. Contactez votre administrateur pour rétablir l’accès à votre compte.
- your_email_could_not_be_reached_this_may_happen_if_there_was_a_typo_in_your_address_or_if_your_mailbox_is_not_available_please_contact_support_email_to_log_in: Votre e‑mail n’a pas pu être joint. Cela peut se produire en cas de faute de frappe dans votre adresse ou si votre boîte aux lettres n’est pas disponible. Veuillez contacter wabosign@wabo.cc pour vous connecter.
+ your_email_could_not_be_reached_this_may_happen_if_there_was_a_typo_in_your_address_or_if_your_mailbox_is_not_available_please_contact_support_email_to_log_in: Votre e‑mail n’a pas pu être joint. Cela peut se produire en cas de faute de frappe dans votre adresse ou si votre boîte aux lettres n’est pas disponible. Veuillez contacter support@wabosign.com pour vous connecter.
efficient_search_with_search_index: Recherche efficace avec index de recherche
reindex: Réindexer
build_search_index: Construire l’index de recherche
require_two_factor_authentication_2fa_with_an_authenticator_app_e_g_google_authenticator_authy_all_users_signing_documents_must_pass_the_second_factor_verification_using_a_secure_code_in_addition_to_their_password: Exiger l’authentification à deux facteurs (2FA) avec une application d’authentification (p. ex., Google Authenticator, Authy). Tous les utilisateurs qui signent des documents doivent passer la vérification du second facteur à l’aide d’un code sécurisé en plus de leur mot de passe.
- add_a_unique_signature_id_and_timestamp_to_each_signature_for_audit_and_traceability_purposes_along_with_the_timestamp_part_of_wabosigns_21_cfr_part_11_compliance_settings: Ajouter un identifiant de signature unique et un horodatage à chaque signature à des fins d’audit et de traçabilité, avec l’horodatage. Fait partie des paramètres de conformité 21 CFR Part 11 de WaboSign.
- require_signer_to_provide_a_reason_for_signing_before_completing_their_signature_e_g_approvals_certifications_part_of_wabosigns_21_cfr_part_11_compliance_settings: Exiger que les signataires fournissent un motif de signature avant de finaliser leur signature (p. ex., approbations, certifications). Fait partie des paramètres de conformité 21 CFR Part 11 de WaboSign.
+ add_a_unique_signature_id_and_timestamp_to_each_signature_for_audit_and_traceability_purposes_along_with_the_timestamp_part_of_docuseals_21_cfr_part_11_compliance_settings: Ajouter un identifiant de signature unique et un horodatage à chaque signature à des fins d’audit et de traçabilité, avec l’horodatage. Fait partie des paramètres de conformité 21 CFR Part 11 de WaboSign.
+ require_signer_to_provide_a_reason_for_signing_before_completing_their_signature_e_g_approvals_certifications_part_of_docuseals_21_cfr_part_11_compliance_settings: Exiger que les signataires fournissent un motif de signature avant de finaliser leur signature (p. ex., approbations, certifications). Fait partie des paramètres de conformité 21 CFR Part 11 de WaboSign.
allow_signers_to_create_signatures_by_typing_their_name_instead_of_drawing_or_uploading_one: Autoriser les signataires à créer des signatures en tapant leur nom au lieu de dessiner ou téléverser une signature.
allow_signers_to_resubmit_forms_after_completion_useful_when_corrections_or_multiple_submissions_are_needed: Autoriser les signataires à soumettre à nouveau les formulaires après finalisation, utile pour des corrections ou soumissions multiples.
allow_recipients_to_decline_signing_a_document_the_decline_reason_notification_will_be_sent_to_the_signature_requester: Autoriser les destinataires à refuser de signer un document. Le motif du refus sera notifié au demandeur de signature.
@@ -4070,12 +4087,15 @@ fr: &fr
mcp_token_has_been_removed: Le jeton MCP a été supprimé.
enable_mcp_server: Activer le serveur MCP
all_existing_mcp_connections_will_be_stopped_immediately_when_this_setting_is_disabled: Toutes les connexions MCP existantes seront arrêtées immédiatement lorsque ce paramètre est désactivé.
- connect_to_product_name_mcp: Se connecter à %{product_name} MCP
+ connect_to_docuseal_mcp: Se connecter à WaboSign MCP
add_the_following_to_your_mcp_client_configuration: Ajoutez ce qui suit à la configuration de votre client MCP
works_with_claude_desktop_cursor_windsurf_vs_code_and_any_mcp_compatible_client: Fonctionne avec Claude Desktop, Cursor, Windsurf, VS Code et tout client compatible MCP.
your_email_address_has_been_changed: Votre adresse e-mail a été modifiée
the_email_address_for_your_account_has_been_changed_to_new_email: "L'adresse e-mail de votre compte a été modifiée en %{new_email}."
if_you_did_not_make_this_change_please_contact_us_by_replying_to_this_email: Si vous n'avez pas effectué ce changement, veuillez nous contacter en répondant à cet e-mail.
+ open_file_from: 'Ouvrir le fichier depuis'
+ cancel: Annuler
+ open: Ouvrir
devise:
confirmations:
confirmed: Votre adresse e-mail a été confirmée avec succès.
@@ -4170,7 +4190,7 @@ fr: &fr
settings: Paramètres
settings_account_description: Des paramètres de compte complets pour personnaliser l’expérience de signature et inviter d’autres utilisateurs.
support: Support
- support_description: Utilisez notre assistant IA en libre‑service ou contactez‑nous à wabosign@wabo.cc pour toute question.
+ support_description: Utilisez notre assistant IA en libre‑service ou contactez‑nous à support@wabosign.com pour toute question.
settings_template_description: Utilisez ce bouton pour accéder à la page des paramètres de votre compte.
doorkeeper:
scopes:
@@ -4278,8 +4298,8 @@ pt: &pt
you_have_been_invited_to_account_name_product_name_please_sign_up_using_the_link_below_: 'Você foi convidado para %{account_name} %{product_name}. Inscreva-se usando o link abaixo:'
sent_using_product_name_in_testing_mode_html: 'Enviado usando %{product_name} no Modo de Teste'
sent_using_product_name_free_document_signing_html: 'Enviado usando a assinatura gratuita de documentos de %{product_name}.'
- sent_with_wabosign_pro_html: 'Enviado com WaboSign Pro'
- show_send_with_wabosign_pro_attribution_in_emails_html: Mostrar "Enviado com WaboSign Pro" nos e-mails
+ sent_with_docuseal_pro_html: 'Enviado com WaboSign Pro'
+ show_send_with_docuseal_pro_attribution_in_emails_html: Mostrar "Enviado com WaboSign Pro" nos e-mails
sign_documents_with_trusted_certificate_provided_by_docu_seal_your_documents_and_data_are_never_shared_with_docu_seal_p_d_f_checksum_is_provided_to_generate_a_trusted_signature: Assine documentos com certificado confiável fornecido pela WaboSign. Seus documentos e dados nunca são compartilhados com a WaboSign. O checksum do PDF é fornecido para gerar uma assinatura confiável.
hi_there: Olá
thanks: Obrigado
@@ -4325,7 +4345,7 @@ pt: &pt
Obrigado,
{account.name}
- view: Visualizar
+ view: Ver
email: Email
form_expired_at_html: 'O formulário expirou em %{time}'
verification_code_code: 'Código de verificação: %{code}'
@@ -4382,7 +4402,7 @@ pt: &pt
profile_details: Detalhes do perfil
sign_up_with_google: Inscrever-se com Google
sign_up_with_microsoft: Inscrever-se com Microsoft
- by_creating_an_account_you_agree_to_our_html: 'Ao criar uma conta, você concorda com nossa Política de Privacidade e Termos de Serviço.'
+ by_creating_an_account_you_agree_to_our_html: 'Ao criar uma conta, você concorda com nossa Política de Privacidade e Termos de Serviço.'
enter_email_to_continue: Insira o e-mail para continuar
account: Conta
preferences: Preferências
@@ -4404,7 +4424,7 @@ pt: &pt
combine_completed_documents_and_audit_log: Combinar documentos concluídos e log de auditoria
salesforce_integration: Integração com Salesforce
salesforce_has_been_connected: Salesforce foi conectado.
- connect_salesforce_account_to_integrate_with_wabosign: Conecte a conta Salesforce para integrar com o WaboSign
+ connect_salesforce_account_to_integrate_with_docuseal: Conecte a conta Salesforce para integrar com o WaboSign
re_connect_salesforce: Reconectar Salesforce
connect_salesforce: Conectar Salesforce
danger_zone: Zona de perigo
@@ -4433,13 +4453,13 @@ pt: &pt
resetting_password: Redefinindo senha
sign_in_with_name_account: 'Entrar com conta %{name}'
two_factor_code_from_authenticator_app: Código de autenticação de dois fatores do aplicativo Authenticator
- sign_up_in_wabosign_console_to_upgrade_on_premises_app_is_completely_standalone_console_is_used_only_to_manage_your_license: Inscreva-se no console do WaboSign para fazer o upgrade. O aplicativo local é totalmente independente, o console é usado apenas para gerenciar sua licença.
+ sign_up_in_docuseal_console_to_upgrade_on_premises_app_is_completely_standalone_console_is_used_only_to_manage_your_license: Inscreva-se no console do WaboSign para fazer o upgrade. O aplicativo local é totalmente independente, o console é usado apenas para gerenciar sua licença.
send_from_email: Enviar do e-mail
optional: opcional
save: Salvar
saving: Salvando
changes_have_been_saved: As alterações foram salvas.
- unlock_with_wabosign_pro: Desbloquear com o WaboSign Pro
+ unlock_with_docuseal_pro: Desbloquear com o WaboSign Pro
use_your_own_certificates_to_sign_and_verify_pdf_files: Use seus próprios certificados para assinar e verificar arquivos PDF.
upload_certificate: Enviar certificado
name: Nome
@@ -4483,6 +4503,7 @@ pt: &pt
code_is_invalid: O código é inválido
2fa_has_been_removed: 2FA foi removido.
2fa_has_been_set_up_already: 2FA já foi configurado.
+ developer_newsletters: Newsletters para desenvolvedores
skip: Pular
email_notifications: Notificações por e-mail
receive_notification_emails_on_completed_submission: Receber notificações por e-mail ao concluir uma submissão
@@ -4538,7 +4559,7 @@ pt: &pt
password_has_been_changed: A senha foi alterada.
email_integration: Integração de e-mail
send_via_connected_email: Enviar via e-mail conectado
- activate_with_wabosign_pro: Ativar com WaboSign Pro
+ activate_with_docuseal_pro: Ativar com WaboSign Pro
send_signature_request_to_your_recipients_directly_from_your_email: Envie solicitações de assinatura diretamente do seu e-mail
connect_gmail: Conectar Gmail
re_connect_gmail: Reconectar Gmail
@@ -4559,8 +4580,6 @@ pt: &pt
sign_out: Sair
page_number: 'Página %{number}'
powered_by: Desenvolvido por
- based_on: based on
- view_on_github: View on GitHub
qr_code: Código QR
print: Imprimir
scan_the_qr_code_above_with_your_phone_camera_to_open_and_sign_this_document: Escaneie o código QR acima com a câmera do seu telefone para abrir e assinar este documento.
@@ -4620,7 +4639,7 @@ pt: &pt
upgrade_to_send_unlimited_signature_requests: Faça upgrade para enviar solicitações de assinatura ilimitadas
add_without_sending: Adicionar sem enviar
upgade_now: Fazer upgrade agora
- send_signature_request_emails_without_limits_with_wabosign_pro: Enviar e-mails de solicitação de assinatura sem limites com o WaboSign Pro
+ send_signature_request_emails_without_limits_with_docuseal_pro: Enviar e-mails de solicitação de assinatura sem limites com o WaboSign Pro
count_emails_used: '%{count} e-mails usados'
has_been_connected: foi conectado
sms_not_configured: SMS não configurado
@@ -4722,7 +4741,7 @@ pt: &pt
new_user: Novo usuário
unarchive: Desarquivar
last_session: Última sessão
- unlock_more_user_roles_with_wabosign_pro: Desbloqueie mais funções de usuário com WaboSign Pro.
+ unlock_more_user_roles_with_docuseal_pro: Desbloqueie mais funções de usuário com WaboSign Pro.
view_active: Ver ativos
team_account: Conta de equipe
team_accounts: Contas de equipe
@@ -4851,6 +4870,9 @@ pt: &pt
create_a_new_template_document_form_or_submit_the_existing_one_html: 'Criar um novo modelo de documento ou submeter o existente'
send_email_copy_with_completed_documents_to_a_specified_bcc_address: Envie uma cópia do e-mail com documentos concluídos para um endereço BCC especificado.
re_send_email: Reenviar e-mail
+ re_send_emails: Reenviar e-mails
+ are_you_sure_you_want_to_re_send_email_to_n_recipients: Tem certeza de que deseja reenviar o e-mail de convite para %{count} destinatários?
+ emails_have_been_sent_to_n_recipients: Os e-mails foram enviados para %{count} destinatários.
send_email: Enviar e-mail
copy_share_link: Copiar link de compartilhamento
copied_to_clipboard: Copiado para a área de transferência
@@ -4943,25 +4965,25 @@ pt: &pt
seamlessly_automate_your_document_signing_process_with_make_com: Automatize perfeitamente seu processo de assinatura de documentos com o Make.com.
find_suitable_zapier_templates_to_automate_your_workflow: Encontre modelos Zapier adequados para automatizar seu fluxo de trabalho.
get_started: Começar
- click_here_to_learn_more_about_user_roles_and_permissions_html: 'Clique aqui para saber mais sobre os papéis e permissões dos usuários.'
+ click_here_to_learn_more_about_user_roles_and_permissions_html: 'Clique aqui para saber mais sobre os papéis e permissões dos usuários.'
count_10_signature_request_emails_sent_this_month_upgrade_to_pro_to_send_unlimited_signature_request_email: '%{count} / 10 e-mails de solicitação de assinatura enviados este mês. Faça upgrade para Pro para enviar solicitações de assinatura ilimitadas.'
test_mode_emails_limit_will_be_reset_within_24_hours: O limite de e-mails no modo de teste será redefinido em 24 horas.
- on_a_scale_of_1_to_10_how_satisfied_are_you_with_the_wabosign_product_: 'Em uma escala de 1 a 10, quão satisfeito você está com o produto WaboSign?'
+ on_a_scale_of_1_to_10_how_satisfied_are_you_with_the_docuseal_product_: 'Em uma escala de 1 a 10, quão satisfeito você está com o produto WaboSign?'
tell_us_more_about_your_experience: Conte-nos mais sobre sua experiência
extremely_dissatisfied: Extremamente insatisfeito
extremely_satisfied: Extremamente satisfeito
your_pro_plan_payment_is_overdue: O pagamento do seu plano Pro está atrasado.
click_here_to_update_your_payment_details_and_clear_the_invoice_to_ensure_uninterrupted_service_html: 'Clique aqui para atualizar seus dados de pagamento e quitar a fatura para garantir um serviço ininterrupto.'
overdue_payment: Pagamento Atrasado
- your_pro_plan_has_been_suspended_due_to_unpaid_invoices_you_can_update_your_payment_details_to_settle_the_invoice_and_continue_using_wabosign_or_cancel_your_subscription: Seu plano Pro foi suspenso devido a faturas não pagas. Você pode atualizar seus dados de pagamento para quitar a fatura e continuar usando o WaboSign ou cancelar sua assinatura.
+ your_pro_plan_has_been_suspended_due_to_unpaid_invoices_you_can_update_your_payment_details_to_settle_the_invoice_and_continue_using_docuseal_or_cancel_your_subscription: Seu plano Pro foi suspenso devido a faturas não pagas. Você pode atualizar seus dados de pagamento para quitar a fatura e continuar usando o WaboSign ou cancelar sua assinatura.
manage_subscription: Gerenciar Assinatura
submission_created_by_email_html: 'Envio criado por %{email}'
submission_created_by_email_via_source_html: 'Envio criado por %{email} via %{source}'
submission_created_via_source_html: 'Envio criado via %{source}'
pro_user_seats_used: Lugares de usuário Pro em uso
manage_plan: Gerenciar plano
- this_submission_has_multiple_signers_which_prevents_the_use_of_a_sharing_link_html: 'Este envio tem vários signatários, o que impede o uso de um link de compartilhamento, pois não está claro qual signatário é responsável por quais campos. Para resolver isso, siga este guia para definir os detalhes padrão do signatário.'
- welcome_to_wabosign: Bem-vindo ao WaboSign
+ this_submission_has_multiple_signers_which_prevents_the_use_of_a_sharing_link_html: 'Este envio tem vários signatários, o que impede o uso de um link de compartilhamento, pois não está claro qual signatário é responsável por quais campos. Para resolver isso, siga este guia para definir os detalhes padrão do signatário.'
+ welcome_to_docuseal: Bem-vindo ao WaboSign
start_a_quick_tour_to_learn_how_to_create_and_send_your_first_document: Comece um tour rápido para aprender a criar e enviar seu primeiro documento.
start_tour: Iniciar tour
name_a_z: Nome A-Z
@@ -5037,13 +5059,13 @@ pt: &pt
use_otp_code_to_access_the_api_key_html: Use o código %{code} para acessar a chave API.
please_reply_to_this_email_if_you_dont_recognize_this_request: Responda a este e-mail se você não reconhecer esta solicitação.
your_user_account_has_been_archived_contact_your_administrator_to_restore_access_to_your_account: Sua conta de usuário foi arquivada. Entre em contato com o administrador para restaurar o acesso à sua conta.
- your_email_could_not_be_reached_this_may_happen_if_there_was_a_typo_in_your_address_or_if_your_mailbox_is_not_available_please_contact_support_email_to_log_in: Seu e-mail não pôde ser acessado. Isso pode acontecer se houve um erro de digitação no endereço ou se sua caixa de correio não estiver disponível. Entre em contato com wabosign@wabo.cc para fazer login.
+ your_email_could_not_be_reached_this_may_happen_if_there_was_a_typo_in_your_address_or_if_your_mailbox_is_not_available_please_contact_support_email_to_log_in: Seu e-mail não pôde ser acessado. Isso pode acontecer se houve um erro de digitação no endereço ou se sua caixa de correio não estiver disponível. Entre em contato com support@wabosign.com para fazer login.
efficient_search_with_search_index: Pesquisa eficiente com índice de busca
reindex: Reindexar
build_search_index: Construir índice de busca
require_two_factor_authentication_2fa_with_an_authenticator_app_e_g_google_authenticator_authy_all_users_signing_documents_must_pass_the_second_factor_verification_using_a_secure_code_in_addition_to_their_password: "Exigir autenticação de dois fatores (2FA) com um aplicativo autenticador (ex.: Google Authenticator, Authy). Todos os usuários que assinam documentos devem passar pela verificação do segundo fator usando um código seguro além da senha."
- add_a_unique_signature_id_and_timestamp_to_each_signature_for_audit_and_traceability_purposes_along_with_the_timestamp_part_of_wabosigns_21_cfr_part_11_compliance_settings: Adicionar um ID de assinatura exclusivo e um carimbo de data/hora a cada assinatura para fins de auditoria e rastreabilidade junto com o carimbo de data/hora. Parte das configurações de conformidade 21 CFR Parte 11 do WaboSign.
- require_signer_to_provide_a_reason_for_signing_before_completing_their_signature_e_g_approvals_certifications_part_of_wabosigns_21_cfr_part_11_compliance_settings: "Exigir que os signatários forneçam uma razão antes de completar a assinatura (ex.: aprovações, certificações). Parte das configurações de conformidade 21 CFR Parte 11 do WaboSign."
+ add_a_unique_signature_id_and_timestamp_to_each_signature_for_audit_and_traceability_purposes_along_with_the_timestamp_part_of_docuseals_21_cfr_part_11_compliance_settings: Adicionar um ID de assinatura exclusivo e um carimbo de data/hora a cada assinatura para fins de auditoria e rastreabilidade junto com o carimbo de data/hora. Parte das configurações de conformidade 21 CFR Parte 11 do WaboSign.
+ require_signer_to_provide_a_reason_for_signing_before_completing_their_signature_e_g_approvals_certifications_part_of_docuseals_21_cfr_part_11_compliance_settings: "Exigir que os signatários forneçam uma razão antes de completar a assinatura (ex.: aprovações, certificações). Parte das configurações de conformidade 21 CFR Parte 11 do WaboSign."
allow_signers_to_create_signatures_by_typing_their_name_instead_of_drawing_or_uploading_one: Permitir que os signatários criem assinaturas digitando seu nome em vez de desenhá-las ou carregá-las.
allow_signers_to_resubmit_forms_after_completion_useful_when_corrections_or_multiple_submissions_are_needed: Permitir que os signatários reenviem formulários após o término, útil quando são necessárias correções ou múltiplos envios.
allow_recipients_to_decline_signing_a_document_the_decline_reason_notification_will_be_sent_to_the_signature_requester: Permitir que os destinatários recusem assinar um documento. A notificação do motivo da recusa será enviada ao solicitante da assinatura.
@@ -5118,12 +5140,15 @@ pt: &pt
mcp_token_has_been_removed: O token MCP foi removido.
enable_mcp_server: Ativar servidor MCP
all_existing_mcp_connections_will_be_stopped_immediately_when_this_setting_is_disabled: Todas as conexões MCP existentes serão interrompidas imediatamente quando esta configuração for desativada.
- connect_to_product_name_mcp: Conectar ao %{product_name} MCP
+ connect_to_docuseal_mcp: Conectar ao WaboSign MCP
add_the_following_to_your_mcp_client_configuration: Adicione o seguinte à configuração do seu cliente MCP
works_with_claude_desktop_cursor_windsurf_vs_code_and_any_mcp_compatible_client: Funciona com Claude Desktop, Cursor, Windsurf, VS Code e qualquer cliente compatível com MCP.
your_email_address_has_been_changed: Seu endereço de e-mail foi alterado
the_email_address_for_your_account_has_been_changed_to_new_email: O endereço de e-mail da sua conta foi alterado para %{new_email}.
if_you_did_not_make_this_change_please_contact_us_by_replying_to_this_email: Se você não fez essa alteração, entre em contato conosco respondendo a este e-mail.
+ open_file_from: 'Abrir arquivo de'
+ cancel: Cancelar
+ open: Abrir
devise:
confirmations:
confirmed: Seu endereço de e-mail foi confirmado com sucesso.
@@ -5218,7 +5243,7 @@ pt: &pt
settings: 'Configurações'
settings_account_description: 'Com configurações completas de conta, você pode personalizar a experiência de assinatura eletrônica e convidar mais usuários.'
support: 'Suporte'
- support_description: 'Você pode usar nosso assistente de IA ou nos escrever para wabosign@wabo.cc se tiver dúvidas.'
+ support_description: 'Você pode usar nosso assistente de IA ou nos escrever para support@wabosign.com se tiver dúvidas.'
settings_template_description: 'Use este botão para acessar a página de configurações da sua conta.'
doorkeeper:
scopes:
@@ -5326,8 +5351,8 @@ de: &de
you_have_been_invited_to_account_name_product_name_please_sign_up_using_the_link_below_: 'Sie wurden zu %{account_name} %{product_name} eingeladen. Bitte registrieren Sie sich über den folgenden Link:'
sent_using_product_name_in_testing_mode_html: 'Gesendet über %{product_name} im Testmodus'
sent_using_product_name_free_document_signing_html: 'Gesendet mit der kostenlosen Dokumentensignierung von %{product_name}.'
- sent_with_wabosign_pro_html: Gesendet mit WaboSign Pro
- show_send_with_wabosign_pro_attribution_in_emails_html: '"Gesendet mit WaboSign Pro" in E-Mails anzeigen'
+ sent_with_docuseal_pro_html: Gesendet mit WaboSign Pro
+ show_send_with_docuseal_pro_attribution_in_emails_html: '"Gesendet mit WaboSign Pro" in E-Mails anzeigen'
sign_documents_with_trusted_certificate_provided_by_docu_seal_your_documents_and_data_are_never_shared_with_docu_seal_p_d_f_checksum_is_provided_to_generate_a_trusted_signature: Unterzeichnen Sie Dokumente mit einem vertrauenswürdigen Zertifikat von WaboSign. Ihre Dokumente und Daten werden niemals mit WaboSign geteilt. Eine PDF-Prüfsumme wird bereitgestellt, um eine vertrauenswürdige Signatur zu generieren.
you_have_been_invited_to_submit_the_name_form: 'Sie wurden eingeladen, das Formular "%{name}" einzureichen.'
you_have_been_invited_to_sign_the_name: 'Sie wurden eingeladen, "%{name}" zu unterschreiben.'
@@ -5430,7 +5455,7 @@ de: &de
profile_details: Profildetails
sign_up_with_google: Mit Google registrieren
sign_up_with_microsoft: Mit Microsoft registrieren
- by_creating_an_account_you_agree_to_our_html: 'Durch die Erstellung eines Kontos stimmen Sie unseren Datenschutzrichtlinien und Nutzungsbedingungen zu.'
+ by_creating_an_account_you_agree_to_our_html: 'Durch die Erstellung eines Kontos stimmen Sie unseren Datenschutzrichtlinien und Nutzungsbedingungen zu.'
enter_email_to_continue: E-Mail eingeben, um fortzufahren
account: Konto
preferences: Einstellungen
@@ -5452,7 +5477,7 @@ de: &de
combine_completed_documents_and_audit_log: Abgeschlossene Dokumente und Prüfprotokoll kombinieren
salesforce_integration: Salesforce-Integration
salesforce_has_been_connected: Salesforce wurde verbunden.
- connect_salesforce_account_to_integrate_with_wabosign: Verbinden Sie Ihr Salesforce-Konto, um es mit WaboSign zu integrieren
+ connect_salesforce_account_to_integrate_with_docuseal: Verbinden Sie Ihr Salesforce-Konto, um es mit WaboSign zu integrieren
re_connect_salesforce: Salesforce erneut verbinden
connect_salesforce: Salesforce verbinden
danger_zone: Gefahrenzone
@@ -5481,13 +5506,13 @@ de: &de
resetting_password: Passwort wird zurückgesetzt
sign_in_with_name_account: 'Mit %{name}-Konto anmelden'
two_factor_code_from_authenticator_app: Zwei-Faktor-Code aus der Authenticator-App
- sign_up_in_wabosign_console_to_upgrade_on_premises_app_is_completely_standalone_console_is_used_only_to_manage_your_license: Melden Sie sich in der WaboSign-Konsole an, um ein Upgrade durchzuführen. Die lokale App ist vollständig eigenständig; die Konsole wird nur zur Verwaltung Ihrer Lizenz verwendet.
+ sign_up_in_docuseal_console_to_upgrade_on_premises_app_is_completely_standalone_console_is_used_only_to_manage_your_license: Melden Sie sich in der WaboSign-Konsole an, um ein Upgrade durchzuführen. Die lokale App ist vollständig eigenständig; die Konsole wird nur zur Verwaltung Ihrer Lizenz verwendet.
send_from_email: Von E-Mail senden
optional: optional
save: Speichern
saving: Wird gespeichert
changes_have_been_saved: Änderungen wurden gespeichert.
- unlock_with_wabosign_pro: Mit WaboSign Pro freischalten
+ unlock_with_docuseal_pro: Mit WaboSign Pro freischalten
use_your_own_certificates_to_sign_and_verify_pdf_files: Verwenden Sie Ihre eigenen Zertifikate, um PDF-Dateien zu signieren und zu verifizieren.
upload_certificate: Zertifikat hochladen
name: Name
@@ -5531,6 +5556,7 @@ de: &de
code_is_invalid: Der Code ist ungültig
2fa_has_been_removed: 2FA wurde entfernt.
2fa_has_been_set_up_already: 2FA wurde bereits eingerichtet.
+ developer_newsletters: Entwickler-Newsletter
skip: Überspringen
email_notifications: E-Mail-Benachrichtigungen
receive_notification_emails_on_completed_submission: Benachrichtigungs-E-Mails bei abgeschlossener Einreichung erhalten
@@ -5586,7 +5612,7 @@ de: &de
password_has_been_changed: Das Passwort wurde geändert.
email_integration: E-Mail-Integration
send_via_connected_email: Über verbundenes E-Mail-Konto senden
- activate_with_wabosign_pro: Mit WaboSign Pro aktivieren
+ activate_with_docuseal_pro: Mit WaboSign Pro aktivieren
send_signature_request_to_your_recipients_directly_from_your_email: Senden Sie Signaturanfragen direkt aus Ihrem E-Mail-Konto
connect_gmail: Gmail verbinden
re_connect_gmail: Gmail erneut verbinden
@@ -5607,8 +5633,6 @@ de: &de
sign_out: Abmelden
page_number: 'Seite %{number}'
powered_by: Bereitgestellt von
- based_on: based on
- view_on_github: View on GitHub
qr_code: QR-Code
print: Drucken
scan_the_qr_code_above_with_your_phone_camera_to_open_and_sign_this_document: Scannen Sie den QR-Code oben mit Ihrer Handykamera, um dieses Dokument zu öffnen und zu unterzeichnen.
@@ -5668,7 +5692,7 @@ de: &de
upgrade_to_send_unlimited_signature_requests: Upgrade durchführen, um unbegrenzte Signaturanfragen zu senden
add_without_sending: Hinzufügen ohne zu senden
upgade_now: Jetzt upgraden
- send_signature_request_emails_without_limits_with_wabosign_pro: Signaturanfragen per E-Mail ohne Limits mit WaboSign Pro senden
+ send_signature_request_emails_without_limits_with_docuseal_pro: Signaturanfragen per E-Mail ohne Limits mit WaboSign Pro senden
count_emails_used: '%{count} E-Mails verwendet'
has_been_connected: wurde verbunden
sms_not_configured: SMS nicht konfiguriert
@@ -5770,7 +5794,7 @@ de: &de
new_user: Neuer Benutzer
unarchive: Entarchivieren
last_session: Letzte Sitzung
- unlock_more_user_roles_with_wabosign_pro: Weitere Benutzerrollen mit WaboSign Pro freischalten.
+ unlock_more_user_roles_with_docuseal_pro: Weitere Benutzerrollen mit WaboSign Pro freischalten.
view_active: Aktive anzeigen
team_account: Teamkonto
team_accounts: Teamkonten
@@ -5899,6 +5923,9 @@ de: &de
create_a_new_template_document_form_or_submit_the_existing_one_html: Neue Vorlage erstellen oder bestehende einreichen
send_email_copy_with_completed_documents_to_a_specified_bcc_address: Senden Sie eine E-Mail-Kopie mit abgeschlossenen Dokumenten an eine angegebene BCC-Adresse.
re_send_email: E-Mail erneut senden
+ re_send_emails: E-Mails senden
+ are_you_sure_you_want_to_re_send_email_to_n_recipients: Sind Sie sicher, dass Sie die Einladungs-E-Mail erneut an %{count} Empfänger senden möchten?
+ emails_have_been_sent_to_n_recipients: Die E-Mails wurden an %{count} Empfänger gesendet.
send_email: E-Mail senden
copy_share_link: Freigabelink kopieren
copied_to_clipboard: In die Zwischenablage kopiert
@@ -5991,25 +6018,25 @@ de: &de
seamlessly_automate_your_document_signing_process_with_make_com: Automatisieren Sie Ihren Dokumentenunterzeichnungsprozess nahtlos mit Make.com.
find_suitable_zapier_templates_to_automate_your_workflow: Finden Sie passende Zapier-Vorlagen, um Ihren Workflow zu automatisieren.
get_started: Loslegen
- click_here_to_learn_more_about_user_roles_and_permissions_html: 'Klicken Sie hier, um mehr über Benutzerrollen und -berechtigungen zu erfahren.'
+ click_here_to_learn_more_about_user_roles_and_permissions_html: 'Klicken Sie hier, um mehr über Benutzerrollen und -berechtigungen zu erfahren.'
count_10_signature_request_emails_sent_this_month_upgrade_to_pro_to_send_unlimited_signature_request_email: '%{count} / 10 E-Mails für Signaturanfragen wurden diesen Monat gesendet. Upgraden Sie zu Pro, um unbegrenzte Signaturanfragen zu senden.'
test_mode_emails_limit_will_be_reset_within_24_hours: Das Limit für E-Mails im Testmodus wird innerhalb von 24 Stunden zurückgesetzt.
- on_a_scale_of_1_to_10_how_satisfied_are_you_with_the_wabosign_product_: 'Auf einer Skala von 1 bis 10: Wie zufrieden sind Sie mit dem WaboSign-Produkt?'
+ on_a_scale_of_1_to_10_how_satisfied_are_you_with_the_docuseal_product_: 'Auf einer Skala von 1 bis 10: Wie zufrieden sind Sie mit dem WaboSign-Produkt?'
tell_us_more_about_your_experience: Erzählen Sie uns mehr über Ihre Erfahrung
extremely_dissatisfied: Extrem unzufrieden
extremely_satisfied: Extrem zufrieden
your_pro_plan_payment_is_overdue: Ihre Zahlung für den Pro-Plan ist überfällig.
click_here_to_update_your_payment_details_and_clear_the_invoice_to_ensure_uninterrupted_service_html: 'Klicken Sie hier, um Ihre Zahlungsdaten zu aktualisieren und die Rechnung zu begleichen, um einen unterbrechungsfreien Service sicherzustellen.'
overdue_payment: Überfällige Zahlung
- your_pro_plan_has_been_suspended_due_to_unpaid_invoices_you_can_update_your_payment_details_to_settle_the_invoice_and_continue_using_wabosign_or_cancel_your_subscription: Ihr Pro-Plan wurde aufgrund unbezahlter Rechnungen ausgesetzt. Sie können Ihre Zahlungsdaten aktualisieren, um die Rechnung zu begleichen und WaboSign weiterhin zu nutzen, oder Ihr Abonnement kündigen.
+ your_pro_plan_has_been_suspended_due_to_unpaid_invoices_you_can_update_your_payment_details_to_settle_the_invoice_and_continue_using_docuseal_or_cancel_your_subscription: Ihr Pro-Plan wurde aufgrund unbezahlter Rechnungen ausgesetzt. Sie können Ihre Zahlungsdaten aktualisieren, um die Rechnung zu begleichen und WaboSign weiterhin zu nutzen, oder Ihr Abonnement kündigen.
manage_subscription: Abonnement verwalten
submission_created_by_email_html: 'Einreichung erstellt von %{email}'
submission_created_by_email_via_source_html: 'Einreichung erstellt von %{email} über %{source}'
submission_created_via_source_html: 'Einreichung erstellt über %{source}'
pro_user_seats_used: Verwendete Pro-Benutzerplätze
manage_plan: Plan verwalten
- this_submission_has_multiple_signers_which_prevents_the_use_of_a_sharing_link_html: 'Diese Einreichung hat mehrere Unterzeichner, was die Nutzung eines Freigabelinks verhindert, da unklar ist, welcher Unterzeichner für welche Felder verantwortlich ist. Um dies zu lösen, folgen Sie dieser Anleitung, um die Standarddetails des Unterzeichners festzulegen.'
- welcome_to_wabosign: Willkommen bei WaboSign
+ this_submission_has_multiple_signers_which_prevents_the_use_of_a_sharing_link_html: 'Diese Einreichung hat mehrere Unterzeichner, was die Nutzung eines Freigabelinks verhindert, da unklar ist, welcher Unterzeichner für welche Felder verantwortlich ist. Um dies zu lösen, folgen Sie dieser Anleitung, um die Standarddetails des Unterzeichners festzulegen.'
+ welcome_to_docuseal: Willkommen bei WaboSign
start_a_quick_tour_to_learn_how_to_create_and_send_your_first_document: Starten Sie eine kurze Tour, um zu lernen, wie Sie Ihr erstes Dokument erstellen und versenden.
start_tour: Starten
name_a_z: Name A-Z
@@ -6085,13 +6112,13 @@ de: &de
use_otp_code_to_access_the_api_key_html: Verwenden Sie den Code %{code}, um auf den API-Schlüssel zuzugreifen.
please_reply_to_this_email_if_you_dont_recognize_this_request: Bitte antworten Sie auf diese E-Mail, wenn Sie diese Anfrage nicht erkennen.
your_user_account_has_been_archived_contact_your_administrator_to_restore_access_to_your_account: Ihr Benutzerkonto wurde archiviert. Wenden Sie sich an Ihren Administrator, um den Zugriff wiederherzustellen.
- your_email_could_not_be_reached_this_may_happen_if_there_was_a_typo_in_your_address_or_if_your_mailbox_is_not_available_please_contact_support_email_to_log_in: Ihre E-Mail konnte nicht erreicht werden. Dies kann passieren, wenn sich ein Tippfehler in Ihrer Adresse befindet oder Ihr Postfach nicht verfügbar ist. Bitte kontaktieren Sie wabosign@wabo.cc, um sich anzumelden.
+ your_email_could_not_be_reached_this_may_happen_if_there_was_a_typo_in_your_address_or_if_your_mailbox_is_not_available_please_contact_support_email_to_log_in: Ihre E-Mail konnte nicht erreicht werden. Dies kann passieren, wenn sich ein Tippfehler in Ihrer Adresse befindet oder Ihr Postfach nicht verfügbar ist. Bitte kontaktieren Sie support@wabosign.com, um sich anzumelden.
efficient_search_with_search_index: Effiziente Suche mit Suchindex
reindex: Neu indexieren
build_search_index: Suchindex erstellen
require_two_factor_authentication_2fa_with_an_authenticator_app_e_g_google_authenticator_authy_all_users_signing_documents_must_pass_the_second_factor_verification_using_a_secure_code_in_addition_to_their_password: Zwei-Faktor-Authentifizierung (2FA) mit einer Authentifizierungs-App (z. B. Google Authenticator, Authy) erforderlich. Alle Benutzer, die Dokumente unterzeichnen, müssen zusätzlich zu ihrem Passwort die zweite Faktorprüfung mit einem sicheren Code bestehen.
- add_a_unique_signature_id_and_timestamp_to_each_signature_for_audit_and_traceability_purposes_along_with_the_timestamp_part_of_wabosigns_21_cfr_part_11_compliance_settings: Fügen Sie jeder Signatur eine eindeutige Signatur-ID und einen Zeitstempel für Prüf- und Nachverfolgbarkeitszwecke hinzu. Teil der WaboSign-Einstellungen zur 21 CFR Part 11-Compliance.
- require_signer_to_provide_a_reason_for_signing_before_completing_their_signature_e_g_approvals_certifications_part_of_wabosigns_21_cfr_part_11_compliance_settings: Unterzeichner müssen vor Abschluss ihrer Signatur einen Grund für die Unterzeichnung angeben (z. B. Genehmigungen, Zertifizierungen). Teil der WaboSign-Einstellungen zur 21 CFR Part 11-Compliance.
+ add_a_unique_signature_id_and_timestamp_to_each_signature_for_audit_and_traceability_purposes_along_with_the_timestamp_part_of_docuseals_21_cfr_part_11_compliance_settings: Fügen Sie jeder Signatur eine eindeutige Signatur-ID und einen Zeitstempel für Prüf- und Nachverfolgbarkeitszwecke hinzu. Teil der WaboSign-Einstellungen zur 21 CFR Part 11-Compliance.
+ require_signer_to_provide_a_reason_for_signing_before_completing_their_signature_e_g_approvals_certifications_part_of_docuseals_21_cfr_part_11_compliance_settings: Unterzeichner müssen vor Abschluss ihrer Signatur einen Grund für die Unterzeichnung angeben (z. B. Genehmigungen, Zertifizierungen). Teil der WaboSign-Einstellungen zur 21 CFR Part 11-Compliance.
allow_signers_to_create_signatures_by_typing_their_name_instead_of_drawing_or_uploading_one: Unterzeichner dürfen Signaturen erstellen, indem sie ihren Namen eingeben, statt eine Signatur zu zeichnen oder hochzuladen.
allow_signers_to_resubmit_forms_after_completion_useful_when_corrections_or_multiple_submissions_are_needed: Unterzeichner dürfen Formulare nach Abschluss erneut einreichen – nützlich für Korrekturen oder mehrere Einreichungen.
allow_recipients_to_decline_signing_a_document_the_decline_reason_notification_will_be_sent_to_the_signature_requester: Empfänger dürfen die Unterzeichnung eines Dokuments ablehnen. Die Benachrichtigung mit dem Ablehnungsgrund wird an den Anforderer der Signatur gesendet.
@@ -6166,12 +6193,15 @@ de: &de
mcp_token_has_been_removed: Das MCP-Token wurde entfernt.
enable_mcp_server: MCP-Server aktivieren
all_existing_mcp_connections_will_be_stopped_immediately_when_this_setting_is_disabled: Alle bestehenden MCP-Verbindungen werden sofort gestoppt, wenn diese Einstellung deaktiviert wird.
- connect_to_product_name_mcp: Mit %{product_name} MCP verbinden
+ connect_to_docuseal_mcp: Mit WaboSign MCP verbinden
add_the_following_to_your_mcp_client_configuration: Fügen Sie Folgendes zu Ihrer MCP-Client-Konfiguration hinzu
works_with_claude_desktop_cursor_windsurf_vs_code_and_any_mcp_compatible_client: Funktioniert mit Claude Desktop, Cursor, Windsurf, VS Code und jedem MCP-kompatiblen Client.
your_email_address_has_been_changed: Ihre E-Mail-Adresse wurde geändert
the_email_address_for_your_account_has_been_changed_to_new_email: Die E-Mail-Adresse Ihres Kontos wurde in %{new_email} geändert.
if_you_did_not_make_this_change_please_contact_us_by_replying_to_this_email: Wenn Sie diese Änderung nicht vorgenommen haben, kontaktieren Sie uns bitte, indem Sie auf diese E-Mail antworten.
+ open_file_from: 'Datei öffnen von'
+ cancel: Abbrechen
+ open: Öffnen
devise:
confirmations:
confirmed: Ihre E-Mail-Adresse wurde erfolgreich bestätigt.
@@ -6266,7 +6296,7 @@ de: &de
settings: 'Einstellungen'
settings_account_description: 'Mit umfangreichen Kontoeinstellungen können Sie das Signiererlebnis anpassen und weitere Benutzer einladen.'
support: 'Support'
- support_description: 'Sie können unseren KI-Assistenten nutzen oder uns bei Fragen an wabosign@wabo.cc schreiben.'
+ support_description: 'Sie können unseren KI-Assistenten nutzen oder uns bei Fragen an support@wabosign.com schreiben.'
settings_template_description: 'Über diese Schaltfläche gelangen Sie zu den Kontoeinstellungen.'
doorkeeper:
scopes:
@@ -6371,7 +6401,7 @@ pl:
profile_details: Szczegóły profilu
sign_up_with_google: Zarejestruj się przez Google
sign_up_with_microsoft: Zarejestruj się przez Microsoft
- by_creating_an_account_you_agree_to_our_html: 'Tworząc konto, akceptujesz naszą Politykę Prywatności i Regulamin.'
+ by_creating_an_account_you_agree_to_our_html: 'Tworząc konto, akceptujesz naszą Politykę Prywatności i Regulamin.'
enter_email_to_continue: Wprowadź e-mail, aby kontynuować
the_code_has_been_sent_to_your_email: Kod został wysłany na Twój e-mail.
enter_the_verification_code_from_your_email: Wprowadź kod weryfikacyjny z Twojego e-maila.
@@ -6379,8 +6409,6 @@ pl:
verification_code: Kod Weryfikacyjny
resend_code: Wyślij Kod Ponownie
powered_by: 'Napędzany przez'
- based_on: based on
- view_on_github: View on GitHub
count_documents_signed_with_html: '%{count} dokumentów podpisanych za pomocą'
open_source_documents_software: 'oprogramowanie do dokumentów open source'
eu_data_residency: Dane w UE
@@ -6400,7 +6428,7 @@ pl:
your_verification_code_to_access_the_name: 'Twój kod weryfikacyjny do uzyskania dostępu do "%{name}":'
please_reply_to_this_email_if_you_didnt_request_this: Odpowiedz na ten e-mail, jeśli nie prosiłeś o to.
your_user_account_has_been_archived_contact_your_administrator_to_restore_access_to_your_account: Twoje konto użytkownika zostało zarchiwizowane. Skontaktuj się z administratorem, aby przywrócić dostęp do konta.
- your_email_could_not_be_reached_this_may_happen_if_there_was_a_typo_in_your_address_or_if_your_mailbox_is_not_available_please_contact_support_email_to_log_in: Nie udało się uzyskać dostępu do Twojego adresu e-mail. Może to być spowodowane literówką w adresie lub niedostępnością skrzynki. Skontaktuj się z wabosign@wabo.cc, aby się zalogować.
+ your_email_could_not_be_reached_this_may_happen_if_there_was_a_typo_in_your_address_or_if_your_mailbox_is_not_available_please_contact_support_email_to_log_in: Nie udało się uzyskać dostępu do Twojego adresu e-mail. Może to być spowodowane literówką w adresie lub niedostępnością skrzynki. Skontaktuj się z support@wabosign.com, aby się zalogować.
verification_required_refresh_the_page_and_pass_2fa: Weryfikacja wymagana, odśwież stronę i przejdź uwierzytelnienie dwuskładnikowe.
the_sender_has_requested_a_two_factor_authentication_via_one_time_password_sent_to_your_email_html: Nadawca zażądał uwierzytelniania dwuskładnikowego za pośrednictwem hasła jednorazowego wysłanego na Twój adres e-mail %{email}.
please_contact_the_requester_to_specify_your_email_for_two_factor_authentication: Skontaktuj się z nadawcą, aby podać swój adres e-mail do uwierzytelniania dwuskładnikowego.
@@ -6474,7 +6502,7 @@ uk:
profile_details: Дані профілю
sign_up_with_google: Зареєструватися через Google
sign_up_with_microsoft: Зареєструватися через Microsoft
- by_creating_an_account_you_agree_to_our_html: 'Створюючи акаунт, ви погоджуєтесь з нашою Політикою конфіденційності і Умовами надання послуг.'
+ by_creating_an_account_you_agree_to_our_html: 'Створюючи акаунт, ви погоджуєтесь з нашою Політикою конфіденційності і Умовами надання послуг.'
enter_email_to_continue: Введіть електронну пошту, щоб продовжити
the_code_has_been_sent_to_your_email: Код було надіслано на вашу електронну пошту.
enter_the_verification_code_from_your_email: Введіть код перевірки з вашої електронної пошти.
@@ -6482,8 +6510,6 @@ uk:
verification_code: Код перевірки
resend_code: Надіслати код знову
powered_by: 'Працює на базі'
- based_on: based on
- view_on_github: View on GitHub
count_documents_signed_with_html: '%{count} документів підписано за допомогою'
open_source_documents_software: 'відкрите програмне забезпечення для документів'
eu_data_residency: 'Зберігання даних в ЄС'
@@ -6503,7 +6529,7 @@ uk:
your_verification_code_to_access_the_name: 'Ваш код доступу до "%{name}":'
please_reply_to_this_email_if_you_didnt_request_this: Відповідайте на цей лист, якщо ви цього не запитували.
your_user_account_has_been_archived_contact_your_administrator_to_restore_access_to_your_account: Ваш обліковий запис було архівовано. Зверніться до адміністратора, щоб відновити доступ.
- your_email_could_not_be_reached_this_may_happen_if_there_was_a_typo_in_your_address_or_if_your_mailbox_is_not_available_please_contact_support_email_to_log_in: Не вдалося отримати доступ до вашої електронної пошти. Це може статися, якщо була допущена помилка в адресі або ваша скринька недоступна. Зверніться до wabosign@wabo.cc, щоб увійти.
+ your_email_could_not_be_reached_this_may_happen_if_there_was_a_typo_in_your_address_or_if_your_mailbox_is_not_available_please_contact_support_email_to_log_in: Не вдалося отримати доступ до вашої електронної пошти. Це може статися, якщо була допущена помилка в адресі або ваша скринька недоступна. Зверніться до support@wabosign.com, щоб увійти.
verification_required_refresh_the_page_and_pass_2fa: Необхідна верифікація, оновіть сторінку та пройдіть двофакторну автентифікацію.
the_sender_has_requested_a_two_factor_authentication_via_one_time_password_sent_to_your_email_html: Відправник запитав двофакторну автентифікацію за допомогою одноразового пароля, надісланого на вашу електронну пошту %{email}.
please_contact_the_requester_to_specify_your_email_for_two_factor_authentication: Будь ласка, зв'яжіться з відправником, щоб вказати вашу електронну пошту для двофакторної автентифікації.
@@ -6577,7 +6603,7 @@ cs:
profile_details: Detaily profilu
sign_up_with_google: Zaregistrovat se pomocí Googlu
sign_up_with_microsoft: Zaregistrovat se pomocí Microsoftu
- by_creating_an_account_you_agree_to_our_html: 'Vytvořením účtu souhlasíte s našimi Zásadami ochrany osobních údajů a Podmínkami služby.'
+ by_creating_an_account_you_agree_to_our_html: 'Vytvořením účtu souhlasíte s našimi Zásadami ochrany osobních údajů a Podmínkami služby.'
enter_email_to_continue: Zadejte e-mail pro pokračování
the_code_has_been_sent_to_your_email: Kód byl odeslán na váš e-mail.
enter_the_verification_code_from_your_email: Zadejte ověřovací kód z vašeho e-mailu.
@@ -6585,8 +6611,6 @@ cs:
verification_code: Ověřovací kód
resend_code: Znovu odeslat kód
powered_by: 'Poháněno'
- based_on: based on
- view_on_github: View on GitHub
count_documents_signed_with_html: '%{count} dokumentů podepsáno pomocí'
open_source_documents_software: 'open source software pro dokumenty'
eu_data_residency: 'Uložení dat v EU'
@@ -6606,7 +6630,7 @@ cs:
your_verification_code_to_access_the_name: 'Váš ověřovací kód pro přístup k "%{name}":'
please_reply_to_this_email_if_you_didnt_request_this: Odpovězte na tento e-mail, pokud jste o to nežádali.
your_user_account_has_been_archived_contact_your_administrator_to_restore_access_to_your_account: Váš uživatelský účet byl archivován. Kontaktujte svého administrátora pro obnovení přístupu.
- your_email_could_not_be_reached_this_may_happen_if_there_was_a_typo_in_your_address_or_if_your_mailbox_is_not_available_please_contact_support_email_to_log_in: Na váš e-mail se nepodařilo doručit zprávu. To se může stát, pokud je v adrese překlep nebo vaše schránka není dostupná. Pro přihlášení kontaktujte wabosign@wabo.cc.
+ your_email_could_not_be_reached_this_may_happen_if_there_was_a_typo_in_your_address_or_if_your_mailbox_is_not_available_please_contact_support_email_to_log_in: Na váš e-mail se nepodařilo doručit zprávu. To se může stát, pokud je v adrese překlep nebo vaše schránka není dostupná. Pro přihlášení kontaktujte support@wabosign.com.
verification_required_refresh_the_page_and_pass_2fa: Ověření vyžadováno. Aktualizujte stránku a dokončete dvoufaktorové ověření.
the_sender_has_requested_a_two_factor_authentication_via_one_time_password_sent_to_your_email_html: Odesílatel požádal o dvoufaktorové ověření pomocí jednorázového hesla odeslaného na vaši e-mailovou adresu %{email}.
please_contact_the_requester_to_specify_your_email_for_two_factor_authentication: Prosím kontaktujte odesílatele a uveďte svůj e-mail pro dvoufaktorové ověření.
@@ -6680,7 +6704,7 @@ he:
profile_details: פרטי הפרופיל
sign_up_with_google: הירשם עם גוגל
sign_up_with_microsoft: הירשם עם מיקרוסופט
- by_creating_an_account_you_agree_to_our_html: 'על ידי יצירת חשבון, אתה מסכים למדיניות הפרטיות ולתנאי השירות שלנו.'
+ by_creating_an_account_you_agree_to_our_html: 'על ידי יצירת חשבון, אתה מסכים למדיניות הפרטיות ולתנאי השירות שלנו.'
enter_email_to_continue: הכנס דוא"ל כדי להמשיך
the_code_has_been_sent_to_your_email: הקוד נשלח לדוא"ל שלך.
enter_the_verification_code_from_your_email: הזן את קוד האימות מדוא"ל שלך.
@@ -6688,8 +6712,6 @@ he:
verification_code: קוד אימות
resend_code: שלח קוד מחדש
powered_by: 'מופעל על ידי'
- based_on: based on
- view_on_github: View on GitHub
count_documents_signed_with_html: '%{count} מסמכים נחתמו באמצעות'
open_source_documents_software: 'תוכנה בקוד פתוח למסמכים'
eu_data_residency: 'נתונים באיחוד האירופי'
@@ -6709,7 +6731,7 @@ he:
your_verification_code_to_access_the_name: 'קוד האימות שלך לגישה ל-%{name}:'
please_reply_to_this_email_if_you_didnt_request_this: 'השב למייל זה אם לא ביקשת זאת.'
your_user_account_has_been_archived_contact_your_administrator_to_restore_access_to_your_account: החשבון שלך הועבר לארכיון. פנה למנהל המערכת כדי לשחזר את הגישה.
- your_email_could_not_be_reached_this_may_happen_if_there_was_a_typo_in_your_address_or_if_your_mailbox_is_not_available_please_contact_support_email_to_log_in: לא ניתן היה לגשת לדוא"ל שלך. ייתכן שזה קרה עקב שגיאת כתיב בכתובת או אם תיבת הדואר אינה זמינה. אנא פנה ל־wabosign@wabo.cc כדי להתחבר.
+ your_email_could_not_be_reached_this_may_happen_if_there_was_a_typo_in_your_address_or_if_your_mailbox_is_not_available_please_contact_support_email_to_log_in: לא ניתן היה לגשת לדוא"ל שלך. ייתכן שזה קרה עקב שגיאת כתיב בכתובת או אם תיבת הדואר אינה זמינה. אנא פנה ל־support@wabosign.com כדי להתחבר.
verification_required_refresh_the_page_and_pass_2fa: נדרש אימות. רענן את הדף והשלם אימות דו-שלבי.
the_sender_has_requested_a_two_factor_authentication_via_one_time_password_sent_to_your_email_html: השולח ביקש אימות דו-שלבי באמצעות סיסמה חד-פעמית שנשלחה לכתובת הדוא"ל שלך %{email}.
please_contact_the_requester_to_specify_your_email_for_two_factor_authentication: אנא פנה לשולח וציין את כתובת הדוא"ל שלך לאימות דו-שלבי.
@@ -6786,8 +6808,8 @@ nl: &nl
you_have_been_invited_to_account_name_product_name_please_sign_up_using_the_link_below_: 'U bent uitgenodigd voor %{account_name} %{product_name}. Meld u aan via de onderstaande link:'
sent_using_product_name_in_testing_mode_html: Verzonden met %{product_name} in testmodus
sent_using_product_name_free_document_signing_html: Verzonden met %{product_name} gratis documentondertekening.
- sent_with_wabosign_pro_html: Verzonden met WaboSign Pro
- show_send_with_wabosign_pro_attribution_in_emails_html: Toon de vermelding 'Verzonden met WaboSign Pro' in e-mails
+ sent_with_docuseal_pro_html: Verzonden met WaboSign Pro
+ show_send_with_docuseal_pro_attribution_in_emails_html: Toon de vermelding 'Verzonden met WaboSign Pro' in e-mails
? sign_documents_with_trusted_certificate_provided_by_docu_seal_your_documents_and_data_are_never_shared_with_docu_seal_p_d_f_checksum_is_provided_to_generate_a_trusted_signature
: Onderteken documenten met een vertrouwd certificaat geleverd door WaboSign. Uw documenten en gegevens worden nooit gedeeld met WaboSign. PDF-checksum wordt verstrekt om een vertrouwde handtekening te genereren.
you_have_been_invited_to_submit_the_name_form: U bent uitgenodigd om het formulier "%{name}" in te dienen.
@@ -6891,7 +6913,7 @@ nl: &nl
profile_details: Profielgegevens
sign_up_with_google: Registreren met Google
sign_up_with_microsoft: Registreren met Microsoft
- by_creating_an_account_you_agree_to_our_html: Door een account aan te maken gaat u akkoord met ons Privacybeleid en onze Servicevoorwaarden.
+ by_creating_an_account_you_agree_to_our_html: Door een account aan te maken gaat u akkoord met ons Privacybeleid en onze Servicevoorwaarden.
enter_email_to_continue: Voer e-mailadres in om door te gaan
account: Account
preferences: Voorkeuren
@@ -6913,7 +6935,7 @@ nl: &nl
combine_completed_documents_and_audit_log: Voltooide documenten en auditlogboek combineren
salesforce_integration: Salesforce-integratie
salesforce_has_been_connected: Salesforce is verbonden.
- connect_salesforce_account_to_integrate_with_wabosign: Verbind een Salesforce-account om te integreren met WaboSign
+ connect_salesforce_account_to_integrate_with_docuseal: Verbind een Salesforce-account om te integreren met WaboSign
re_connect_salesforce: Salesforce opnieuw verbinden
connect_salesforce: Salesforce verbinden
danger_zone: Gevarenzone
@@ -6942,13 +6964,13 @@ nl: &nl
resetting_password: Wachtwoord resetten
sign_in_with_name_account: Inloggen met %{name}-account
two_factor_code_from_authenticator_app: Twee-factorcode van authenticator-app
- sign_up_in_wabosign_console_to_upgrade_on_premises_app_is_completely_standalone_console_is_used_only_to_manage_your_license: Meld u aan in de WaboSign Console om te upgraden. De on-premises app is volledig zelfstandig; de Console wordt alleen gebruikt om uw licentie te beheren.
+ sign_up_in_docuseal_console_to_upgrade_on_premises_app_is_completely_standalone_console_is_used_only_to_manage_your_license: Meld u aan in de WaboSign Console om te upgraden. De on-premises app is volledig zelfstandig; de Console wordt alleen gebruikt om uw licentie te beheren.
send_from_email: Verzenden vanaf e-mailadres
optional: optioneel
save: Opslaan
saving: Opslaan
changes_have_been_saved: Wijzigingen zijn opgeslagen.
- unlock_with_wabosign_pro: Ontgrendel met WaboSign Pro
+ unlock_with_docuseal_pro: Ontgrendel met WaboSign Pro
use_your_own_certificates_to_sign_and_verify_pdf_files: Gebruik uw eigen certificaten om PDF-bestanden te ondertekenen en te verifiëren.
upload_certificate: Certificaat uploaden
name: Naam
@@ -6992,6 +7014,7 @@ nl: &nl
code_is_invalid: Code is ongeldig
2fa_has_been_removed: 2FA is verwijderd.
2fa_has_been_set_up_already: 2FA is al ingesteld.
+ developer_newsletters: Nieuwsbrieven voor ontwikkelaars
skip: Overslaan
email_notifications: E-mailmeldingen
receive_notification_emails_on_completed_submission: Ontvang e-mailmeldingen bij voltooide inzendingen
@@ -7047,7 +7070,7 @@ nl: &nl
password_has_been_changed: Wachtwoord is gewijzigd.
email_integration: E-mailintegratie
send_via_connected_email: Verzenden via gekoppeld e-mailaccount
- activate_with_wabosign_pro: Activeren met WaboSign Pro
+ activate_with_docuseal_pro: Activeren met WaboSign Pro
send_signature_request_to_your_recipients_directly_from_your_email: Stuur een ondertekenverzoek rechtstreeks vanuit uw eigen e-mail naar uw ontvangers
connect_gmail: Gmail verbinden
re_connect_gmail: Gmail opnieuw verbinden
@@ -7068,8 +7091,6 @@ nl: &nl
sign_out: Afmelden
page_number: Pagina %{number}
powered_by: Aangedreven door
- based_on: based on
- view_on_github: View on GitHub
qr_code: QR-code
print: Afdrukken
scan_the_qr_code_above_with_your_phone_camera_to_open_and_sign_this_document: Scan de bovenstaande QR-code met je telefooncamera om dit document te openen en te ondertekenen.
@@ -7129,7 +7150,7 @@ nl: &nl
upgrade_to_send_unlimited_signature_requests: Upgrade om onbeperkte ondertekenverzoeken te verzenden
add_without_sending: Toevoegen zonder te verzenden
upgade_now: Nu upgraden
- send_signature_request_emails_without_limits_with_wabosign_pro: Verzend onbeperkt e-mails voor ondertekenverzoeken met WaboSign Pro
+ send_signature_request_emails_without_limits_with_docuseal_pro: Verzend onbeperkt e-mails voor ondertekenverzoeken met WaboSign Pro
count_emails_used: "%{count} e-mails gebruikt"
has_been_connected: is verbonden
sms_not_configured: SMS niet geconfigureerd
@@ -7231,7 +7252,7 @@ nl: &nl
new_user: Nieuwe gebruiker
unarchive: Dearchiveren
last_session: Laatste sessie
- unlock_more_user_roles_with_wabosign_pro: Ontgrendel meer gebruikersrollen met WaboSign Pro.
+ unlock_more_user_roles_with_docuseal_pro: Ontgrendel meer gebruikersrollen met WaboSign Pro.
view_active: Actieve items bekijken
team_account: Teamaccount
team_accounts: Teamaccounts
@@ -7360,6 +7381,9 @@ nl: &nl
create_a_new_template_document_form_or_submit_the_existing_one_html: Maak een nieuw sjabloon voor een documentformulier of dien het bestaande in
send_email_copy_with_completed_documents_to_a_specified_bcc_address: Stuur een e-mailkopie met voltooide documenten naar een opgegeven BCC-adres.
re_send_email: E-mail opnieuw verzenden
+ re_send_emails: E-mails verzenden
+ are_you_sure_you_want_to_re_send_email_to_n_recipients: Weet je zeker dat je de uitnodigings-e-mail opnieuw wilt verzenden naar %{count} ontvangers?
+ emails_have_been_sent_to_n_recipients: De e-mails zijn verzonden naar %{count} ontvangers.
send_email: E-mail verzenden
copy_share_link: Deellink kopiëren
copied_to_clipboard: Gekopieerd naar klembord
@@ -7452,25 +7476,25 @@ nl: &nl
seamlessly_automate_your_document_signing_process_with_make_com: Automatiseer uw documentondertekeningsproces naadloos met Make.com.
find_suitable_zapier_templates_to_automate_your_workflow: Vind geschikte Zapier-sjablonen om uw workflow te automatiseren.
get_started: Aan de slag
- click_here_to_learn_more_about_user_roles_and_permissions_html: Klik hier voor meer informatie over gebruikersrollen en machtigingen.
+ click_here_to_learn_more_about_user_roles_and_permissions_html: Klik hier voor meer informatie over gebruikersrollen en machtigingen.
count_10_signature_request_emails_sent_this_month_upgrade_to_pro_to_send_unlimited_signature_request_email: "%{count} / 10 e-mails voor ondertekenverzoeken deze maand verzonden. Upgrade naar Pro om onbeperkt e-mails voor ondertekenverzoeken te verzenden."
test_mode_emails_limit_will_be_reset_within_24_hours: Limiet voor testmodus-e-mails wordt binnen 24 uur opnieuw ingesteld.
- on_a_scale_of_1_to_10_how_satisfied_are_you_with_the_wabosign_product_: Op een schaal van 1 tot 10, hoe tevreden bent u over het WaboSign-product?
+ on_a_scale_of_1_to_10_how_satisfied_are_you_with_the_docuseal_product_: Op een schaal van 1 tot 10, hoe tevreden bent u over het WaboSign-product?
tell_us_more_about_your_experience: Vertel ons meer over uw ervaring
extremely_dissatisfied: Zeer ontevreden
extremely_satisfied: Zeer tevreden
your_pro_plan_payment_is_overdue: Uw betaling voor het Pro-abonnement is achterstallig.
click_here_to_update_your_payment_details_and_clear_the_invoice_to_ensure_uninterrupted_service_html: Klik hier om uw betaalgegevens bij te werken en de factuur te voldoen om ononderbroken service te garanderen.
overdue_payment: Achterstallige betaling
- your_pro_plan_has_been_suspended_due_to_unpaid_invoices_you_can_update_your_payment_details_to_settle_the_invoice_and_continue_using_wabosign_or_cancel_your_subscription: Uw Pro-abonnement is opgeschort vanwege onbetaalde facturen. U kunt uw betaalgegevens bijwerken om de factuur te voldoen en WaboSign te blijven gebruiken of uw abonnement opzeggen.
+ your_pro_plan_has_been_suspended_due_to_unpaid_invoices_you_can_update_your_payment_details_to_settle_the_invoice_and_continue_using_docuseal_or_cancel_your_subscription: Uw Pro-abonnement is opgeschort vanwege onbetaalde facturen. U kunt uw betaalgegevens bijwerken om de factuur te voldoen en WaboSign te blijven gebruiken of uw abonnement opzeggen.
manage_subscription: Abonnement beheren
submission_created_by_email_html: "Inzending aangemaakt door %{email}"
submission_created_by_email_via_source_html: "Inzending aangemaakt door %{email} via %{source}"
submission_created_via_source_html: "Inzending aangemaakt via %{source}"
pro_user_seats_used: Gebruikersplaatsen Pro gebruikt
manage_plan: Abonnement beheren
- this_submission_has_multiple_signers_which_prevents_the_use_of_a_sharing_link_html: Deze inzending heeft meerdere ondertekenaars, waardoor het gebruik van een deellink niet mogelijk is omdat onduidelijk is welke ondertekenaar verantwoordelijk is voor specifieke velden. Volg deze handleiding om de standaardgegevens van de ondertekenaar te definiëren.
- welcome_to_wabosign: Welkom bij WaboSign
+ this_submission_has_multiple_signers_which_prevents_the_use_of_a_sharing_link_html: Deze inzending heeft meerdere ondertekenaars, waardoor het gebruik van een deellink niet mogelijk is omdat onduidelijk is welke ondertekenaar verantwoordelijk is voor specifieke velden. Volg deze handleiding om de standaardgegevens van de ondertekenaar te definiëren.
+ welcome_to_docuseal: Welkom bij WaboSign
start_a_quick_tour_to_learn_how_to_create_and_send_your_first_document: Start een korte rondleiding om te leren hoe u uw eerste document maakt en verzendt
start_tour: Rondleiding starten
name_a_z: Naam A-Z
@@ -7542,13 +7566,13 @@ nl: &nl
use_otp_code_to_access_the_api_key_html: Gebruik de code %{code} om toegang te krijgen tot de API-sleutel.
please_reply_to_this_email_if_you_dont_recognize_this_request: Reageer op deze e-mail als u dit verzoek niet herkent.
your_user_account_has_been_archived_contact_your_administrator_to_restore_access_to_your_account: Uw gebruikersaccount is gearchiveerd. Neem contact op met uw beheerder om de toegang tot uw account te herstellen.
- your_email_could_not_be_reached_this_may_happen_if_there_was_a_typo_in_your_address_or_if_your_mailbox_is_not_available_please_contact_support_email_to_log_in: Uw e-mailadres kon niet worden bereikt. Dit kan gebeuren als er een typefout in uw adres zit of als uw mailbox niet beschikbaar is. Neem contact op met wabosign@wabo.cc om in te loggen.
+ your_email_could_not_be_reached_this_may_happen_if_there_was_a_typo_in_your_address_or_if_your_mailbox_is_not_available_please_contact_support_email_to_log_in: Uw e-mailadres kon niet worden bereikt. Dit kan gebeuren als er een typefout in uw adres zit of als uw mailbox niet beschikbaar is. Neem contact op met support@wabosign.com om in te loggen.
efficient_search_with_search_index: Efficiënt zoeken met zoekindex
reindex: Opnieuw indexeren
build_search_index: Zoekindex opbouwen
require_two_factor_authentication_2fa_with_an_authenticator_app_e_g_google_authenticator_authy_all_users_signing_documents_must_pass_the_second_factor_verification_using_a_secure_code_in_addition_to_their_password: Tweeledige verificatie (2FA) met een authenticator-app (bijv. Google Authenticator, Authy) vereisen. Alle gebruikers die documenten ondertekenen moeten naast hun wachtwoord de tweede factor verifiëren met een beveiligde code.
- add_a_unique_signature_id_and_timestamp_to_each_signature_for_audit_and_traceability_purposes_along_with_the_timestamp_part_of_wabosigns_21_cfr_part_11_compliance_settings: Voeg voor audit- en traceerbaarheidsdoeleinden een unieke handtekening-ID en tijdstempel toe aan elke handtekening. Onderdeel van de 21 CFR Part 11-nalevingsinstellingen van WaboSign.
- require_signer_to_provide_a_reason_for_signing_before_completing_their_signature_e_g_approvals_certifications_part_of_wabosigns_21_cfr_part_11_compliance_settings: Vereist dat de ondertekenaar vóór het voltooien van zijn handtekening een reden opgeeft (bijv. goedkeuringen, certificeringen). Onderdeel van de 21 CFR Part 11-nalevingsinstellingen van WaboSign.
+ add_a_unique_signature_id_and_timestamp_to_each_signature_for_audit_and_traceability_purposes_along_with_the_timestamp_part_of_docuseals_21_cfr_part_11_compliance_settings: Voeg voor audit- en traceerbaarheidsdoeleinden een unieke handtekening-ID en tijdstempel toe aan elke handtekening. Onderdeel van de 21 CFR Part 11-nalevingsinstellingen van WaboSign.
+ require_signer_to_provide_a_reason_for_signing_before_completing_their_signature_e_g_approvals_certifications_part_of_docuseals_21_cfr_part_11_compliance_settings: Vereist dat de ondertekenaar vóór het voltooien van zijn handtekening een reden opgeeft (bijv. goedkeuringen, certificeringen). Onderdeel van de 21 CFR Part 11-nalevingsinstellingen van WaboSign.
allow_signers_to_create_signatures_by_typing_their_name_instead_of_drawing_or_uploading_one: Sta ondertekenaars toe handtekeningen te maken door hun naam te typen in plaats van te tekenen of te uploaden.
allow_signers_to_resubmit_forms_after_completion_useful_when_corrections_or_multiple_submissions_are_needed: Sta ondertekenaars toe formulieren na voltooiing opnieuw in te dienen; nuttig wanneer correcties of meerdere inzendingen nodig zijn.
allow_recipients_to_decline_signing_a_document_the_decline_reason_notification_will_be_sent_to_the_signature_requester: Sta ontvangers toe het ondertekenen van een document te weigeren. De melding met de reden van weigering wordt naar de aanvrager van de handtekening gestuurd.
@@ -7623,12 +7647,15 @@ nl: &nl
mcp_token_has_been_removed: Het MCP-token is verwijderd.
enable_mcp_server: MCP-server inschakelen
all_existing_mcp_connections_will_be_stopped_immediately_when_this_setting_is_disabled: Alle bestaande MCP-verbindingen worden onmiddellijk gestopt wanneer deze instelling wordt uitgeschakeld.
- connect_to_product_name_mcp: Verbinden met %{product_name} MCP
+ connect_to_docuseal_mcp: Verbinden met WaboSign MCP
add_the_following_to_your_mcp_client_configuration: Voeg het volgende toe aan uw MCP-clientconfiguratie
works_with_claude_desktop_cursor_windsurf_vs_code_and_any_mcp_compatible_client: Werkt met Claude Desktop, Cursor, Windsurf, VS Code en elke MCP-compatibele client.
your_email_address_has_been_changed: Uw e-mailadres is gewijzigd
the_email_address_for_your_account_has_been_changed_to_new_email: Het e-mailadres van uw account is gewijzigd naar %{new_email}.
if_you_did_not_make_this_change_please_contact_us_by_replying_to_this_email: Als u deze wijziging niet hebt aangebracht, neem dan contact met ons op door op deze e-mail te antwoorden.
+ open_file_from: 'Bestand openen van'
+ cancel: Annuleren
+ open: Openen
devise:
confirmations:
confirmed: Uw e-mailadres is succesvol bevestigd.
@@ -7723,7 +7750,7 @@ nl: &nl
settings: Instellingen
settings_account_description: Met uitgebreide accountinstellingen kunt u de eSigning-ervaring aanpassen en meer gebruikers uitnodigen.
support: Ondersteuning
- support_description: U kunt onze selfservice AI-assistent gebruiken of ons e-mailen op wabosign@wabo.cc als u vragen heeft.
+ support_description: U kunt onze selfservice AI-assistent gebruiken of ons e-mailen op support@wabosign.com als u vragen heeft.
settings_template_description: Gebruik deze knop om naar uw accountinstellingenpagina te gaan.
doorkeeper:
scopes:
@@ -7828,7 +7855,7 @@ ar:
profile_details: تفاصيل الملف الشخصي
sign_up_with_google: الاشتراك باستخدام جوجل
sign_up_with_microsoft: الاشتراك باستخدام مايكروسوفت
- by_creating_an_account_you_agree_to_our_html: 'من خلال إنشاء حساب، فإنك توافق على سياسة الخصوصية وشروط الخدمة الخاصة بنا.'
+ by_creating_an_account_you_agree_to_our_html: 'من خلال إنشاء حساب، فإنك توافق على سياسة الخصوصية وشروط الخدمة الخاصة بنا.'
enter_email_to_continue: أدخل البريد الإلكتروني للمتابعة
the_code_has_been_sent_to_your_email: تم إرسال الرمز إلى بريدك الإلكتروني.
enter_the_verification_code_from_your_email: أدخل رمز التحقق من بريدك الإلكتروني.
@@ -7836,8 +7863,6 @@ ar:
verification_code: رمز التحقق
resend_code: إعادة إرسال الرمز
powered_by: 'مشغل بواسطة'
- based_on: based on
- view_on_github: View on GitHub
count_documents_signed_with_html: 'تم توقيع %{count} مستندًا باستخدام'
open_source_documents_software: 'برنامج مستندات مفتوح المصدر'
eu_data_residency: 'بيانات في الاتحاد الأوروبي'
@@ -7857,7 +7882,7 @@ ar:
your_verification_code_to_access_the_name: 'رمز التحقق الخاص بك للوصول إلى "%{name}":'
please_reply_to_this_email_if_you_didnt_request_this: 'يرجى الرد على هذا البريد إذا لم تطلب ذلك.'
your_user_account_has_been_archived_contact_your_administrator_to_restore_access_to_your_account: تمت أرشفة حسابك. يرجى التواصل مع المسؤول لاستعادة الوصول إلى حسابك.
- your_email_could_not_be_reached_this_may_happen_if_there_was_a_typo_in_your_address_or_if_your_mailbox_is_not_available_please_contact_support_email_to_log_in: تعذّر الوصول إلى بريدك الإلكتروني. قد يحدث هذا في حال وجود خطأ في العنوان أو إذا كان صندوق البريد غير متاح. يرجى التواصل مع wabosign@wabo.cc لتسجيل الدخول.
+ your_email_could_not_be_reached_this_may_happen_if_there_was_a_typo_in_your_address_or_if_your_mailbox_is_not_available_please_contact_support_email_to_log_in: تعذّر الوصول إلى بريدك الإلكتروني. قد يحدث هذا في حال وجود خطأ في العنوان أو إذا كان صندوق البريد غير متاح. يرجى التواصل مع support@wabosign.com لتسجيل الدخول.
verification_required_refresh_the_page_and_pass_2fa: مطلوب التحقق. قم بتحديث الصفحة وأكمل المصادقة الثنائية.
the_sender_has_requested_a_two_factor_authentication_via_one_time_password_sent_to_your_email_html: طلب المرسل المصادقة الثنائية عبر كلمة مرور لمرة واحدة مرسلة إلى عنوان بريدك الإلكتروني %{email}.
please_contact_the_requester_to_specify_your_email_for_two_factor_authentication: يرجى الاتصال بالمرسل لتحديد عنوان بريدك الإلكتروني للمصادقة الثنائية.
@@ -7931,7 +7956,7 @@ ko:
profile_details: 프로필 세부 정보
sign_up_with_google: Google로 가입
sign_up_with_microsoft: Microsoft로 가입
- by_creating_an_account_you_agree_to_our_html: '계정을 생성함으로써, 개인정보 처리방침 및 서비스 약관에 동의하게 됩니다.'
+ by_creating_an_account_you_agree_to_our_html: '계정을 생성함으로써, 개인정보 처리방침 및 서비스 약관에 동의하게 됩니다.'
enter_email_to_continue: 계속하려면 이메일을 입력하세요
the_code_has_been_sent_to_your_email: 코드가 이메일로 전송되었습니다.
enter_the_verification_code_from_your_email: 이메일로 받은 인증 코드를 입력하세요.
@@ -7939,8 +7964,6 @@ ko:
verification_code: 인증 코드
resend_code: 코드 재전송
powered_by: '제공:'
- based_on: based on
- view_on_github: View on GitHub
count_documents_signed_with_html: '%{count}개의 문서가 다음을 통해 서명됨'
open_source_documents_software: '오픈소스 문서 소프트웨어'
eu_data_residency: 'EU 데이터 저장 위치'
@@ -7960,7 +7983,7 @@ ko:
your_verification_code_to_access_the_name: '"%{name}"에 액세스하기 위한 인증 코드:'
please_reply_to_this_email_if_you_didnt_request_this: 요청하지 않았다면 이 이메일에 회신하세요.
your_user_account_has_been_archived_contact_your_administrator_to_restore_access_to_your_account: 사용자 계정이 보관되었습니다. 계정 접근을 복원하려면 관리자에게 문의하세요.
- your_email_could_not_be_reached_this_may_happen_if_there_was_a_typo_in_your_address_or_if_your_mailbox_is_not_available_please_contact_support_email_to_log_in: 이메일에 접근할 수 없습니다. 주소에 오타가 있거나 메일박스가 사용 불가능한 경우 발생할 수 있습니다. 로그인하려면 wabosign@wabo.cc에 문의하세요.
+ your_email_could_not_be_reached_this_may_happen_if_there_was_a_typo_in_your_address_or_if_your_mailbox_is_not_available_please_contact_support_email_to_log_in: 이메일에 접근할 수 없습니다. 주소에 오타가 있거나 메일박스가 사용 불가능한 경우 발생할 수 있습니다. 로그인하려면 support@wabosign.com에 문의하세요.
verification_required_refresh_the_page_and_pass_2fa: 인증이 필요합니다. 페이지를 새로 고치고 2단계 인증을 완료하세요.
the_sender_has_requested_a_two_factor_authentication_via_one_time_password_sent_to_your_email_html: 발신자가 %{email} 이메일 주소로 전송된 일회용 비밀번호를 통해 2단계 인증을 요청했습니다.
please_contact_the_requester_to_specify_your_email_for_two_factor_authentication: 2단계 인증을 위해 이메일 주소를 지정하려면 요청자에게 문의하세요.
@@ -8034,7 +8057,7 @@ ja:
profile_details: プロフィールの詳細
sign_up_with_google: Googleで登録
sign_up_with_microsoft: Microsoftで登録
- by_creating_an_account_you_agree_to_our_html: 'プライバシーポリシーおよび利用規約に同意の上、アカウントを作成します。'
+ by_creating_an_account_you_agree_to_our_html: 'プライバシーポリシーおよび利用規約に同意の上、アカウントを作成します。'
enter_email_to_continue: 続行するにはメールを入力してください
the_code_has_been_sent_to_your_email: コードがあなたのメールに送信されました
enter_the_verification_code_from_your_email: メールに記載された認証コードを入力してください
@@ -8042,8 +8065,6 @@ ja:
verification_code: 認証コード
resend_code: コードを再送信
powered_by: '提供元:'
- based_on: based on
- view_on_github: View on GitHub
count_documents_signed_with_html: '%{count} 件のドキュメントが以下で署名されました'
open_source_documents_software: 'オープンソースのドキュメントソフトウェア'
eu_data_residency: 'EU データ保存場所'
@@ -8063,7 +8084,7 @@ ja:
your_verification_code_to_access_the_name: '"%{name}" へアクセスするための認証コード:'
please_reply_to_this_email_if_you_didnt_request_this: このリクエストを行っていない場合は、このメールに返信してください。
your_user_account_has_been_archived_contact_your_administrator_to_restore_access_to_your_account: あなたのユーザーアカウントはアーカイブされました。アクセスを復元するには管理者に連絡してください。
- your_email_could_not_be_reached_this_may_happen_if_there_was_a_typo_in_your_address_or_if_your_mailbox_is_not_available_please_contact_support_email_to_log_in: メールにアクセスできませんでした。アドレスの入力ミスやメールボックスが利用できない場合に発生することがあります。ログインするには wabosign@wabo.cc に連絡してください。
+ your_email_could_not_be_reached_this_may_happen_if_there_was_a_typo_in_your_address_or_if_your_mailbox_is_not_available_please_contact_support_email_to_log_in: メールにアクセスできませんでした。アドレスの入力ミスやメールボックスが利用できない場合に発生することがあります。ログインするには support@wabosign.com に連絡してください。
verification_required_refresh_the_page_and_pass_2fa: 認証が必要です。ページを更新して2段階認証を完了してください。
the_sender_has_requested_a_two_factor_authentication_via_one_time_password_sent_to_your_email_html: 送信者は、%{email} メールアドレスに送信されたワンタイムパスワードによる2段階認証を要求しました。
please_contact_the_requester_to_specify_your_email_for_two_factor_authentication: 2段階認証用にメールアドレスを指定するために、送信者にお問い合わせください。
diff --git a/config/routes.rb b/config/routes.rb
index 0e7643ee..f6e19cdd 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -14,15 +14,8 @@ Rails.application.routes.draw do
get 'up' => 'rails/health#show'
get 'manifest' => 'pwa#manifest'
- # User is always :omniauthable (see app/models/user.rb); the strategy is
- # registered with a setup proc in config/initializers/devise.rb that pulls
- # live credentials from ENV or the database at request time.
- devise_for :users, path: '/', only: %i[sessions passwords omniauth_callbacks],
- controllers: {
- sessions: 'sessions',
- passwords: 'passwords',
- omniauth_callbacks: 'users/omniauth_callbacks'
- }
+ devise_for :users, path: '/', only: %i[sessions passwords],
+ controllers: { sessions: 'sessions', passwords: 'passwords' }
devise_scope :user do
resource :invitation, only: %i[update] do
@@ -63,9 +56,11 @@ Rails.application.routes.draw do
resources :account_custom_fields, only: %i[create]
resources :user_configs, only: %i[create]
resources :encrypted_user_configs, only: %i[destroy]
- resources :timestamp_server, only: %i[create]
+ resources :timestamp_server, only: %i[create] unless Wabosign.multitenant?
resources :dashboard, only: %i[index]
resources :setup, only: %i[index create]
+ resource :newsletter, only: %i[show update]
+ resources :enquiries, only: %i[create]
resources :users, only: %i[new create edit update destroy] do
resource :send_reset_password, only: %i[update], controller: 'users_send_reset_password'
end
@@ -80,6 +75,9 @@ Rails.application.routes.draw do
resources :resend_email, only: %i[create], controller: 'submissions_resend_email'
end
resources :submitters, only: %i[edit update]
+ resources :console_redirect, only: %i[index]
+ resources :upgrade, only: %i[index], controller: 'console_redirect'
+ resources :manage, only: %i[index], controller: 'console_redirect'
resource :testing_account, only: %i[create destroy]
resources :testing_api_settings, only: %i[index]
resources :submitters_autocomplete, only: %i[index]
@@ -102,7 +100,7 @@ Rails.application.routes.draw do
resource :debug, only: %i[show], controller: 'templates_debug' if Rails.env.development?
resources :documents, only: %i[index create], controller: 'template_documents'
resources :clone_and_replace, only: %i[create], controller: 'templates_clone_and_replace'
- resources :detect_fields, only: %i[create], controller: 'templates_detect_fields'
+ resources :detect_fields, only: %i[create], controller: 'templates_detect_fields' unless Wabosign.multitenant?
resources :restore, only: %i[create], controller: 'templates_restore'
resources :archived, only: %i[index], controller: 'templates_archived_submissions'
resources :submissions, only: %i[new create]
@@ -111,7 +109,7 @@ Rails.application.routes.draw do
resource :form, only: %i[show], controller: 'templates_form_preview'
resource :code_modal, only: %i[show], controller: 'templates_code_modal'
resource :preferences, only: %i[show create destroy], controller: 'templates_preferences'
- resources :versions, only: %i[index show], controller: 'templates_versions'
+ resources :versions, only: %i[index show create], controller: 'templates_versions'
resource :share_link, only: %i[show create], controller: 'templates_share_link'
resource :share_link_qr, only: %i[show], controller: 'templates_share_link_qr'
resources :recipients, only: %i[create], controller: 'templates_recipients'
@@ -174,18 +172,13 @@ Rails.application.routes.draw do
resources :download, only: %i[index], controller: 'submitters_download', constraints: { submitter_id: /\d+/ }
resources :download, only: %i[index], controller: 'submit_form_completed_download'
resources :send_email, only: %i[create], controller: 'submitters_send_email'
- resources :send_sms, only: %i[create], controller: 'submitters_send_sms'
end
scope '/settings', as: :settings do
unless Wabosign.multitenant?
resources :storage, only: %i[index create], controller: 'storage_settings'
resources :search_entries_reindex, only: %i[create]
- resources :sms, only: %i[index create], controller: 'sms_settings' do
- collection do
- post :test_message
- end
- end
+ resources :sms, only: %i[index], controller: 'sms_settings'
resources :mcp, only: %i[index new create destroy], controller: 'mcp_settings'
end
if Wabosign.demo? || !Wabosign.multitenant?
@@ -193,7 +186,7 @@ Rails.application.routes.draw do
resource :reveal_access_token, only: %i[show create], controller: 'reveal_access_token'
end
resources :email, only: %i[index create], controller: 'email_smtp_settings'
- resources :sso, only: %i[index create], controller: 'sso_settings'
+ resources :sso, only: %i[index], controller: 'sso_settings'
resources :notifications, only: %i[index create], controller: 'notifications_settings'
resource :esign, only: %i[show create new update destroy], controller: 'esign_settings'
resources :users, only: %i[index]
@@ -202,7 +195,6 @@ Rails.application.routes.draw do
resources :integration_users, only: %i[index], path: 'users/:status', controller: 'users',
defaults: { status: :integration }
resource :personalization, only: %i[show create], controller: 'personalization_settings'
- resource :account_logo, only: %i[create destroy], controller: 'account_logo'
resources :webhooks, only: %i[index show new create update destroy], controller: 'webhook_settings' do
post :resend
diff --git a/db/schema.rb b/db/schema.rb
index 8c95db68..d8d7d1cb 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
-ActiveRecord::Schema[8.1].define(version: 2026_05_15_200000) do
+ActiveRecord::Schema[8.1].define(version: 2026_05_06_121640) do
# These are extensions that must be enabled in order to support this database
enable_extension "btree_gin"
enable_extension "pg_catalog.plpgsql"
@@ -513,20 +513,17 @@ ActiveRecord::Schema[8.1].define(version: 2026_05_15_200000) do
t.datetime "locked_at"
t.boolean "otp_required_for_login", default: false, null: false
t.string "otp_secret"
- t.string "provider"
t.datetime "remember_created_at"
t.datetime "reset_password_sent_at"
t.string "reset_password_token"
t.string "role", null: false
t.integer "sign_in_count", default: 0, null: false
- t.string "uid"
t.string "unconfirmed_email"
t.string "unlock_token"
t.datetime "updated_at", null: false
t.string "uuid", null: false
t.index ["account_id"], name: "index_users_on_account_id"
t.index ["email"], name: "index_users_on_email", unique: true
- t.index ["provider", "uid"], name: "index_users_on_provider_and_uid", unique: true, where: "(provider IS NOT NULL)"
t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
t.index ["unlock_token"], name: "index_users_on_unlock_token", unique: true
t.index ["uuid"], name: "index_users_on_uuid", unique: true
diff --git a/docker-compose.yml b/docker-compose.yml
index c6415b18..aae9458c 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -3,7 +3,7 @@ services:
depends_on:
postgres:
condition: service_healthy
- image: ghcr.io/wabolabs/wabosign:latest
+ image: wabosign/wabosign:latest
ports:
- 3000:3000
volumes:
diff --git a/docs/api/csharp.md b/docs/api/csharp.md
new file mode 100644
index 00000000..2218da17
--- /dev/null
+++ b/docs/api/csharp.md
@@ -0,0 +1,3895 @@
+### List all submissions
+
+The API endpoint provides the ability to retrieve a list of available submissions.
+
+```csharp
+var client = new RestClient("https://api.wabosign.com/submissions");
+var request = new RestRequest("", Method.Get);
+request.AddHeader("X-Auth-Token", "API_KEY");
+var response = client.Execute(request);
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "List all submissions",
+ "operationId": "getSubmissions",
+ "parameters": [
+ {
+ "name": "template_id",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The template ID allows you to receive only the submissions created from that specific template."
+ },
+ {
+ "name": "status",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string",
+ "enum": [
+ "pending",
+ "completed",
+ "declined",
+ "expired"
+ ]
+ },
+ "description": "Filter submissions by status."
+ },
+ {
+ "name": "q",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter submissions based on submitters name, email or phone partial match."
+ },
+ {
+ "name": "slug",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter submissions by unique slug.",
+ "example": "NtLDQM7eJX2ZMd"
+ },
+ {
+ "name": "template_folder",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter submissions by template folder name."
+ },
+ {
+ "name": "archived",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "boolean"
+ },
+ "description": "Returns only archived submissions when `true` and only active submissions when `false`."
+ },
+ {
+ "name": "limit",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The number of submissions to return. Default value is 10. Maximum value is 100."
+ },
+ {
+ "name": "after",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submission to start the list from. It allows you to receive only submissions with an ID greater than the specified value. Pass ID value from the `pagination.next` response to load the next batch of submissions."
+ },
+ {
+ "name": "before",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submission that marks the end of the list. It allows you to receive only submissions with an ID less than the specified value."
+ }
+ ]
+}
+```
+
+### Get a submission
+
+The API endpoint provides the functionality to retrieve information about a submission.
+
+```csharp
+var client = new RestClient("https://api.wabosign.com/submissions/1001");
+var request = new RestRequest("", Method.Get);
+request.AddHeader("X-Auth-Token", "API_KEY");
+var response = client.Execute(request);
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Get a submission",
+ "operationId": "getSubmission",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submission.",
+ "example": 1001
+ }
+ ]
+}
+```
+
+### Get submission documents
+
+This endpoint returns a list of partially filled documents for a submission. If the submission has been completed, the final signed documents are returned.
+
+```csharp
+var client = new RestClient("https://api.wabosign.com/submissions/1001/documents");
+var request = new RestRequest("", Method.Get);
+request.AddHeader("X-Auth-Token", "API_KEY");
+var response = client.Execute(request);
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Get submission documents",
+ "operationId": "getSubmissionDocuments",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submission.",
+ "example": 1001
+ }
+ ]
+}
+```
+
+### Create a submission
+
+This API endpoint allows you to create signature requests (submissions) for a document template and send them to the specified submitters (signers). Related Guides Send documents for signature via API Pre-fill PDF document form fields with API
+
+```csharp
+var client = new RestClient("https://api.wabosign.com/submissions");
+var request = new RestRequest("", Method.Post);
+request.AddHeader("X-Auth-Token", "API_KEY");
+request.AddHeader("content-type", "application/json");
+request.AddParameter("application/json", "{\"template_id\":1000001,\"send_email\":true,\"submitters\":[{\"role\":\"First Party\",\"email\":\"john.doe@example.com\"}]}", ParameterType.RequestBody);
+var response = client.Execute(request);
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Create a submission",
+ "operationId": "createSubmission",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "template_id",
+ "submitters"
+ ],
+ "properties": {
+ "template_id": {
+ "type": "integer",
+ "description": "The unique identifier of the template. Document template forms can be created via the Web UI, PDF and DOCX API, or HTML API.",
+ "example": 1000001
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "order": {
+ "type": "string",
+ "description": "Pass 'random' to send signature request emails to all parties right away. The order is 'preserved' by default so the second party will receive a signature request email only after the document is signed by the first party.",
+ "default": "preserved",
+ "enum": [
+ "preserved",
+ "random"
+ ]
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Specify URL to redirect to after the submission completion."
+ },
+ "bcc_completed": {
+ "type": "string",
+ "description": "Specify BCC address to send signed documents to after the completion."
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails."
+ },
+ "expire_at": {
+ "type": "string",
+ "description": "Specify the expiration date and time after which the submission becomes unavailable for signature.",
+ "example": "2024-09-01 12:00:00 UTC"
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body. Can include the following variables: {{template.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "submitters": {
+ "type": "array",
+ "description": "The list of submitters for the submission.",
+ "items": {
+ "type": "object",
+ "required": [
+ "email"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the submitter."
+ },
+ "role": {
+ "type": "string",
+ "description": "The role name or title of the submitter.",
+ "example": "First Party"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the submitter.",
+ "format": "email",
+ "example": "john.doe@example.com"
+ },
+ "phone": {
+ "type": "string",
+ "description": "The phone number of the submitter, formatted according to the E.164 standard.",
+ "example": "+1234567890"
+ },
+ "values": {
+ "type": "object",
+ "description": "An object with pre-filled values for the submission. Use field names for keys of the object. For more configurations see `fields` param."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this submitter within your app."
+ },
+ "completed": {
+ "type": "boolean",
+ "description": "Pass `true` to mark submitter as completed and auto-signed via API."
+ },
+ "metadata": {
+ "type": "object",
+ "description": "Metadata object with additional submitter information.",
+ "example": "{ \"customField\": \"value\" }"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending only for this submitter.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails for this submitter."
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Submitter specific URL to redirect to after the submission completion."
+ },
+ "order": {
+ "type": "integer",
+ "description": "The order of the submitter in the workflow (e.g., 0 for the first signer, 1 for the second, etc.). Use the same order number to create order groups. By default, submitters are ordered as in the submitters array."
+ },
+ "require_phone_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require phone 2FA verification via a one-time code sent to the phone number in order to access the documents.",
+ "default": false
+ },
+ "require_email_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require email 2FA verification via a one-time code sent to the email address in order to access the documents.",
+ "default": false
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject for the submitter."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body for the submitter. Can include the following variables: {{template.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "fields": {
+ "type": "array",
+ "description": "A list of configurations for template document form fields.",
+ "items": {
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document template field name.",
+ "example": "First Name"
+ },
+ "default_value": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ }
+ ]
+ }
+ }
+ ],
+ "description": "Default value of the field. Use base64 encoded file or a public URL to the image file to set default signature or image fields.",
+ "example": "Acme"
+ },
+ "readonly": {
+ "type": "boolean",
+ "description": "Set `true` to make it impossible for the submitter to edit predefined field value.",
+ "default": false
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Set `true` to make the field required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "roles": {
+ "type": "array",
+ "description": "A list of roles for the submitter. Use this param to merge multiple roles into one submitter.",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Create a submission from PDF
+
+The API endpoint provides the functionality to create one-off submission request from a PDF. Use {{Field Name;role=Signer1;type=date}} text tags to define fillable fields in the document. See https://www.wabosign.com/examples/fieldtags.pdf for more text tag formats. Or specify the exact pixel coordinates of the document fields using `fields` param. Related Guides Use embedded text field tags to create a fillable form
+
+
+```csharp
+var client = new RestClient("https://api.wabosign.com/submissions/pdf");
+var request = new RestRequest("", Method.Post);
+request.AddHeader("X-Auth-Token", "API_KEY");
+request.AddHeader("content-type", "application/json");
+request.AddParameter("application/json", "{\"name\":\"Test Submission Document\",\"documents\":[{\"name\":\"string\",\"file\":\"base64\",\"fields\":[{\"name\":\"string\",\"areas\":[{\"x\":0,\"y\":0,\"w\":0,\"h\":0,\"page\":1}]}]}],\"submitters\":[{\"role\":\"First Party\",\"email\":\"john.doe@example.com\"}]}", ParameterType.RequestBody);
+var response = client.Execute(request);
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Create a submission from PDF",
+ "operationId": "createSubmissionFromPdf",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "documents",
+ "submitters"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document submission.",
+ "example": "Test Submission Document"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "order": {
+ "type": "string",
+ "description": "Pass 'random' to send signature request emails to all parties right away. The order is 'preserved' by default so the second party will receive a signature request email only after the document is signed by the first party.",
+ "default": "preserved",
+ "enum": [
+ "preserved",
+ "random"
+ ]
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Specify URL to redirect to after the submission completion."
+ },
+ "bcc_completed": {
+ "type": "string",
+ "description": "Specify BCC address to send signed documents to after the completion."
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails."
+ },
+ "expire_at": {
+ "type": "string",
+ "description": "Specify the expiration date and time after which the submission becomes unavailable for signature.",
+ "example": "2024-09-01 12:00:00 UTC"
+ },
+ "template_ids": {
+ "type": "array",
+ "description": "An optional array of template IDs to use in the submission along with the provided documents. This can be used to create multi-document submissions when some of the required documents exist within templates.",
+ "items": {
+ "type": "integer",
+ "description": "The ID of the template to use for the submission."
+ }
+ },
+ "documents": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "name",
+ "file"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document."
+ },
+ "file": {
+ "example": "base64",
+ "type": "string",
+ "format": "base64",
+ "description": "Base64-encoded content of the PDF file or downloadable file URL."
+ },
+ "fields": {
+ "type": "array",
+ "description": "Fields are optional if you use {{...}} text tags to define fields in the document.",
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the field."
+ },
+ "type": {
+ "type": "string",
+ "description": "Type of the field (e.g., text, signature, date, initials).",
+ "enum": [
+ "heading",
+ "text",
+ "signature",
+ "initials",
+ "date",
+ "number",
+ "image",
+ "checkbox",
+ "multiple",
+ "file",
+ "radio",
+ "select",
+ "cells",
+ "stamp",
+ "payment",
+ "phone",
+ "verification",
+ "strikethrough"
+ ]
+ },
+ "role": {
+ "type": "string",
+ "description": "Role name of the signer."
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Indicates if the field is required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "areas": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "x",
+ "y",
+ "w",
+ "h",
+ "page"
+ ],
+ "properties": {
+ "x": {
+ "type": "number",
+ "description": "X-coordinate of the field area."
+ },
+ "y": {
+ "type": "number",
+ "description": "Y-coordinate of the field area."
+ },
+ "w": {
+ "type": "number",
+ "description": "Width of the field area."
+ },
+ "h": {
+ "type": "number",
+ "description": "Height of the field area."
+ },
+ "page": {
+ "type": "integer",
+ "description": "Page number of the field area. Starts from 1.",
+ "example": 1
+ },
+ "option": {
+ "type": "string",
+ "description": "Option string value for 'radio' and 'multiple' select field types."
+ }
+ }
+ }
+ },
+ "options": {
+ "type": "array",
+ "description": "An array of option values for 'select' field type.",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "Option A",
+ "Option B"
+ ]
+ }
+ }
+ }
+ },
+ "position": {
+ "type": "integer",
+ "description": "Document position in the submission. If not specified, the document will be added in the order it appears in the documents array."
+ }
+ }
+ }
+ },
+ "submitters": {
+ "type": "array",
+ "description": "The list of submitters for the submission.",
+ "items": {
+ "type": "object",
+ "required": [
+ "email"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the submitter."
+ },
+ "role": {
+ "type": "string",
+ "description": "The role name or title of the submitter.",
+ "example": "First Party"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the submitter.",
+ "format": "email",
+ "example": "john.doe@example.com"
+ },
+ "phone": {
+ "type": "string",
+ "description": "The phone number of the submitter, formatted according to the E.164 standard.",
+ "example": "+1234567890"
+ },
+ "values": {
+ "type": "object",
+ "description": "An object with pre-filled values for the submission. Use field names for keys of the object. For more configurations see `fields` param."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this submitter within your app."
+ },
+ "completed": {
+ "type": "boolean",
+ "description": "Pass `true` to mark submitter as completed and auto-signed via API."
+ },
+ "metadata": {
+ "type": "object",
+ "description": "Metadata object with additional submitter information.",
+ "example": "{ \"customField\": \"value\" }"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending only for this submitter.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails for this submitter."
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Submitter specific URL to redirect to after the submission completion."
+ },
+ "order": {
+ "type": "integer",
+ "description": "The order of the submitter in the workflow (e.g., 0 for the first signer, 1 for the second, etc.). Use the same order number to create order groups. By default, submitters are ordered as in the submitters array."
+ },
+ "require_phone_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require phone 2FA verification via a one-time code sent to the phone number in order to access the documents.",
+ "default": false
+ },
+ "require_email_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require email 2FA verification via a one-time code sent to the email address in order to access the documents.",
+ "default": false
+ },
+ "invite_by": {
+ "type": "string",
+ "description": "Set the role name of the previous party that should invite this party via email."
+ },
+ "fields": {
+ "type": "array",
+ "description": "A list of configurations for document form fields.",
+ "items": {
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document field name.",
+ "example": "First Name"
+ },
+ "default_value": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ }
+ ]
+ }
+ }
+ ],
+ "description": "Default value of the field. Use base64 encoded file or a public URL to the image file to set default signature or image fields.",
+ "example": "Acme"
+ },
+ "readonly": {
+ "type": "boolean",
+ "description": "Set `true` to make it impossible for the submitter to edit predefined field value.",
+ "default": false
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Set `true` to make the field required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "roles": {
+ "type": "array",
+ "description": "A list of roles for the submitter. Use this param to merge multiple roles into one submitter.",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body. Can include the following variables: {{submission.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "flatten": {
+ "type": "boolean",
+ "description": "Remove PDF form fields from the documents.",
+ "default": false
+ },
+ "merge_documents": {
+ "type": "boolean",
+ "description": "Set `true` to merge the documents into a single PDF file.",
+ "default": false
+ },
+ "remove_tags": {
+ "type": "boolean",
+ "description": "Pass `false` to disable the removal of {{text}} tags from the PDF. This can be used along with transparent text tags for faster and more robust PDF processing.",
+ "default": true
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Create a submission from DOCX
+
+The API endpoint provides functionality to create a one-off submission request from a DOCX file with dynamic content variables. Use [[variable_name]] text tags to define dynamic content variables in the document. See https://www.wabosign.com/examples/demo_template.docx for the specific text variable syntax, including dynamic content tables and list. You can also use the {{signature}} field syntax to define fillable fields, as in a PDF. Related Guides Use dynamic content variables in DOCX to create personalized documents
+
+```csharp
+var client = new RestClient("https://api.wabosign.com/submissions/docx");
+var request = new RestRequest("", Method.Post);
+request.AddHeader("X-Auth-Token", "API_KEY");
+request.AddHeader("content-type", "application/json");
+request.AddParameter("application/json", "{\"name\":\"Test Submission Document\",\"variables\":{\"variable_name\":\"value\"},\"documents\":[{\"name\":\"string\",\"file\":\"base64\"}],\"submitters\":[{\"role\":\"First Party\",\"email\":\"john.doe@example.com\"}]}", ParameterType.RequestBody);
+var response = client.Execute(request);
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Create a submission from DOCX",
+ "operationId": "createSubmissionFromDocx",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "documents",
+ "submitters"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document submission.",
+ "example": "Test Submission Document"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "variables": {
+ "type": "object",
+ "description": "Dynamic content variables object. Variable values can be strings, numbers, arrays, objects, or HTML content used to generate styled text, paragraphs, and tables in DOCX.",
+ "example": {
+ "variable_name": "value"
+ }
+ },
+ "order": {
+ "type": "string",
+ "description": "Pass 'random' to send signature request emails to all parties right away. The order is 'preserved' by default so the second party will receive a signature request email only after the document is signed by the first party.",
+ "default": "preserved",
+ "enum": [
+ "preserved",
+ "random"
+ ]
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Specify URL to redirect to after the submission completion."
+ },
+ "bcc_completed": {
+ "type": "string",
+ "description": "Specify BCC address to send signed documents to after the completion."
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails."
+ },
+ "expire_at": {
+ "type": "string",
+ "description": "Specify the expiration date and time after which the submission becomes unavailable for signature.",
+ "example": "2024-09-01 12:00:00 UTC"
+ },
+ "template_ids": {
+ "type": "array",
+ "description": "An optional array of template IDs to use in the submission along with the provided documents. This can be used to create multi-document submissions when some of the required documents exist within templates.",
+ "items": {
+ "type": "integer",
+ "description": "The ID of the template to use for the submission."
+ }
+ },
+ "documents": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "name",
+ "file"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document."
+ },
+ "file": {
+ "example": "base64",
+ "type": "string",
+ "format": "base64",
+ "description": "Base64-encoded content of the PDF or DOCX file or downloadable file URL."
+ },
+ "position": {
+ "type": "integer",
+ "description": "Document position in the submission. If not specified, the document will be added in the order it appears in the documents array."
+ }
+ }
+ }
+ },
+ "submitters": {
+ "type": "array",
+ "description": "The list of submitters for the submission.",
+ "items": {
+ "type": "object",
+ "required": [
+ "email"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the submitter."
+ },
+ "role": {
+ "type": "string",
+ "description": "The role name or title of the submitter.",
+ "example": "First Party"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the submitter.",
+ "format": "email",
+ "example": "john.doe@example.com"
+ },
+ "phone": {
+ "type": "string",
+ "description": "The phone number of the submitter, formatted according to the E.164 standard.",
+ "example": "+1234567890"
+ },
+ "values": {
+ "type": "object",
+ "description": "An object with pre-filled values for the submission. Use field names for keys of the object. For more configurations see `fields` param."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this submitter within your app."
+ },
+ "completed": {
+ "type": "boolean",
+ "description": "Pass `true` to mark submitter as completed and auto-signed via API."
+ },
+ "metadata": {
+ "type": "object",
+ "description": "Metadata object with additional submitter information.",
+ "example": "{ \"customField\": \"value\" }"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending only for this submitter.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails for this submitter."
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Submitter specific URL to redirect to after the submission completion."
+ },
+ "order": {
+ "type": "integer",
+ "description": "The order of the submitter in the workflow (e.g., 0 for the first signer, 1 for the second, etc.). Use the same order number to create order groups. By default, submitters are ordered as in the submitters array."
+ },
+ "require_phone_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require phone 2FA verification via a one-time code sent to the phone number in order to access the documents.",
+ "default": false
+ },
+ "require_email_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require email 2FA verification via a one-time code sent to the email address in order to access the documents.",
+ "default": false
+ },
+ "invite_by": {
+ "type": "string",
+ "description": "Set the role name of the previous party that should invite this party via email."
+ },
+ "fields": {
+ "type": "array",
+ "description": "A list of configurations for document form fields.",
+ "items": {
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document field name.",
+ "example": "First Name"
+ },
+ "default_value": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ }
+ ]
+ }
+ }
+ ],
+ "description": "Default value of the field. Use base64 encoded file or a public URL to the image file to set default signature or image fields.",
+ "example": "Acme"
+ },
+ "readonly": {
+ "type": "boolean",
+ "description": "Set `true` to make it impossible for the submitter to edit predefined field value.",
+ "default": false
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Set `true` to make the field required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "roles": {
+ "type": "array",
+ "description": "A list of roles for the submitter. Use this param to merge multiple roles into one submitter.",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body. Can include the following variables: {{submission.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "merge_documents": {
+ "type": "boolean",
+ "description": "Set `true` to merge the documents into a single PDF file.",
+ "default": false
+ },
+ "remove_tags": {
+ "type": "boolean",
+ "description": "Pass `false` to disable the removal of {{text}} tags from the PDF. This can be used along with transparent text tags for faster and more robust PDF processing.",
+ "default": true
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Create a submission from HTML
+
+This API endpoint allows you to create a one-off submission request document using the provided HTML content, with special field tags rendered as a fillable and signable form. Related Guides Create PDF document fillable form with HTML
+
+```csharp
+var client = new RestClient("https://api.wabosign.com/submissions/html");
+var request = new RestRequest("", Method.Post);
+request.AddHeader("X-Auth-Token", "API_KEY");
+request.AddHeader("content-type", "application/json");
+request.AddParameter("application/json", "{\"name\":\"Test Submission Document\",\"documents\":[{\"name\":\"Test Document\",\"html\":\"
Lorem Ipsum is simply dummy text of the\\n\\n\\nand typesetting industry
\\n\"}],\"submitters\":[{\"role\":\"First Party\",\"email\":\"john.doe@example.com\"}]}", ParameterType.RequestBody);
+var response = client.Execute(request);
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Create a submission from HTML",
+ "operationId": "createSubmissionFromHtml",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "documents",
+ "submitters"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document submission",
+ "example": "Test Submission Document"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "order": {
+ "type": "string",
+ "description": "Pass 'random' to send signature request emails to all parties right away. The order is 'preserved' by default so the second party will receive a signature request email only after the document is signed by the first party.",
+ "default": "preserved",
+ "enum": [
+ "preserved",
+ "random"
+ ]
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Specify URL to redirect to after the submission completion."
+ },
+ "bcc_completed": {
+ "type": "string",
+ "description": "Specify BCC address to send signed documents to after the completion."
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails."
+ },
+ "expire_at": {
+ "type": "string",
+ "description": "Specify the expiration date and time after which the submission becomes unavailable for signature.",
+ "example": "2024-09-01 12:00:00 UTC"
+ },
+ "template_ids": {
+ "type": "array",
+ "description": "An optional array of template IDs to use in the submission along with the provided documents. This can be used to create multi-document submissions when some of the required documents exist within templates.",
+ "items": {
+ "type": "integer",
+ "description": "The ID of the template to use for the submission."
+ }
+ },
+ "documents": {
+ "type": "array",
+ "description": "The list of documents built from HTML. Can be used to create a submission with multiple documents.",
+ "items": {
+ "type": "object",
+ "required": [
+ "html"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document name. Random uuid will be assigned when not specified.",
+ "example": "Test Document"
+ },
+ "html": {
+ "type": "string",
+ "description": "HTML document content with field tags.",
+ "example": "
Lorem Ipsum is simply dummy text of the\n\n\nand typesetting industry
\n"
+ },
+ "html_header": {
+ "type": "string",
+ "description": "HTML document content of the header to be displayed on every page."
+ },
+ "html_footer": {
+ "type": "string",
+ "description": "HTML document content of the footer to be displayed on every page."
+ },
+ "size": {
+ "type": "string",
+ "default": "Letter",
+ "description": "Page size. Letter 8.5 x 11 will be assigned when not specified.",
+ "enum": [
+ "Letter",
+ "Legal",
+ "Tabloid",
+ "Ledger",
+ "A0",
+ "A1",
+ "A2",
+ "A3",
+ "A4",
+ "A5",
+ "A6"
+ ],
+ "example": "A4"
+ },
+ "position": {
+ "type": "integer",
+ "description": "Document position in the submission. If not specified, the document will be added in the order it appears in the documents array."
+ }
+ }
+ }
+ },
+ "submitters": {
+ "type": "array",
+ "description": "The list of submitters for the submission.",
+ "items": {
+ "type": "object",
+ "required": [
+ "email"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the submitter."
+ },
+ "role": {
+ "type": "string",
+ "description": "The role name or title of the submitter.",
+ "example": "First Party"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the submitter.",
+ "format": "email",
+ "example": "john.doe@example.com"
+ },
+ "phone": {
+ "type": "string",
+ "description": "The phone number of the submitter, formatted according to the E.164 standard.",
+ "example": "+1234567890"
+ },
+ "values": {
+ "type": "object",
+ "description": "An object with pre-filled values for the submission. Use field names for keys of the object. For more configurations see `fields` param."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this submitter within your app."
+ },
+ "completed": {
+ "type": "boolean",
+ "description": "Pass `true` to mark submitter as completed and auto-signed via API."
+ },
+ "metadata": {
+ "type": "object",
+ "description": "Metadata object with additional submitter information.",
+ "example": "{ \"customField\": \"value\" }"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending only for this submitter.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails for this submitter."
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Submitter specific URL to redirect to after the submission completion."
+ },
+ "order": {
+ "type": "integer",
+ "description": "The order of the submitter in the workflow (e.g., 0 for the first signer, 1 for the second, etc.). Use the same order number to create order groups. By default, submitters are ordered as in the submitters array."
+ },
+ "require_phone_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require phone 2FA verification via a one-time code sent to the phone number in order to access the documents.",
+ "default": false
+ },
+ "require_email_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require email 2FA verification via a one-time code sent to the email address in order to access the documents.",
+ "default": false
+ },
+ "invite_by": {
+ "type": "string",
+ "description": "Set the role name of the previous party that should invite this party via email."
+ },
+ "fields": {
+ "type": "array",
+ "description": "A list of configurations for document form fields.",
+ "items": {
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document field name.",
+ "example": "First Name"
+ },
+ "default_value": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ }
+ ]
+ }
+ }
+ ],
+ "description": "Default value of the field. Use base64 encoded file or a public URL to the image file to set default signature or image fields.",
+ "example": "Acme"
+ },
+ "readonly": {
+ "type": "boolean",
+ "description": "Set `true` to make it impossible for the submitter to edit predefined field value.",
+ "default": false
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Set `true` to make the field required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "roles": {
+ "type": "array",
+ "description": "A list of roles for the submitter. Use this param to merge multiple roles into one submitter.",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body. Can include the following variables: {{submission.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "merge_documents": {
+ "type": "boolean",
+ "description": "Set `true` to merge the documents into a single PDF file.",
+ "default": false
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Archive a submission
+
+The API endpoint allows you to archive a submission.
+
+```csharp
+var client = new RestClient("https://api.wabosign.com/submissions/1001");
+var request = new RestRequest("", Method.Delete);
+request.AddHeader("X-Auth-Token", "API_KEY");
+var response = client.Execute(request);
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Archive a submission",
+ "operationId": "archiveSubmission",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submission.",
+ "example": 1001
+ }
+ ]
+}
+```
+
+### List all submitters
+
+The API endpoint provides the ability to retrieve a list of submitters.
+
+```csharp
+var client = new RestClient("https://api.wabosign.com/submitters");
+var request = new RestRequest("", Method.Get);
+request.AddHeader("X-Auth-Token", "API_KEY");
+var response = client.Execute(request);
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submitters"
+ ],
+ "summary": "List all submitters",
+ "operationId": "getSubmitters",
+ "parameters": [
+ {
+ "name": "submission_id",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The submission ID allows you to receive only the submitters related to that specific submission."
+ },
+ {
+ "name": "q",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter submitters on name, email or phone partial match."
+ },
+ {
+ "name": "slug",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter submitters by unique slug.",
+ "example": "zAyL9fH36Havvm"
+ },
+ {
+ "name": "completed_after",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "example": "2024-03-05 9:32:20",
+ "description": "The date and time string value to filter submitters that completed the submission after the specified date and time."
+ },
+ {
+ "name": "completed_before",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "example": "2024-03-06 19:32:20",
+ "description": "The date and time string value to filter submitters that completed the submission before the specified date and time."
+ },
+ {
+ "name": "external_id",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "The unique applications-specific identifier provided for a submitter when initializing a signature request. It allows you to receive only submitters with a specified external id."
+ },
+ {
+ "name": "limit",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The number of submitters to return. Default value is 10. Maximum value is 100."
+ },
+ {
+ "name": "after",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submitter to start the list from. It allows you to receive only submitters with id greater than the specified value. Pass ID value from the `pagination.next` response to load the next batch of submitters."
+ },
+ {
+ "name": "before",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submitter to end the list with. It allows you to receive only submitters with id less than the specified value."
+ }
+ ]
+}
+```
+
+### Get a submitter
+
+The API endpoint provides functionality to retrieve information about a submitter, along with the submitter documents and field values.
+
+```csharp
+var client = new RestClient("https://api.wabosign.com/submitters/500001");
+var request = new RestRequest("", Method.Get);
+request.AddHeader("X-Auth-Token", "API_KEY");
+var response = client.Execute(request);
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submitters"
+ ],
+ "summary": "Get a submitter",
+ "operationId": "getSubmitter",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submitter.",
+ "example": 500001
+ }
+ ]
+}
+```
+
+### Update a submitter
+
+The API endpoint allows you to update submitter details, pre-fill or update field values and re-send emails. Related Guides Automatically sign documents via API
+
+```csharp
+var client = new RestClient("https://api.wabosign.com/submitters/500001");
+var request = new RestRequest("", Method.Put);
+request.AddHeader("X-Auth-Token", "API_KEY");
+request.AddHeader("content-type", "application/json");
+request.AddParameter("application/json", "{\"email\":\"john.doe@example.com\",\"fields\":[{\"name\":\"First Name\",\"default_value\":\"Acme\"}]}", ParameterType.RequestBody);
+var response = client.Execute(request);
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submitters"
+ ],
+ "summary": "Update a submitter",
+ "operationId": "updateSubmitter",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submitter.",
+ "example": 500001
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the submitter."
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the submitter.",
+ "format": "email",
+ "example": "john.doe@example.com"
+ },
+ "phone": {
+ "type": "string",
+ "description": "The phone number of the submitter, formatted according to the E.164 standard.",
+ "example": "+1234567890"
+ },
+ "values": {
+ "type": "object",
+ "description": "An object with pre-filled values for the submission. Use field names for keys of the object. For more configurations see `fields` param."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this submitter within your app."
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `true` to re-send signature request emails."
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to re-send signature request via phone number SMS.",
+ "default": false
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails."
+ },
+ "completed": {
+ "type": "boolean",
+ "description": "Pass `true` to mark submitter as completed and auto-signed via API."
+ },
+ "metadata": {
+ "type": "object",
+ "description": "Metadata object with additional submitter information.",
+ "example": "{ \"customField\": \"value\" }"
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Submitter specific URL to redirect to after the submission completion."
+ },
+ "require_phone_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require phone 2FA verification via a one-time code sent to the phone number in order to access the documents.",
+ "default": false
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body. Can include the following variables: {{template.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "fields": {
+ "type": "array",
+ "description": "A list of configurations for template document form fields.",
+ "items": {
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document template field name.",
+ "example": "First Name"
+ },
+ "default_value": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ }
+ ]
+ }
+ }
+ ],
+ "description": "Default value of the field. Use base64 encoded file or a public URL to the image file to set default signature or image fields.",
+ "example": "Acme"
+ },
+ "readonly": {
+ "type": "boolean",
+ "description": "Set `true` to make it impossible for the submitter to edit predefined field value.",
+ "default": false
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Set `true` to make the field required."
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### List all templates
+
+The API endpoint provides the ability to retrieve a list of available document templates.
+
+```csharp
+var client = new RestClient("https://api.wabosign.com/templates");
+var request = new RestRequest("", Method.Get);
+request.AddHeader("X-Auth-Token", "API_KEY");
+var response = client.Execute(request);
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "List all templates",
+ "operationId": "getTemplates",
+ "parameters": [
+ {
+ "name": "q",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter templates based on the name partial match."
+ },
+ {
+ "name": "slug",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter templates by unique slug.",
+ "example": "opaKWh8WWTAcVG"
+ },
+ {
+ "name": "external_id",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "The unique applications-specific identifier provided for the template via API or Embedded template form builder. It allows you to receive only templates with your specified external id."
+ },
+ {
+ "name": "folder",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter templates by folder name."
+ },
+ {
+ "name": "archived",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "boolean"
+ },
+ "description": "Get only archived templates instead of active ones."
+ },
+ {
+ "name": "limit",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The number of templates to return. Default value is 10. Maximum value is 100."
+ },
+ {
+ "name": "after",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the template to start the list from. It allows you to receive only templates with id greater than the specified value. Pass ID value from the `pagination.next` response to load the next batch of templates."
+ },
+ {
+ "name": "before",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the template to end the list with. It allows you to receive only templates with id less than the specified value."
+ }
+ ]
+}
+```
+
+### Get a template
+
+The API endpoint provides the functionality to retrieve information about a document template.
+
+```csharp
+var client = new RestClient("https://api.wabosign.com/templates/1000001");
+var request = new RestRequest("", Method.Get);
+request.AddHeader("X-Auth-Token", "API_KEY");
+var response = client.Execute(request);
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Get a template",
+ "operationId": "getTemplate",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the document template.",
+ "example": 1000001
+ }
+ ]
+}
+```
+
+### Create a template from PDF
+
+The API endpoint provides the functionality to create a fillable document template for a PDF file. Use {{Field Name;role=Signer1;type=date}} text tags to define fillable fields in the document. See https://www.wabosign.com/examples/fieldtags.pdf for more text tag formats. Or specify the exact pixel coordinates of the document fields using `fields` param. Related Guides Use embedded text field tags to create a fillable form
+
+
+```csharp
+var client = new RestClient("https://api.wabosign.com/templates/pdf");
+var request = new RestRequest("", Method.Post);
+request.AddHeader("X-Auth-Token", "API_KEY");
+request.AddHeader("content-type", "application/json");
+request.AddParameter("application/json", "{\"name\":\"Test PDF\",\"documents\":[{\"name\":\"string\",\"file\":\"base64\",\"fields\":[{\"name\":\"string\",\"areas\":[{\"x\":0,\"y\":0,\"w\":0,\"h\":0,\"page\":1}]}]}]}", ParameterType.RequestBody);
+var response = client.Execute(request);
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Create a template from PDF",
+ "operationId": "createTemplateFromPdf",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "documents"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the template",
+ "example": "Test PDF"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The folder's name to which the template should be created."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this template within your app. Existing template with specified `external_id` will be updated with a new PDF.",
+ "example": "unique-key"
+ },
+ "shared_link": {
+ "type": "boolean",
+ "description": "set to `true` to make the template available via a shared link. This will allow anyone with the link to create a submission from this template.",
+ "default": true
+ },
+ "documents": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "name",
+ "file"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document."
+ },
+ "file": {
+ "example": "base64",
+ "type": "string",
+ "format": "base64",
+ "description": "Base64-encoded content of the PDF file or downloadable file URL."
+ },
+ "fields": {
+ "type": "array",
+ "description": "Fields are optional if you use {{...}} text tags to define fields in the document.",
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the field."
+ },
+ "type": {
+ "type": "string",
+ "description": "Type of the field (e.g., text, signature, date, initials).",
+ "enum": [
+ "heading",
+ "text",
+ "signature",
+ "initials",
+ "date",
+ "number",
+ "image",
+ "checkbox",
+ "multiple",
+ "file",
+ "radio",
+ "select",
+ "cells",
+ "stamp",
+ "payment",
+ "phone",
+ "verification",
+ "strikethrough"
+ ]
+ },
+ "role": {
+ "type": "string",
+ "description": "Role name of the signer."
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Indicates if the field is required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "areas": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "x",
+ "y",
+ "w",
+ "h",
+ "page"
+ ],
+ "properties": {
+ "x": {
+ "type": "number",
+ "description": "X-coordinate of the field area."
+ },
+ "y": {
+ "type": "number",
+ "description": "Y-coordinate of the field area."
+ },
+ "w": {
+ "type": "number",
+ "description": "Width of the field area."
+ },
+ "h": {
+ "type": "number",
+ "description": "Height of the field area."
+ },
+ "page": {
+ "type": "integer",
+ "description": "Page number of the field area. Starts from 1.",
+ "example": 1
+ },
+ "option": {
+ "type": "string",
+ "description": "Option string value for 'radio' and 'multiple' select field types."
+ }
+ }
+ }
+ },
+ "options": {
+ "type": "array",
+ "description": "An array of option values for 'select' field type.",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "Option A",
+ "Option B"
+ ]
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "flatten": {
+ "type": "boolean",
+ "description": "Remove PDF form fields from the documents.",
+ "default": false
+ },
+ "remove_tags": {
+ "type": "boolean",
+ "description": "Pass `false` to disable the removal of {{text}} tags from the PDF. This can be used along with transparent text tags for faster and more robust PDF processing.",
+ "default": true
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Create a template from Word DOCX
+
+The API endpoint provides the functionality to create a fillable document template for existing Microsoft Word document. Use {{Field Name;role=Signer1;type=date}} text tags to define fillable fields in the document. See https://www.wabosign.com/examples/fieldtags.docx for more text tag formats. Or specify the exact pixel coordinates of the document fields using `fields` param. Related Guides Use embedded text field tags to create a fillable form
+
+
+```csharp
+var client = new RestClient("https://api.wabosign.com/templates/docx");
+var request = new RestRequest("", Method.Post);
+request.AddHeader("X-Auth-Token", "API_KEY");
+request.AddHeader("content-type", "application/json");
+request.AddParameter("application/json", "{\"name\":\"Test DOCX\",\"documents\":[{\"name\":\"string\",\"file\":\"base64\"}]}", ParameterType.RequestBody);
+var response = client.Execute(request);
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Create a template from Word DOCX",
+ "operationId": "createTemplateFromDocx",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "documents"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the template",
+ "example": "Test DOCX"
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this template within your app. Existing template with specified `external_id` will be updated with a new document.",
+ "example": "unique-key"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The folder's name to which the template should be created."
+ },
+ "shared_link": {
+ "type": "boolean",
+ "description": "set to `true` to make the template available via a shared link. This will allow anyone with the link to create a submission from this template.",
+ "default": true
+ },
+ "documents": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "name",
+ "file"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document."
+ },
+ "file": {
+ "type": "string",
+ "example": "base64",
+ "format": "base64",
+ "description": "Base64-encoded content of the DOCX file or downloadable file URL"
+ },
+ "fields": {
+ "description": "Fields are optional if you use {{...}} text tags to define fields in the document.",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the field."
+ },
+ "type": {
+ "type": "string",
+ "description": "Type of the field (e.g., text, signature, date, initials).",
+ "enum": [
+ "heading",
+ "text",
+ "signature",
+ "initials",
+ "date",
+ "number",
+ "image",
+ "checkbox",
+ "multiple",
+ "file",
+ "radio",
+ "select",
+ "cells",
+ "stamp",
+ "payment",
+ "phone",
+ "verification",
+ "strikethrough"
+ ]
+ },
+ "role": {
+ "type": "string",
+ "description": "Role name of the signer."
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Indicates if the field is required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "areas": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "x": {
+ "type": "number",
+ "description": "X-coordinate of the field area."
+ },
+ "y": {
+ "type": "number",
+ "description": "Y-coordinate of the field area."
+ },
+ "w": {
+ "type": "number",
+ "description": "Width of the field area."
+ },
+ "h": {
+ "type": "number",
+ "description": "Height of the field area."
+ },
+ "page": {
+ "type": "integer",
+ "description": "Page number of the field area. Starts from 1."
+ },
+ "option": {
+ "type": "string",
+ "description": "Option string value for 'radio' and 'multiple' select field types."
+ }
+ }
+ }
+ },
+ "options": {
+ "type": "array",
+ "description": "An array of option values for 'select' field type.",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "Option A",
+ "Option B"
+ ]
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Create a template from HTML
+
+The API endpoint provides the functionality to seamlessly generate a PDF document template by utilizing the provided HTML content while incorporating pre-defined fields. Related Guides Create PDF document fillable form with HTML
+
+```csharp
+var client = new RestClient("https://api.wabosign.com/templates/html");
+var request = new RestRequest("", Method.Post);
+request.AddHeader("X-Auth-Token", "API_KEY");
+request.AddHeader("content-type", "application/json");
+request.AddParameter("application/json", "{\"html\":\"
Lorem Ipsum is simply dummy text of the\\n\\n\\nand typesetting industry
Lorem Ipsum is simply dummy text of the\n\n\nand typesetting industry
\n"
+ },
+ "html_header": {
+ "type": "string",
+ "description": "HTML template of the header to be displayed on every page."
+ },
+ "html_footer": {
+ "type": "string",
+ "description": "HTML template of the footer to be displayed on every page."
+ },
+ "name": {
+ "type": "string",
+ "description": "Template name. Random uuid will be assigned when not specified.",
+ "example": "Test Template"
+ },
+ "size": {
+ "type": "string",
+ "default": "Letter",
+ "description": "Page size. Letter 8.5 x 11 will be assigned when not specified.",
+ "enum": [
+ "Letter",
+ "Legal",
+ "Tabloid",
+ "Ledger",
+ "A0",
+ "A1",
+ "A2",
+ "A3",
+ "A4",
+ "A5",
+ "A6"
+ ],
+ "example": "A4"
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this template within your app. Existing template with specified `external_id` will be updated with a new HTML.",
+ "example": "714d974e-83d8-11ee-b962-0242ac120002"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The folder's name to which the template should be created."
+ },
+ "shared_link": {
+ "type": "boolean",
+ "description": "set to `true` to make the template available via a shared link. This will allow anyone with the link to create a submission from this template.",
+ "default": true
+ },
+ "documents": {
+ "type": "array",
+ "description": "The list of documents built from HTML. Can be used to create a template with multiple documents. Leave `documents` param empty when using a top-level `html` param for a template with a single document.",
+ "items": {
+ "type": "object",
+ "required": [
+ "html"
+ ],
+ "properties": {
+ "html": {
+ "type": "string",
+ "description": "HTML template with field tags.",
+ "example": "
Lorem Ipsum is simply dummy text of the\n\n\nand typesetting industry
\n"
+ },
+ "name": {
+ "type": "string",
+ "description": "Document name. Random uuid will be assigned when not specified.",
+ "example": "Test Document"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Clone a template
+
+The API endpoint allows you to clone existing template into a new template.
+
+```csharp
+var client = new RestClient("https://api.wabosign.com/templates/1000001/clone");
+var request = new RestRequest("", Method.Post);
+request.AddHeader("X-Auth-Token", "API_KEY");
+request.AddHeader("content-type", "application/json");
+request.AddParameter("application/json", "{\"name\":\"Cloned Template\"}", ParameterType.RequestBody);
+var response = client.Execute(request);
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Clone a template",
+ "operationId": "cloneTemplate",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the documents template.",
+ "example": 1000001
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Template name. Existing name with (Clone) suffix will be used if not specified.",
+ "example": "Cloned Template"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The folder's name to which the template should be cloned."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this template within your app."
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Merge templates
+
+The API endpoint allows you to merge multiple templates with documents and fields into a new combined template.
+
+```csharp
+var client = new RestClient("https://api.wabosign.com/templates/merge");
+var request = new RestRequest("", Method.Post);
+request.AddHeader("X-Auth-Token", "API_KEY");
+request.AddHeader("content-type", "application/json");
+request.AddParameter("application/json", "{\"template_ids\":[321,432],\"name\":\"Merged Template\"}", ParameterType.RequestBody);
+var response = client.Execute(request);
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Merge templates",
+ "operationId": "mergeTemplate",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "template_ids"
+ ],
+ "properties": {
+ "template_ids": {
+ "type": "array",
+ "description": "An array of template ids to merge into a new template.",
+ "items": {
+ "type": "integer"
+ },
+ "example": [
+ 321,
+ 432
+ ]
+ },
+ "name": {
+ "type": "string",
+ "description": "Template name. Existing name with (Merged) suffix will be used if not specified.",
+ "example": "Merged Template"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The name of the folder in which the merged template should be placed."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this template within your app."
+ },
+ "shared_link": {
+ "type": "boolean",
+ "description": "set to `true` to make the template available via a shared link. This will allow anyone with the link to create a submission from this template.",
+ "default": true
+ },
+ "roles": {
+ "type": "array",
+ "description": "An array of submitter role names to be used in the merged template.",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "Agent",
+ "Customer"
+ ]
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Update a template
+
+The API endpoint provides the functionality to move a document template to a different folder and update the name of the template.
+
+```csharp
+var client = new RestClient("https://api.wabosign.com/templates/1000001");
+var request = new RestRequest("", Method.Put);
+request.AddHeader("X-Auth-Token", "API_KEY");
+request.AddHeader("content-type", "application/json");
+request.AddParameter("application/json", "{\"name\":\"New Document Name\",\"folder_name\":\"New Folder\"}", ParameterType.RequestBody);
+var response = client.Execute(request);
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Update a template",
+ "operationId": "updateTemplate",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the document template.",
+ "example": 1000001
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the template",
+ "example": "New Document Name"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The folder's name to which the template should be moved.",
+ "example": "New Folder"
+ },
+ "roles": {
+ "type": "array",
+ "description": "An array of submitter role names to update the template with.",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "Agent",
+ "Customer"
+ ]
+ },
+ "archived": {
+ "type": "boolean",
+ "description": "Set `false` to unarchive template."
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Update template documents
+
+The API endpoint allows you to add, remove or replace documents in the template with provided PDF/DOCX file or HTML content.
+
+```csharp
+var client = new RestClient("https://api.wabosign.com/templates/1000001/documents");
+var request = new RestRequest("", Method.Put);
+request.AddHeader("X-Auth-Token", "API_KEY");
+request.AddHeader("content-type", "application/json");
+request.AddParameter("application/json", "{\"documents\":[{\"file\":\"string\"}]}", ParameterType.RequestBody);
+var response = client.Execute(request);
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Update template documents",
+ "operationId": "addDocumentToTemplate",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the documents template.",
+ "example": 1000001
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "documents": {
+ "type": "array",
+ "description": "The list of documents to add or replace in the template.",
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document name. Random uuid will be assigned when not specified.",
+ "example": "Test Template"
+ },
+ "file": {
+ "type": "string",
+ "format": "base64",
+ "description": "Base64-encoded content of the PDF or DOCX file or downloadable file URL. Leave it empty if you create a new document using HTML param."
+ },
+ "html": {
+ "type": "string",
+ "description": "HTML template with field tags. Leave it empty if you add a document via PDF or DOCX base64 encoded file param or URL."
+ },
+ "position": {
+ "type": "integer",
+ "description": "Position of the document. By default will be added as the last document in the template.",
+ "example": 0
+ },
+ "replace": {
+ "type": "boolean",
+ "default": false,
+ "description": "Set to `true` to replace existing document with a new file at `position`. Existing document fields will be transferred to the new document if it doesn't contain any fields."
+ },
+ "remove": {
+ "type": "boolean",
+ "default": false,
+ "description": "Set to `true` to remove existing document at given `position` or with given `name`."
+ }
+ }
+ }
+ },
+ "merge": {
+ "type": "boolean",
+ "default": false,
+ "description": "Set to `true` to merge all existing and new documents into a single PDF document in the template."
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Archive a template
+
+The API endpoint allows you to archive a document template.
+
+```csharp
+var client = new RestClient("https://api.wabosign.com/templates/1000001");
+var request = new RestRequest("", Method.Delete);
+request.AddHeader("X-Auth-Token", "API_KEY");
+var response = client.Execute(request);
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Archive a template",
+ "operationId": "archiveTemplate",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the document template.",
+ "example": 1000001
+ }
+ ]
+}
+```
+
diff --git a/docs/api/go.md b/docs/api/go.md
new file mode 100644
index 00000000..32677917
--- /dev/null
+++ b/docs/api/go.md
@@ -0,0 +1,4360 @@
+### List all submissions
+
+The API endpoint provides the ability to retrieve a list of available submissions.
+
+```go
+package main
+
+import (
+ "fmt"
+ "net/http"
+ "io"
+)
+
+func main() {
+
+ url := "https://api.wabosign.com/submissions"
+
+ req, _ := http.NewRequest("GET", url, nil)
+
+ req.Header.Add("X-Auth-Token", "API_KEY")
+
+ res, _ := http.DefaultClient.Do(req)
+
+ defer res.Body.Close()
+ body, _ := io.ReadAll(res.Body)
+
+ fmt.Println(res)
+ fmt.Println(string(body))
+
+}
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "List all submissions",
+ "operationId": "getSubmissions",
+ "parameters": [
+ {
+ "name": "template_id",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The template ID allows you to receive only the submissions created from that specific template."
+ },
+ {
+ "name": "status",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string",
+ "enum": [
+ "pending",
+ "completed",
+ "declined",
+ "expired"
+ ]
+ },
+ "description": "Filter submissions by status."
+ },
+ {
+ "name": "q",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter submissions based on submitters name, email or phone partial match."
+ },
+ {
+ "name": "slug",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter submissions by unique slug.",
+ "example": "NtLDQM7eJX2ZMd"
+ },
+ {
+ "name": "template_folder",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter submissions by template folder name."
+ },
+ {
+ "name": "archived",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "boolean"
+ },
+ "description": "Returns only archived submissions when `true` and only active submissions when `false`."
+ },
+ {
+ "name": "limit",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The number of submissions to return. Default value is 10. Maximum value is 100."
+ },
+ {
+ "name": "after",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submission to start the list from. It allows you to receive only submissions with an ID greater than the specified value. Pass ID value from the `pagination.next` response to load the next batch of submissions."
+ },
+ {
+ "name": "before",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submission that marks the end of the list. It allows you to receive only submissions with an ID less than the specified value."
+ }
+ ]
+}
+```
+
+### Get a submission
+
+The API endpoint provides the functionality to retrieve information about a submission.
+
+```go
+package main
+
+import (
+ "fmt"
+ "net/http"
+ "io"
+)
+
+func main() {
+
+ url := "https://api.wabosign.com/submissions/1001"
+
+ req, _ := http.NewRequest("GET", url, nil)
+
+ req.Header.Add("X-Auth-Token", "API_KEY")
+
+ res, _ := http.DefaultClient.Do(req)
+
+ defer res.Body.Close()
+ body, _ := io.ReadAll(res.Body)
+
+ fmt.Println(res)
+ fmt.Println(string(body))
+
+}
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Get a submission",
+ "operationId": "getSubmission",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submission.",
+ "example": 1001
+ }
+ ]
+}
+```
+
+### Get submission documents
+
+This endpoint returns a list of partially filled documents for a submission. If the submission has been completed, the final signed documents are returned.
+
+```go
+package main
+
+import (
+ "fmt"
+ "net/http"
+ "io"
+)
+
+func main() {
+
+ url := "https://api.wabosign.com/submissions/1001/documents"
+
+ req, _ := http.NewRequest("GET", url, nil)
+
+ req.Header.Add("X-Auth-Token", "API_KEY")
+
+ res, _ := http.DefaultClient.Do(req)
+
+ defer res.Body.Close()
+ body, _ := io.ReadAll(res.Body)
+
+ fmt.Println(res)
+ fmt.Println(string(body))
+
+}
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Get submission documents",
+ "operationId": "getSubmissionDocuments",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submission.",
+ "example": 1001
+ }
+ ]
+}
+```
+
+### Create a submission
+
+This API endpoint allows you to create signature requests (submissions) for a document template and send them to the specified submitters (signers). Related Guides Send documents for signature via API Pre-fill PDF document form fields with API
+
+```go
+package main
+
+import (
+ "fmt"
+ "strings"
+ "net/http"
+ "io"
+)
+
+func main() {
+
+ url := "https://api.wabosign.com/submissions"
+
+ payload := strings.NewReader("{\"template_id\":1000001,\"send_email\":true,\"submitters\":[{\"role\":\"First Party\",\"email\":\"john.doe@example.com\"}]}")
+
+ req, _ := http.NewRequest("POST", url, payload)
+
+ req.Header.Add("X-Auth-Token", "API_KEY")
+ req.Header.Add("content-type", "application/json")
+
+ res, _ := http.DefaultClient.Do(req)
+
+ defer res.Body.Close()
+ body, _ := io.ReadAll(res.Body)
+
+ fmt.Println(res)
+ fmt.Println(string(body))
+
+}
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Create a submission",
+ "operationId": "createSubmission",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "template_id",
+ "submitters"
+ ],
+ "properties": {
+ "template_id": {
+ "type": "integer",
+ "description": "The unique identifier of the template. Document template forms can be created via the Web UI, PDF and DOCX API, or HTML API.",
+ "example": 1000001
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "order": {
+ "type": "string",
+ "description": "Pass 'random' to send signature request emails to all parties right away. The order is 'preserved' by default so the second party will receive a signature request email only after the document is signed by the first party.",
+ "default": "preserved",
+ "enum": [
+ "preserved",
+ "random"
+ ]
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Specify URL to redirect to after the submission completion."
+ },
+ "bcc_completed": {
+ "type": "string",
+ "description": "Specify BCC address to send signed documents to after the completion."
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails."
+ },
+ "expire_at": {
+ "type": "string",
+ "description": "Specify the expiration date and time after which the submission becomes unavailable for signature.",
+ "example": "2024-09-01 12:00:00 UTC"
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body. Can include the following variables: {{template.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "submitters": {
+ "type": "array",
+ "description": "The list of submitters for the submission.",
+ "items": {
+ "type": "object",
+ "required": [
+ "email"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the submitter."
+ },
+ "role": {
+ "type": "string",
+ "description": "The role name or title of the submitter.",
+ "example": "First Party"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the submitter.",
+ "format": "email",
+ "example": "john.doe@example.com"
+ },
+ "phone": {
+ "type": "string",
+ "description": "The phone number of the submitter, formatted according to the E.164 standard.",
+ "example": "+1234567890"
+ },
+ "values": {
+ "type": "object",
+ "description": "An object with pre-filled values for the submission. Use field names for keys of the object. For more configurations see `fields` param."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this submitter within your app."
+ },
+ "completed": {
+ "type": "boolean",
+ "description": "Pass `true` to mark submitter as completed and auto-signed via API."
+ },
+ "metadata": {
+ "type": "object",
+ "description": "Metadata object with additional submitter information.",
+ "example": "{ \"customField\": \"value\" }"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending only for this submitter.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails for this submitter."
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Submitter specific URL to redirect to after the submission completion."
+ },
+ "order": {
+ "type": "integer",
+ "description": "The order of the submitter in the workflow (e.g., 0 for the first signer, 1 for the second, etc.). Use the same order number to create order groups. By default, submitters are ordered as in the submitters array."
+ },
+ "require_phone_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require phone 2FA verification via a one-time code sent to the phone number in order to access the documents.",
+ "default": false
+ },
+ "require_email_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require email 2FA verification via a one-time code sent to the email address in order to access the documents.",
+ "default": false
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject for the submitter."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body for the submitter. Can include the following variables: {{template.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "fields": {
+ "type": "array",
+ "description": "A list of configurations for template document form fields.",
+ "items": {
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document template field name.",
+ "example": "First Name"
+ },
+ "default_value": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ }
+ ]
+ }
+ }
+ ],
+ "description": "Default value of the field. Use base64 encoded file or a public URL to the image file to set default signature or image fields.",
+ "example": "Acme"
+ },
+ "readonly": {
+ "type": "boolean",
+ "description": "Set `true` to make it impossible for the submitter to edit predefined field value.",
+ "default": false
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Set `true` to make the field required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "roles": {
+ "type": "array",
+ "description": "A list of roles for the submitter. Use this param to merge multiple roles into one submitter.",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Create a submission from PDF
+
+The API endpoint provides the functionality to create one-off submission request from a PDF. Use {{Field Name;role=Signer1;type=date}} text tags to define fillable fields in the document. See https://www.wabosign.com/examples/fieldtags.pdf for more text tag formats. Or specify the exact pixel coordinates of the document fields using `fields` param. Related Guides Use embedded text field tags to create a fillable form
+
+
+```go
+package main
+
+import (
+ "fmt"
+ "strings"
+ "net/http"
+ "io"
+)
+
+func main() {
+
+ url := "https://api.wabosign.com/submissions/pdf"
+
+ payload := strings.NewReader("{\"name\":\"Test Submission Document\",\"documents\":[{\"name\":\"string\",\"file\":\"base64\",\"fields\":[{\"name\":\"string\",\"areas\":[{\"x\":0,\"y\":0,\"w\":0,\"h\":0,\"page\":1}]}]}],\"submitters\":[{\"role\":\"First Party\",\"email\":\"john.doe@example.com\"}]}")
+
+ req, _ := http.NewRequest("POST", url, payload)
+
+ req.Header.Add("X-Auth-Token", "API_KEY")
+ req.Header.Add("content-type", "application/json")
+
+ res, _ := http.DefaultClient.Do(req)
+
+ defer res.Body.Close()
+ body, _ := io.ReadAll(res.Body)
+
+ fmt.Println(res)
+ fmt.Println(string(body))
+
+}
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Create a submission from PDF",
+ "operationId": "createSubmissionFromPdf",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "documents",
+ "submitters"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document submission.",
+ "example": "Test Submission Document"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "order": {
+ "type": "string",
+ "description": "Pass 'random' to send signature request emails to all parties right away. The order is 'preserved' by default so the second party will receive a signature request email only after the document is signed by the first party.",
+ "default": "preserved",
+ "enum": [
+ "preserved",
+ "random"
+ ]
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Specify URL to redirect to after the submission completion."
+ },
+ "bcc_completed": {
+ "type": "string",
+ "description": "Specify BCC address to send signed documents to after the completion."
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails."
+ },
+ "expire_at": {
+ "type": "string",
+ "description": "Specify the expiration date and time after which the submission becomes unavailable for signature.",
+ "example": "2024-09-01 12:00:00 UTC"
+ },
+ "template_ids": {
+ "type": "array",
+ "description": "An optional array of template IDs to use in the submission along with the provided documents. This can be used to create multi-document submissions when some of the required documents exist within templates.",
+ "items": {
+ "type": "integer",
+ "description": "The ID of the template to use for the submission."
+ }
+ },
+ "documents": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "name",
+ "file"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document."
+ },
+ "file": {
+ "example": "base64",
+ "type": "string",
+ "format": "base64",
+ "description": "Base64-encoded content of the PDF file or downloadable file URL."
+ },
+ "fields": {
+ "type": "array",
+ "description": "Fields are optional if you use {{...}} text tags to define fields in the document.",
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the field."
+ },
+ "type": {
+ "type": "string",
+ "description": "Type of the field (e.g., text, signature, date, initials).",
+ "enum": [
+ "heading",
+ "text",
+ "signature",
+ "initials",
+ "date",
+ "number",
+ "image",
+ "checkbox",
+ "multiple",
+ "file",
+ "radio",
+ "select",
+ "cells",
+ "stamp",
+ "payment",
+ "phone",
+ "verification",
+ "strikethrough"
+ ]
+ },
+ "role": {
+ "type": "string",
+ "description": "Role name of the signer."
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Indicates if the field is required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "areas": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "x",
+ "y",
+ "w",
+ "h",
+ "page"
+ ],
+ "properties": {
+ "x": {
+ "type": "number",
+ "description": "X-coordinate of the field area."
+ },
+ "y": {
+ "type": "number",
+ "description": "Y-coordinate of the field area."
+ },
+ "w": {
+ "type": "number",
+ "description": "Width of the field area."
+ },
+ "h": {
+ "type": "number",
+ "description": "Height of the field area."
+ },
+ "page": {
+ "type": "integer",
+ "description": "Page number of the field area. Starts from 1.",
+ "example": 1
+ },
+ "option": {
+ "type": "string",
+ "description": "Option string value for 'radio' and 'multiple' select field types."
+ }
+ }
+ }
+ },
+ "options": {
+ "type": "array",
+ "description": "An array of option values for 'select' field type.",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "Option A",
+ "Option B"
+ ]
+ }
+ }
+ }
+ },
+ "position": {
+ "type": "integer",
+ "description": "Document position in the submission. If not specified, the document will be added in the order it appears in the documents array."
+ }
+ }
+ }
+ },
+ "submitters": {
+ "type": "array",
+ "description": "The list of submitters for the submission.",
+ "items": {
+ "type": "object",
+ "required": [
+ "email"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the submitter."
+ },
+ "role": {
+ "type": "string",
+ "description": "The role name or title of the submitter.",
+ "example": "First Party"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the submitter.",
+ "format": "email",
+ "example": "john.doe@example.com"
+ },
+ "phone": {
+ "type": "string",
+ "description": "The phone number of the submitter, formatted according to the E.164 standard.",
+ "example": "+1234567890"
+ },
+ "values": {
+ "type": "object",
+ "description": "An object with pre-filled values for the submission. Use field names for keys of the object. For more configurations see `fields` param."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this submitter within your app."
+ },
+ "completed": {
+ "type": "boolean",
+ "description": "Pass `true` to mark submitter as completed and auto-signed via API."
+ },
+ "metadata": {
+ "type": "object",
+ "description": "Metadata object with additional submitter information.",
+ "example": "{ \"customField\": \"value\" }"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending only for this submitter.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails for this submitter."
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Submitter specific URL to redirect to after the submission completion."
+ },
+ "order": {
+ "type": "integer",
+ "description": "The order of the submitter in the workflow (e.g., 0 for the first signer, 1 for the second, etc.). Use the same order number to create order groups. By default, submitters are ordered as in the submitters array."
+ },
+ "require_phone_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require phone 2FA verification via a one-time code sent to the phone number in order to access the documents.",
+ "default": false
+ },
+ "require_email_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require email 2FA verification via a one-time code sent to the email address in order to access the documents.",
+ "default": false
+ },
+ "invite_by": {
+ "type": "string",
+ "description": "Set the role name of the previous party that should invite this party via email."
+ },
+ "fields": {
+ "type": "array",
+ "description": "A list of configurations for document form fields.",
+ "items": {
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document field name.",
+ "example": "First Name"
+ },
+ "default_value": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ }
+ ]
+ }
+ }
+ ],
+ "description": "Default value of the field. Use base64 encoded file or a public URL to the image file to set default signature or image fields.",
+ "example": "Acme"
+ },
+ "readonly": {
+ "type": "boolean",
+ "description": "Set `true` to make it impossible for the submitter to edit predefined field value.",
+ "default": false
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Set `true` to make the field required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "roles": {
+ "type": "array",
+ "description": "A list of roles for the submitter. Use this param to merge multiple roles into one submitter.",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body. Can include the following variables: {{submission.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "flatten": {
+ "type": "boolean",
+ "description": "Remove PDF form fields from the documents.",
+ "default": false
+ },
+ "merge_documents": {
+ "type": "boolean",
+ "description": "Set `true` to merge the documents into a single PDF file.",
+ "default": false
+ },
+ "remove_tags": {
+ "type": "boolean",
+ "description": "Pass `false` to disable the removal of {{text}} tags from the PDF. This can be used along with transparent text tags for faster and more robust PDF processing.",
+ "default": true
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Create a submission from DOCX
+
+The API endpoint provides functionality to create a one-off submission request from a DOCX file with dynamic content variables. Use [[variable_name]] text tags to define dynamic content variables in the document. See https://www.wabosign.com/examples/demo_template.docx for the specific text variable syntax, including dynamic content tables and list. You can also use the {{signature}} field syntax to define fillable fields, as in a PDF. Related Guides Use dynamic content variables in DOCX to create personalized documents
+
+```go
+package main
+
+import (
+ "fmt"
+ "strings"
+ "net/http"
+ "io"
+)
+
+func main() {
+
+ url := "https://api.wabosign.com/submissions/docx"
+
+ payload := strings.NewReader("{\"name\":\"Test Submission Document\",\"variables\":{\"variable_name\":\"value\"},\"documents\":[{\"name\":\"string\",\"file\":\"base64\"}],\"submitters\":[{\"role\":\"First Party\",\"email\":\"john.doe@example.com\"}]}")
+
+ req, _ := http.NewRequest("POST", url, payload)
+
+ req.Header.Add("X-Auth-Token", "API_KEY")
+ req.Header.Add("content-type", "application/json")
+
+ res, _ := http.DefaultClient.Do(req)
+
+ defer res.Body.Close()
+ body, _ := io.ReadAll(res.Body)
+
+ fmt.Println(res)
+ fmt.Println(string(body))
+
+}
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Create a submission from DOCX",
+ "operationId": "createSubmissionFromDocx",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "documents",
+ "submitters"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document submission.",
+ "example": "Test Submission Document"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "variables": {
+ "type": "object",
+ "description": "Dynamic content variables object. Variable values can be strings, numbers, arrays, objects, or HTML content used to generate styled text, paragraphs, and tables in DOCX.",
+ "example": {
+ "variable_name": "value"
+ }
+ },
+ "order": {
+ "type": "string",
+ "description": "Pass 'random' to send signature request emails to all parties right away. The order is 'preserved' by default so the second party will receive a signature request email only after the document is signed by the first party.",
+ "default": "preserved",
+ "enum": [
+ "preserved",
+ "random"
+ ]
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Specify URL to redirect to after the submission completion."
+ },
+ "bcc_completed": {
+ "type": "string",
+ "description": "Specify BCC address to send signed documents to after the completion."
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails."
+ },
+ "expire_at": {
+ "type": "string",
+ "description": "Specify the expiration date and time after which the submission becomes unavailable for signature.",
+ "example": "2024-09-01 12:00:00 UTC"
+ },
+ "template_ids": {
+ "type": "array",
+ "description": "An optional array of template IDs to use in the submission along with the provided documents. This can be used to create multi-document submissions when some of the required documents exist within templates.",
+ "items": {
+ "type": "integer",
+ "description": "The ID of the template to use for the submission."
+ }
+ },
+ "documents": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "name",
+ "file"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document."
+ },
+ "file": {
+ "example": "base64",
+ "type": "string",
+ "format": "base64",
+ "description": "Base64-encoded content of the PDF or DOCX file or downloadable file URL."
+ },
+ "position": {
+ "type": "integer",
+ "description": "Document position in the submission. If not specified, the document will be added in the order it appears in the documents array."
+ }
+ }
+ }
+ },
+ "submitters": {
+ "type": "array",
+ "description": "The list of submitters for the submission.",
+ "items": {
+ "type": "object",
+ "required": [
+ "email"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the submitter."
+ },
+ "role": {
+ "type": "string",
+ "description": "The role name or title of the submitter.",
+ "example": "First Party"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the submitter.",
+ "format": "email",
+ "example": "john.doe@example.com"
+ },
+ "phone": {
+ "type": "string",
+ "description": "The phone number of the submitter, formatted according to the E.164 standard.",
+ "example": "+1234567890"
+ },
+ "values": {
+ "type": "object",
+ "description": "An object with pre-filled values for the submission. Use field names for keys of the object. For more configurations see `fields` param."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this submitter within your app."
+ },
+ "completed": {
+ "type": "boolean",
+ "description": "Pass `true` to mark submitter as completed and auto-signed via API."
+ },
+ "metadata": {
+ "type": "object",
+ "description": "Metadata object with additional submitter information.",
+ "example": "{ \"customField\": \"value\" }"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending only for this submitter.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails for this submitter."
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Submitter specific URL to redirect to after the submission completion."
+ },
+ "order": {
+ "type": "integer",
+ "description": "The order of the submitter in the workflow (e.g., 0 for the first signer, 1 for the second, etc.). Use the same order number to create order groups. By default, submitters are ordered as in the submitters array."
+ },
+ "require_phone_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require phone 2FA verification via a one-time code sent to the phone number in order to access the documents.",
+ "default": false
+ },
+ "require_email_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require email 2FA verification via a one-time code sent to the email address in order to access the documents.",
+ "default": false
+ },
+ "invite_by": {
+ "type": "string",
+ "description": "Set the role name of the previous party that should invite this party via email."
+ },
+ "fields": {
+ "type": "array",
+ "description": "A list of configurations for document form fields.",
+ "items": {
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document field name.",
+ "example": "First Name"
+ },
+ "default_value": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ }
+ ]
+ }
+ }
+ ],
+ "description": "Default value of the field. Use base64 encoded file or a public URL to the image file to set default signature or image fields.",
+ "example": "Acme"
+ },
+ "readonly": {
+ "type": "boolean",
+ "description": "Set `true` to make it impossible for the submitter to edit predefined field value.",
+ "default": false
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Set `true` to make the field required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "roles": {
+ "type": "array",
+ "description": "A list of roles for the submitter. Use this param to merge multiple roles into one submitter.",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body. Can include the following variables: {{submission.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "merge_documents": {
+ "type": "boolean",
+ "description": "Set `true` to merge the documents into a single PDF file.",
+ "default": false
+ },
+ "remove_tags": {
+ "type": "boolean",
+ "description": "Pass `false` to disable the removal of {{text}} tags from the PDF. This can be used along with transparent text tags for faster and more robust PDF processing.",
+ "default": true
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Create a submission from HTML
+
+This API endpoint allows you to create a one-off submission request document using the provided HTML content, with special field tags rendered as a fillable and signable form. Related Guides Create PDF document fillable form with HTML
+
+```go
+package main
+
+import (
+ "fmt"
+ "strings"
+ "net/http"
+ "io"
+)
+
+func main() {
+
+ url := "https://api.wabosign.com/submissions/html"
+
+ payload := strings.NewReader("{\"name\":\"Test Submission Document\",\"documents\":[{\"name\":\"Test Document\",\"html\":\"
Lorem Ipsum is simply dummy text of the\\n\\n\\nand typesetting industry
\\n\"}],\"submitters\":[{\"role\":\"First Party\",\"email\":\"john.doe@example.com\"}]}")
+
+ req, _ := http.NewRequest("POST", url, payload)
+
+ req.Header.Add("X-Auth-Token", "API_KEY")
+ req.Header.Add("content-type", "application/json")
+
+ res, _ := http.DefaultClient.Do(req)
+
+ defer res.Body.Close()
+ body, _ := io.ReadAll(res.Body)
+
+ fmt.Println(res)
+ fmt.Println(string(body))
+
+}
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Create a submission from HTML",
+ "operationId": "createSubmissionFromHtml",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "documents",
+ "submitters"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document submission",
+ "example": "Test Submission Document"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "order": {
+ "type": "string",
+ "description": "Pass 'random' to send signature request emails to all parties right away. The order is 'preserved' by default so the second party will receive a signature request email only after the document is signed by the first party.",
+ "default": "preserved",
+ "enum": [
+ "preserved",
+ "random"
+ ]
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Specify URL to redirect to after the submission completion."
+ },
+ "bcc_completed": {
+ "type": "string",
+ "description": "Specify BCC address to send signed documents to after the completion."
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails."
+ },
+ "expire_at": {
+ "type": "string",
+ "description": "Specify the expiration date and time after which the submission becomes unavailable for signature.",
+ "example": "2024-09-01 12:00:00 UTC"
+ },
+ "template_ids": {
+ "type": "array",
+ "description": "An optional array of template IDs to use in the submission along with the provided documents. This can be used to create multi-document submissions when some of the required documents exist within templates.",
+ "items": {
+ "type": "integer",
+ "description": "The ID of the template to use for the submission."
+ }
+ },
+ "documents": {
+ "type": "array",
+ "description": "The list of documents built from HTML. Can be used to create a submission with multiple documents.",
+ "items": {
+ "type": "object",
+ "required": [
+ "html"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document name. Random uuid will be assigned when not specified.",
+ "example": "Test Document"
+ },
+ "html": {
+ "type": "string",
+ "description": "HTML document content with field tags.",
+ "example": "
Lorem Ipsum is simply dummy text of the\n\n\nand typesetting industry
\n"
+ },
+ "html_header": {
+ "type": "string",
+ "description": "HTML document content of the header to be displayed on every page."
+ },
+ "html_footer": {
+ "type": "string",
+ "description": "HTML document content of the footer to be displayed on every page."
+ },
+ "size": {
+ "type": "string",
+ "default": "Letter",
+ "description": "Page size. Letter 8.5 x 11 will be assigned when not specified.",
+ "enum": [
+ "Letter",
+ "Legal",
+ "Tabloid",
+ "Ledger",
+ "A0",
+ "A1",
+ "A2",
+ "A3",
+ "A4",
+ "A5",
+ "A6"
+ ],
+ "example": "A4"
+ },
+ "position": {
+ "type": "integer",
+ "description": "Document position in the submission. If not specified, the document will be added in the order it appears in the documents array."
+ }
+ }
+ }
+ },
+ "submitters": {
+ "type": "array",
+ "description": "The list of submitters for the submission.",
+ "items": {
+ "type": "object",
+ "required": [
+ "email"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the submitter."
+ },
+ "role": {
+ "type": "string",
+ "description": "The role name or title of the submitter.",
+ "example": "First Party"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the submitter.",
+ "format": "email",
+ "example": "john.doe@example.com"
+ },
+ "phone": {
+ "type": "string",
+ "description": "The phone number of the submitter, formatted according to the E.164 standard.",
+ "example": "+1234567890"
+ },
+ "values": {
+ "type": "object",
+ "description": "An object with pre-filled values for the submission. Use field names for keys of the object. For more configurations see `fields` param."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this submitter within your app."
+ },
+ "completed": {
+ "type": "boolean",
+ "description": "Pass `true` to mark submitter as completed and auto-signed via API."
+ },
+ "metadata": {
+ "type": "object",
+ "description": "Metadata object with additional submitter information.",
+ "example": "{ \"customField\": \"value\" }"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending only for this submitter.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails for this submitter."
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Submitter specific URL to redirect to after the submission completion."
+ },
+ "order": {
+ "type": "integer",
+ "description": "The order of the submitter in the workflow (e.g., 0 for the first signer, 1 for the second, etc.). Use the same order number to create order groups. By default, submitters are ordered as in the submitters array."
+ },
+ "require_phone_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require phone 2FA verification via a one-time code sent to the phone number in order to access the documents.",
+ "default": false
+ },
+ "require_email_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require email 2FA verification via a one-time code sent to the email address in order to access the documents.",
+ "default": false
+ },
+ "invite_by": {
+ "type": "string",
+ "description": "Set the role name of the previous party that should invite this party via email."
+ },
+ "fields": {
+ "type": "array",
+ "description": "A list of configurations for document form fields.",
+ "items": {
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document field name.",
+ "example": "First Name"
+ },
+ "default_value": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ }
+ ]
+ }
+ }
+ ],
+ "description": "Default value of the field. Use base64 encoded file or a public URL to the image file to set default signature or image fields.",
+ "example": "Acme"
+ },
+ "readonly": {
+ "type": "boolean",
+ "description": "Set `true` to make it impossible for the submitter to edit predefined field value.",
+ "default": false
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Set `true` to make the field required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "roles": {
+ "type": "array",
+ "description": "A list of roles for the submitter. Use this param to merge multiple roles into one submitter.",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body. Can include the following variables: {{submission.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "merge_documents": {
+ "type": "boolean",
+ "description": "Set `true` to merge the documents into a single PDF file.",
+ "default": false
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Archive a submission
+
+The API endpoint allows you to archive a submission.
+
+```go
+package main
+
+import (
+ "fmt"
+ "net/http"
+ "io"
+)
+
+func main() {
+
+ url := "https://api.wabosign.com/submissions/1001"
+
+ req, _ := http.NewRequest("DELETE", url, nil)
+
+ req.Header.Add("X-Auth-Token", "API_KEY")
+
+ res, _ := http.DefaultClient.Do(req)
+
+ defer res.Body.Close()
+ body, _ := io.ReadAll(res.Body)
+
+ fmt.Println(res)
+ fmt.Println(string(body))
+
+}
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Archive a submission",
+ "operationId": "archiveSubmission",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submission.",
+ "example": 1001
+ }
+ ]
+}
+```
+
+### List all submitters
+
+The API endpoint provides the ability to retrieve a list of submitters.
+
+```go
+package main
+
+import (
+ "fmt"
+ "net/http"
+ "io"
+)
+
+func main() {
+
+ url := "https://api.wabosign.com/submitters"
+
+ req, _ := http.NewRequest("GET", url, nil)
+
+ req.Header.Add("X-Auth-Token", "API_KEY")
+
+ res, _ := http.DefaultClient.Do(req)
+
+ defer res.Body.Close()
+ body, _ := io.ReadAll(res.Body)
+
+ fmt.Println(res)
+ fmt.Println(string(body))
+
+}
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submitters"
+ ],
+ "summary": "List all submitters",
+ "operationId": "getSubmitters",
+ "parameters": [
+ {
+ "name": "submission_id",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The submission ID allows you to receive only the submitters related to that specific submission."
+ },
+ {
+ "name": "q",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter submitters on name, email or phone partial match."
+ },
+ {
+ "name": "slug",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter submitters by unique slug.",
+ "example": "zAyL9fH36Havvm"
+ },
+ {
+ "name": "completed_after",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "example": "2024-03-05 9:32:20",
+ "description": "The date and time string value to filter submitters that completed the submission after the specified date and time."
+ },
+ {
+ "name": "completed_before",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "example": "2024-03-06 19:32:20",
+ "description": "The date and time string value to filter submitters that completed the submission before the specified date and time."
+ },
+ {
+ "name": "external_id",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "The unique applications-specific identifier provided for a submitter when initializing a signature request. It allows you to receive only submitters with a specified external id."
+ },
+ {
+ "name": "limit",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The number of submitters to return. Default value is 10. Maximum value is 100."
+ },
+ {
+ "name": "after",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submitter to start the list from. It allows you to receive only submitters with id greater than the specified value. Pass ID value from the `pagination.next` response to load the next batch of submitters."
+ },
+ {
+ "name": "before",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submitter to end the list with. It allows you to receive only submitters with id less than the specified value."
+ }
+ ]
+}
+```
+
+### Get a submitter
+
+The API endpoint provides functionality to retrieve information about a submitter, along with the submitter documents and field values.
+
+```go
+package main
+
+import (
+ "fmt"
+ "net/http"
+ "io"
+)
+
+func main() {
+
+ url := "https://api.wabosign.com/submitters/500001"
+
+ req, _ := http.NewRequest("GET", url, nil)
+
+ req.Header.Add("X-Auth-Token", "API_KEY")
+
+ res, _ := http.DefaultClient.Do(req)
+
+ defer res.Body.Close()
+ body, _ := io.ReadAll(res.Body)
+
+ fmt.Println(res)
+ fmt.Println(string(body))
+
+}
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submitters"
+ ],
+ "summary": "Get a submitter",
+ "operationId": "getSubmitter",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submitter.",
+ "example": 500001
+ }
+ ]
+}
+```
+
+### Update a submitter
+
+The API endpoint allows you to update submitter details, pre-fill or update field values and re-send emails. Related Guides Automatically sign documents via API
+
+```go
+package main
+
+import (
+ "fmt"
+ "strings"
+ "net/http"
+ "io"
+)
+
+func main() {
+
+ url := "https://api.wabosign.com/submitters/500001"
+
+ payload := strings.NewReader("{\"email\":\"john.doe@example.com\",\"fields\":[{\"name\":\"First Name\",\"default_value\":\"Acme\"}]}")
+
+ req, _ := http.NewRequest("PUT", url, payload)
+
+ req.Header.Add("X-Auth-Token", "API_KEY")
+ req.Header.Add("content-type", "application/json")
+
+ res, _ := http.DefaultClient.Do(req)
+
+ defer res.Body.Close()
+ body, _ := io.ReadAll(res.Body)
+
+ fmt.Println(res)
+ fmt.Println(string(body))
+
+}
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submitters"
+ ],
+ "summary": "Update a submitter",
+ "operationId": "updateSubmitter",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submitter.",
+ "example": 500001
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the submitter."
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the submitter.",
+ "format": "email",
+ "example": "john.doe@example.com"
+ },
+ "phone": {
+ "type": "string",
+ "description": "The phone number of the submitter, formatted according to the E.164 standard.",
+ "example": "+1234567890"
+ },
+ "values": {
+ "type": "object",
+ "description": "An object with pre-filled values for the submission. Use field names for keys of the object. For more configurations see `fields` param."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this submitter within your app."
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `true` to re-send signature request emails."
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to re-send signature request via phone number SMS.",
+ "default": false
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails."
+ },
+ "completed": {
+ "type": "boolean",
+ "description": "Pass `true` to mark submitter as completed and auto-signed via API."
+ },
+ "metadata": {
+ "type": "object",
+ "description": "Metadata object with additional submitter information.",
+ "example": "{ \"customField\": \"value\" }"
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Submitter specific URL to redirect to after the submission completion."
+ },
+ "require_phone_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require phone 2FA verification via a one-time code sent to the phone number in order to access the documents.",
+ "default": false
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body. Can include the following variables: {{template.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "fields": {
+ "type": "array",
+ "description": "A list of configurations for template document form fields.",
+ "items": {
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document template field name.",
+ "example": "First Name"
+ },
+ "default_value": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ }
+ ]
+ }
+ }
+ ],
+ "description": "Default value of the field. Use base64 encoded file or a public URL to the image file to set default signature or image fields.",
+ "example": "Acme"
+ },
+ "readonly": {
+ "type": "boolean",
+ "description": "Set `true` to make it impossible for the submitter to edit predefined field value.",
+ "default": false
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Set `true` to make the field required."
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### List all templates
+
+The API endpoint provides the ability to retrieve a list of available document templates.
+
+```go
+package main
+
+import (
+ "fmt"
+ "net/http"
+ "io"
+)
+
+func main() {
+
+ url := "https://api.wabosign.com/templates"
+
+ req, _ := http.NewRequest("GET", url, nil)
+
+ req.Header.Add("X-Auth-Token", "API_KEY")
+
+ res, _ := http.DefaultClient.Do(req)
+
+ defer res.Body.Close()
+ body, _ := io.ReadAll(res.Body)
+
+ fmt.Println(res)
+ fmt.Println(string(body))
+
+}
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "List all templates",
+ "operationId": "getTemplates",
+ "parameters": [
+ {
+ "name": "q",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter templates based on the name partial match."
+ },
+ {
+ "name": "slug",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter templates by unique slug.",
+ "example": "opaKWh8WWTAcVG"
+ },
+ {
+ "name": "external_id",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "The unique applications-specific identifier provided for the template via API or Embedded template form builder. It allows you to receive only templates with your specified external id."
+ },
+ {
+ "name": "folder",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter templates by folder name."
+ },
+ {
+ "name": "archived",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "boolean"
+ },
+ "description": "Get only archived templates instead of active ones."
+ },
+ {
+ "name": "limit",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The number of templates to return. Default value is 10. Maximum value is 100."
+ },
+ {
+ "name": "after",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the template to start the list from. It allows you to receive only templates with id greater than the specified value. Pass ID value from the `pagination.next` response to load the next batch of templates."
+ },
+ {
+ "name": "before",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the template to end the list with. It allows you to receive only templates with id less than the specified value."
+ }
+ ]
+}
+```
+
+### Get a template
+
+The API endpoint provides the functionality to retrieve information about a document template.
+
+```go
+package main
+
+import (
+ "fmt"
+ "net/http"
+ "io"
+)
+
+func main() {
+
+ url := "https://api.wabosign.com/templates/1000001"
+
+ req, _ := http.NewRequest("GET", url, nil)
+
+ req.Header.Add("X-Auth-Token", "API_KEY")
+
+ res, _ := http.DefaultClient.Do(req)
+
+ defer res.Body.Close()
+ body, _ := io.ReadAll(res.Body)
+
+ fmt.Println(res)
+ fmt.Println(string(body))
+
+}
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Get a template",
+ "operationId": "getTemplate",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the document template.",
+ "example": 1000001
+ }
+ ]
+}
+```
+
+### Create a template from PDF
+
+The API endpoint provides the functionality to create a fillable document template for a PDF file. Use {{Field Name;role=Signer1;type=date}} text tags to define fillable fields in the document. See https://www.wabosign.com/examples/fieldtags.pdf for more text tag formats. Or specify the exact pixel coordinates of the document fields using `fields` param. Related Guides Use embedded text field tags to create a fillable form
+
+
+```go
+package main
+
+import (
+ "fmt"
+ "strings"
+ "net/http"
+ "io"
+)
+
+func main() {
+
+ url := "https://api.wabosign.com/templates/pdf"
+
+ payload := strings.NewReader("{\"name\":\"Test PDF\",\"documents\":[{\"name\":\"string\",\"file\":\"base64\",\"fields\":[{\"name\":\"string\",\"areas\":[{\"x\":0,\"y\":0,\"w\":0,\"h\":0,\"page\":1}]}]}]}")
+
+ req, _ := http.NewRequest("POST", url, payload)
+
+ req.Header.Add("X-Auth-Token", "API_KEY")
+ req.Header.Add("content-type", "application/json")
+
+ res, _ := http.DefaultClient.Do(req)
+
+ defer res.Body.Close()
+ body, _ := io.ReadAll(res.Body)
+
+ fmt.Println(res)
+ fmt.Println(string(body))
+
+}
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Create a template from PDF",
+ "operationId": "createTemplateFromPdf",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "documents"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the template",
+ "example": "Test PDF"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The folder's name to which the template should be created."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this template within your app. Existing template with specified `external_id` will be updated with a new PDF.",
+ "example": "unique-key"
+ },
+ "shared_link": {
+ "type": "boolean",
+ "description": "set to `true` to make the template available via a shared link. This will allow anyone with the link to create a submission from this template.",
+ "default": true
+ },
+ "documents": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "name",
+ "file"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document."
+ },
+ "file": {
+ "example": "base64",
+ "type": "string",
+ "format": "base64",
+ "description": "Base64-encoded content of the PDF file or downloadable file URL."
+ },
+ "fields": {
+ "type": "array",
+ "description": "Fields are optional if you use {{...}} text tags to define fields in the document.",
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the field."
+ },
+ "type": {
+ "type": "string",
+ "description": "Type of the field (e.g., text, signature, date, initials).",
+ "enum": [
+ "heading",
+ "text",
+ "signature",
+ "initials",
+ "date",
+ "number",
+ "image",
+ "checkbox",
+ "multiple",
+ "file",
+ "radio",
+ "select",
+ "cells",
+ "stamp",
+ "payment",
+ "phone",
+ "verification",
+ "strikethrough"
+ ]
+ },
+ "role": {
+ "type": "string",
+ "description": "Role name of the signer."
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Indicates if the field is required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "areas": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "x",
+ "y",
+ "w",
+ "h",
+ "page"
+ ],
+ "properties": {
+ "x": {
+ "type": "number",
+ "description": "X-coordinate of the field area."
+ },
+ "y": {
+ "type": "number",
+ "description": "Y-coordinate of the field area."
+ },
+ "w": {
+ "type": "number",
+ "description": "Width of the field area."
+ },
+ "h": {
+ "type": "number",
+ "description": "Height of the field area."
+ },
+ "page": {
+ "type": "integer",
+ "description": "Page number of the field area. Starts from 1.",
+ "example": 1
+ },
+ "option": {
+ "type": "string",
+ "description": "Option string value for 'radio' and 'multiple' select field types."
+ }
+ }
+ }
+ },
+ "options": {
+ "type": "array",
+ "description": "An array of option values for 'select' field type.",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "Option A",
+ "Option B"
+ ]
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "flatten": {
+ "type": "boolean",
+ "description": "Remove PDF form fields from the documents.",
+ "default": false
+ },
+ "remove_tags": {
+ "type": "boolean",
+ "description": "Pass `false` to disable the removal of {{text}} tags from the PDF. This can be used along with transparent text tags for faster and more robust PDF processing.",
+ "default": true
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Create a template from Word DOCX
+
+The API endpoint provides the functionality to create a fillable document template for existing Microsoft Word document. Use {{Field Name;role=Signer1;type=date}} text tags to define fillable fields in the document. See https://www.wabosign.com/examples/fieldtags.docx for more text tag formats. Or specify the exact pixel coordinates of the document fields using `fields` param. Related Guides Use embedded text field tags to create a fillable form
+
+
+```go
+package main
+
+import (
+ "fmt"
+ "strings"
+ "net/http"
+ "io"
+)
+
+func main() {
+
+ url := "https://api.wabosign.com/templates/docx"
+
+ payload := strings.NewReader("{\"name\":\"Test DOCX\",\"documents\":[{\"name\":\"string\",\"file\":\"base64\"}]}")
+
+ req, _ := http.NewRequest("POST", url, payload)
+
+ req.Header.Add("X-Auth-Token", "API_KEY")
+ req.Header.Add("content-type", "application/json")
+
+ res, _ := http.DefaultClient.Do(req)
+
+ defer res.Body.Close()
+ body, _ := io.ReadAll(res.Body)
+
+ fmt.Println(res)
+ fmt.Println(string(body))
+
+}
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Create a template from Word DOCX",
+ "operationId": "createTemplateFromDocx",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "documents"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the template",
+ "example": "Test DOCX"
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this template within your app. Existing template with specified `external_id` will be updated with a new document.",
+ "example": "unique-key"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The folder's name to which the template should be created."
+ },
+ "shared_link": {
+ "type": "boolean",
+ "description": "set to `true` to make the template available via a shared link. This will allow anyone with the link to create a submission from this template.",
+ "default": true
+ },
+ "documents": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "name",
+ "file"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document."
+ },
+ "file": {
+ "type": "string",
+ "example": "base64",
+ "format": "base64",
+ "description": "Base64-encoded content of the DOCX file or downloadable file URL"
+ },
+ "fields": {
+ "description": "Fields are optional if you use {{...}} text tags to define fields in the document.",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the field."
+ },
+ "type": {
+ "type": "string",
+ "description": "Type of the field (e.g., text, signature, date, initials).",
+ "enum": [
+ "heading",
+ "text",
+ "signature",
+ "initials",
+ "date",
+ "number",
+ "image",
+ "checkbox",
+ "multiple",
+ "file",
+ "radio",
+ "select",
+ "cells",
+ "stamp",
+ "payment",
+ "phone",
+ "verification",
+ "strikethrough"
+ ]
+ },
+ "role": {
+ "type": "string",
+ "description": "Role name of the signer."
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Indicates if the field is required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "areas": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "x": {
+ "type": "number",
+ "description": "X-coordinate of the field area."
+ },
+ "y": {
+ "type": "number",
+ "description": "Y-coordinate of the field area."
+ },
+ "w": {
+ "type": "number",
+ "description": "Width of the field area."
+ },
+ "h": {
+ "type": "number",
+ "description": "Height of the field area."
+ },
+ "page": {
+ "type": "integer",
+ "description": "Page number of the field area. Starts from 1."
+ },
+ "option": {
+ "type": "string",
+ "description": "Option string value for 'radio' and 'multiple' select field types."
+ }
+ }
+ }
+ },
+ "options": {
+ "type": "array",
+ "description": "An array of option values for 'select' field type.",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "Option A",
+ "Option B"
+ ]
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Create a template from HTML
+
+The API endpoint provides the functionality to seamlessly generate a PDF document template by utilizing the provided HTML content while incorporating pre-defined fields. Related Guides Create PDF document fillable form with HTML
+
+```go
+package main
+
+import (
+ "fmt"
+ "strings"
+ "net/http"
+ "io"
+)
+
+func main() {
+
+ url := "https://api.wabosign.com/templates/html"
+
+ payload := strings.NewReader("{\"html\":\"
Lorem Ipsum is simply dummy text of the\\n\\n\\nand typesetting industry
Lorem Ipsum is simply dummy text of the\n\n\nand typesetting industry
\n"
+ },
+ "html_header": {
+ "type": "string",
+ "description": "HTML template of the header to be displayed on every page."
+ },
+ "html_footer": {
+ "type": "string",
+ "description": "HTML template of the footer to be displayed on every page."
+ },
+ "name": {
+ "type": "string",
+ "description": "Template name. Random uuid will be assigned when not specified.",
+ "example": "Test Template"
+ },
+ "size": {
+ "type": "string",
+ "default": "Letter",
+ "description": "Page size. Letter 8.5 x 11 will be assigned when not specified.",
+ "enum": [
+ "Letter",
+ "Legal",
+ "Tabloid",
+ "Ledger",
+ "A0",
+ "A1",
+ "A2",
+ "A3",
+ "A4",
+ "A5",
+ "A6"
+ ],
+ "example": "A4"
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this template within your app. Existing template with specified `external_id` will be updated with a new HTML.",
+ "example": "714d974e-83d8-11ee-b962-0242ac120002"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The folder's name to which the template should be created."
+ },
+ "shared_link": {
+ "type": "boolean",
+ "description": "set to `true` to make the template available via a shared link. This will allow anyone with the link to create a submission from this template.",
+ "default": true
+ },
+ "documents": {
+ "type": "array",
+ "description": "The list of documents built from HTML. Can be used to create a template with multiple documents. Leave `documents` param empty when using a top-level `html` param for a template with a single document.",
+ "items": {
+ "type": "object",
+ "required": [
+ "html"
+ ],
+ "properties": {
+ "html": {
+ "type": "string",
+ "description": "HTML template with field tags.",
+ "example": "
Lorem Ipsum is simply dummy text of the\n\n\nand typesetting industry
\n"
+ },
+ "name": {
+ "type": "string",
+ "description": "Document name. Random uuid will be assigned when not specified.",
+ "example": "Test Document"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Clone a template
+
+The API endpoint allows you to clone existing template into a new template.
+
+```go
+package main
+
+import (
+ "fmt"
+ "strings"
+ "net/http"
+ "io"
+)
+
+func main() {
+
+ url := "https://api.wabosign.com/templates/1000001/clone"
+
+ payload := strings.NewReader("{\"name\":\"Cloned Template\"}")
+
+ req, _ := http.NewRequest("POST", url, payload)
+
+ req.Header.Add("X-Auth-Token", "API_KEY")
+ req.Header.Add("content-type", "application/json")
+
+ res, _ := http.DefaultClient.Do(req)
+
+ defer res.Body.Close()
+ body, _ := io.ReadAll(res.Body)
+
+ fmt.Println(res)
+ fmt.Println(string(body))
+
+}
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Clone a template",
+ "operationId": "cloneTemplate",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the documents template.",
+ "example": 1000001
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Template name. Existing name with (Clone) suffix will be used if not specified.",
+ "example": "Cloned Template"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The folder's name to which the template should be cloned."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this template within your app."
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Merge templates
+
+The API endpoint allows you to merge multiple templates with documents and fields into a new combined template.
+
+```go
+package main
+
+import (
+ "fmt"
+ "strings"
+ "net/http"
+ "io"
+)
+
+func main() {
+
+ url := "https://api.wabosign.com/templates/merge"
+
+ payload := strings.NewReader("{\"template_ids\":[321,432],\"name\":\"Merged Template\"}")
+
+ req, _ := http.NewRequest("POST", url, payload)
+
+ req.Header.Add("X-Auth-Token", "API_KEY")
+ req.Header.Add("content-type", "application/json")
+
+ res, _ := http.DefaultClient.Do(req)
+
+ defer res.Body.Close()
+ body, _ := io.ReadAll(res.Body)
+
+ fmt.Println(res)
+ fmt.Println(string(body))
+
+}
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Merge templates",
+ "operationId": "mergeTemplate",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "template_ids"
+ ],
+ "properties": {
+ "template_ids": {
+ "type": "array",
+ "description": "An array of template ids to merge into a new template.",
+ "items": {
+ "type": "integer"
+ },
+ "example": [
+ 321,
+ 432
+ ]
+ },
+ "name": {
+ "type": "string",
+ "description": "Template name. Existing name with (Merged) suffix will be used if not specified.",
+ "example": "Merged Template"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The name of the folder in which the merged template should be placed."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this template within your app."
+ },
+ "shared_link": {
+ "type": "boolean",
+ "description": "set to `true` to make the template available via a shared link. This will allow anyone with the link to create a submission from this template.",
+ "default": true
+ },
+ "roles": {
+ "type": "array",
+ "description": "An array of submitter role names to be used in the merged template.",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "Agent",
+ "Customer"
+ ]
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Update a template
+
+The API endpoint provides the functionality to move a document template to a different folder and update the name of the template.
+
+```go
+package main
+
+import (
+ "fmt"
+ "strings"
+ "net/http"
+ "io"
+)
+
+func main() {
+
+ url := "https://api.wabosign.com/templates/1000001"
+
+ payload := strings.NewReader("{\"name\":\"New Document Name\",\"folder_name\":\"New Folder\"}")
+
+ req, _ := http.NewRequest("PUT", url, payload)
+
+ req.Header.Add("X-Auth-Token", "API_KEY")
+ req.Header.Add("content-type", "application/json")
+
+ res, _ := http.DefaultClient.Do(req)
+
+ defer res.Body.Close()
+ body, _ := io.ReadAll(res.Body)
+
+ fmt.Println(res)
+ fmt.Println(string(body))
+
+}
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Update a template",
+ "operationId": "updateTemplate",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the document template.",
+ "example": 1000001
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the template",
+ "example": "New Document Name"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The folder's name to which the template should be moved.",
+ "example": "New Folder"
+ },
+ "roles": {
+ "type": "array",
+ "description": "An array of submitter role names to update the template with.",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "Agent",
+ "Customer"
+ ]
+ },
+ "archived": {
+ "type": "boolean",
+ "description": "Set `false` to unarchive template."
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Update template documents
+
+The API endpoint allows you to add, remove or replace documents in the template with provided PDF/DOCX file or HTML content.
+
+```go
+package main
+
+import (
+ "fmt"
+ "strings"
+ "net/http"
+ "io"
+)
+
+func main() {
+
+ url := "https://api.wabosign.com/templates/1000001/documents"
+
+ payload := strings.NewReader("{\"documents\":[{\"file\":\"string\"}]}")
+
+ req, _ := http.NewRequest("PUT", url, payload)
+
+ req.Header.Add("X-Auth-Token", "API_KEY")
+ req.Header.Add("content-type", "application/json")
+
+ res, _ := http.DefaultClient.Do(req)
+
+ defer res.Body.Close()
+ body, _ := io.ReadAll(res.Body)
+
+ fmt.Println(res)
+ fmt.Println(string(body))
+
+}
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Update template documents",
+ "operationId": "addDocumentToTemplate",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the documents template.",
+ "example": 1000001
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "documents": {
+ "type": "array",
+ "description": "The list of documents to add or replace in the template.",
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document name. Random uuid will be assigned when not specified.",
+ "example": "Test Template"
+ },
+ "file": {
+ "type": "string",
+ "format": "base64",
+ "description": "Base64-encoded content of the PDF or DOCX file or downloadable file URL. Leave it empty if you create a new document using HTML param."
+ },
+ "html": {
+ "type": "string",
+ "description": "HTML template with field tags. Leave it empty if you add a document via PDF or DOCX base64 encoded file param or URL."
+ },
+ "position": {
+ "type": "integer",
+ "description": "Position of the document. By default will be added as the last document in the template.",
+ "example": 0
+ },
+ "replace": {
+ "type": "boolean",
+ "default": false,
+ "description": "Set to `true` to replace existing document with a new file at `position`. Existing document fields will be transferred to the new document if it doesn't contain any fields."
+ },
+ "remove": {
+ "type": "boolean",
+ "default": false,
+ "description": "Set to `true` to remove existing document at given `position` or with given `name`."
+ }
+ }
+ }
+ },
+ "merge": {
+ "type": "boolean",
+ "default": false,
+ "description": "Set to `true` to merge all existing and new documents into a single PDF document in the template."
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Archive a template
+
+The API endpoint allows you to archive a document template.
+
+```go
+package main
+
+import (
+ "fmt"
+ "net/http"
+ "io"
+)
+
+func main() {
+
+ url := "https://api.wabosign.com/templates/1000001"
+
+ req, _ := http.NewRequest("DELETE", url, nil)
+
+ req.Header.Add("X-Auth-Token", "API_KEY")
+
+ res, _ := http.DefaultClient.Do(req)
+
+ defer res.Body.Close()
+ body, _ := io.ReadAll(res.Body)
+
+ fmt.Println(res)
+ fmt.Println(string(body))
+
+}
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Archive a template",
+ "operationId": "archiveTemplate",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the document template.",
+ "example": 1000001
+ }
+ ]
+}
+```
+
diff --git a/docs/api/java.md b/docs/api/java.md
new file mode 100644
index 00000000..94e5ead6
--- /dev/null
+++ b/docs/api/java.md
@@ -0,0 +1,3874 @@
+### List all submissions
+
+The API endpoint provides the ability to retrieve a list of available submissions.
+
+```java
+HttpResponse response = Unirest.get("https://api.wabosign.com/submissions")
+ .header("X-Auth-Token", "API_KEY")
+ .asString();
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "List all submissions",
+ "operationId": "getSubmissions",
+ "parameters": [
+ {
+ "name": "template_id",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The template ID allows you to receive only the submissions created from that specific template."
+ },
+ {
+ "name": "status",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string",
+ "enum": [
+ "pending",
+ "completed",
+ "declined",
+ "expired"
+ ]
+ },
+ "description": "Filter submissions by status."
+ },
+ {
+ "name": "q",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter submissions based on submitters name, email or phone partial match."
+ },
+ {
+ "name": "slug",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter submissions by unique slug.",
+ "example": "NtLDQM7eJX2ZMd"
+ },
+ {
+ "name": "template_folder",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter submissions by template folder name."
+ },
+ {
+ "name": "archived",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "boolean"
+ },
+ "description": "Returns only archived submissions when `true` and only active submissions when `false`."
+ },
+ {
+ "name": "limit",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The number of submissions to return. Default value is 10. Maximum value is 100."
+ },
+ {
+ "name": "after",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submission to start the list from. It allows you to receive only submissions with an ID greater than the specified value. Pass ID value from the `pagination.next` response to load the next batch of submissions."
+ },
+ {
+ "name": "before",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submission that marks the end of the list. It allows you to receive only submissions with an ID less than the specified value."
+ }
+ ]
+}
+```
+
+### Get a submission
+
+The API endpoint provides the functionality to retrieve information about a submission.
+
+```java
+HttpResponse response = Unirest.get("https://api.wabosign.com/submissions/1001")
+ .header("X-Auth-Token", "API_KEY")
+ .asString();
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Get a submission",
+ "operationId": "getSubmission",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submission.",
+ "example": 1001
+ }
+ ]
+}
+```
+
+### Get submission documents
+
+This endpoint returns a list of partially filled documents for a submission. If the submission has been completed, the final signed documents are returned.
+
+```java
+HttpResponse response = Unirest.get("https://api.wabosign.com/submissions/1001/documents")
+ .header("X-Auth-Token", "API_KEY")
+ .asString();
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Get submission documents",
+ "operationId": "getSubmissionDocuments",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submission.",
+ "example": 1001
+ }
+ ]
+}
+```
+
+### Create a submission
+
+This API endpoint allows you to create signature requests (submissions) for a document template and send them to the specified submitters (signers). Related Guides Send documents for signature via API Pre-fill PDF document form fields with API
+
+```java
+HttpResponse response = Unirest.post("https://api.wabosign.com/submissions")
+ .header("X-Auth-Token", "API_KEY")
+ .header("content-type", "application/json")
+ .body("{\"template_id\":1000001,\"send_email\":true,\"submitters\":[{\"role\":\"First Party\",\"email\":\"john.doe@example.com\"}]}")
+ .asString();
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Create a submission",
+ "operationId": "createSubmission",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "template_id",
+ "submitters"
+ ],
+ "properties": {
+ "template_id": {
+ "type": "integer",
+ "description": "The unique identifier of the template. Document template forms can be created via the Web UI, PDF and DOCX API, or HTML API.",
+ "example": 1000001
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "order": {
+ "type": "string",
+ "description": "Pass 'random' to send signature request emails to all parties right away. The order is 'preserved' by default so the second party will receive a signature request email only after the document is signed by the first party.",
+ "default": "preserved",
+ "enum": [
+ "preserved",
+ "random"
+ ]
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Specify URL to redirect to after the submission completion."
+ },
+ "bcc_completed": {
+ "type": "string",
+ "description": "Specify BCC address to send signed documents to after the completion."
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails."
+ },
+ "expire_at": {
+ "type": "string",
+ "description": "Specify the expiration date and time after which the submission becomes unavailable for signature.",
+ "example": "2024-09-01 12:00:00 UTC"
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body. Can include the following variables: {{template.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "submitters": {
+ "type": "array",
+ "description": "The list of submitters for the submission.",
+ "items": {
+ "type": "object",
+ "required": [
+ "email"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the submitter."
+ },
+ "role": {
+ "type": "string",
+ "description": "The role name or title of the submitter.",
+ "example": "First Party"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the submitter.",
+ "format": "email",
+ "example": "john.doe@example.com"
+ },
+ "phone": {
+ "type": "string",
+ "description": "The phone number of the submitter, formatted according to the E.164 standard.",
+ "example": "+1234567890"
+ },
+ "values": {
+ "type": "object",
+ "description": "An object with pre-filled values for the submission. Use field names for keys of the object. For more configurations see `fields` param."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this submitter within your app."
+ },
+ "completed": {
+ "type": "boolean",
+ "description": "Pass `true` to mark submitter as completed and auto-signed via API."
+ },
+ "metadata": {
+ "type": "object",
+ "description": "Metadata object with additional submitter information.",
+ "example": "{ \"customField\": \"value\" }"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending only for this submitter.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails for this submitter."
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Submitter specific URL to redirect to after the submission completion."
+ },
+ "order": {
+ "type": "integer",
+ "description": "The order of the submitter in the workflow (e.g., 0 for the first signer, 1 for the second, etc.). Use the same order number to create order groups. By default, submitters are ordered as in the submitters array."
+ },
+ "require_phone_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require phone 2FA verification via a one-time code sent to the phone number in order to access the documents.",
+ "default": false
+ },
+ "require_email_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require email 2FA verification via a one-time code sent to the email address in order to access the documents.",
+ "default": false
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject for the submitter."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body for the submitter. Can include the following variables: {{template.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "fields": {
+ "type": "array",
+ "description": "A list of configurations for template document form fields.",
+ "items": {
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document template field name.",
+ "example": "First Name"
+ },
+ "default_value": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ }
+ ]
+ }
+ }
+ ],
+ "description": "Default value of the field. Use base64 encoded file or a public URL to the image file to set default signature or image fields.",
+ "example": "Acme"
+ },
+ "readonly": {
+ "type": "boolean",
+ "description": "Set `true` to make it impossible for the submitter to edit predefined field value.",
+ "default": false
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Set `true` to make the field required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "roles": {
+ "type": "array",
+ "description": "A list of roles for the submitter. Use this param to merge multiple roles into one submitter.",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Create a submission from PDF
+
+The API endpoint provides the functionality to create one-off submission request from a PDF. Use {{Field Name;role=Signer1;type=date}} text tags to define fillable fields in the document. See https://www.wabosign.com/examples/fieldtags.pdf for more text tag formats. Or specify the exact pixel coordinates of the document fields using `fields` param. Related Guides Use embedded text field tags to create a fillable form
+
+
+```java
+HttpResponse response = Unirest.post("https://api.wabosign.com/submissions/pdf")
+ .header("X-Auth-Token", "API_KEY")
+ .header("content-type", "application/json")
+ .body("{\"name\":\"Test Submission Document\",\"documents\":[{\"name\":\"string\",\"file\":\"base64\",\"fields\":[{\"name\":\"string\",\"areas\":[{\"x\":0,\"y\":0,\"w\":0,\"h\":0,\"page\":1}]}]}],\"submitters\":[{\"role\":\"First Party\",\"email\":\"john.doe@example.com\"}]}")
+ .asString();
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Create a submission from PDF",
+ "operationId": "createSubmissionFromPdf",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "documents",
+ "submitters"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document submission.",
+ "example": "Test Submission Document"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "order": {
+ "type": "string",
+ "description": "Pass 'random' to send signature request emails to all parties right away. The order is 'preserved' by default so the second party will receive a signature request email only after the document is signed by the first party.",
+ "default": "preserved",
+ "enum": [
+ "preserved",
+ "random"
+ ]
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Specify URL to redirect to after the submission completion."
+ },
+ "bcc_completed": {
+ "type": "string",
+ "description": "Specify BCC address to send signed documents to after the completion."
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails."
+ },
+ "expire_at": {
+ "type": "string",
+ "description": "Specify the expiration date and time after which the submission becomes unavailable for signature.",
+ "example": "2024-09-01 12:00:00 UTC"
+ },
+ "template_ids": {
+ "type": "array",
+ "description": "An optional array of template IDs to use in the submission along with the provided documents. This can be used to create multi-document submissions when some of the required documents exist within templates.",
+ "items": {
+ "type": "integer",
+ "description": "The ID of the template to use for the submission."
+ }
+ },
+ "documents": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "name",
+ "file"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document."
+ },
+ "file": {
+ "example": "base64",
+ "type": "string",
+ "format": "base64",
+ "description": "Base64-encoded content of the PDF file or downloadable file URL."
+ },
+ "fields": {
+ "type": "array",
+ "description": "Fields are optional if you use {{...}} text tags to define fields in the document.",
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the field."
+ },
+ "type": {
+ "type": "string",
+ "description": "Type of the field (e.g., text, signature, date, initials).",
+ "enum": [
+ "heading",
+ "text",
+ "signature",
+ "initials",
+ "date",
+ "number",
+ "image",
+ "checkbox",
+ "multiple",
+ "file",
+ "radio",
+ "select",
+ "cells",
+ "stamp",
+ "payment",
+ "phone",
+ "verification",
+ "strikethrough"
+ ]
+ },
+ "role": {
+ "type": "string",
+ "description": "Role name of the signer."
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Indicates if the field is required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "areas": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "x",
+ "y",
+ "w",
+ "h",
+ "page"
+ ],
+ "properties": {
+ "x": {
+ "type": "number",
+ "description": "X-coordinate of the field area."
+ },
+ "y": {
+ "type": "number",
+ "description": "Y-coordinate of the field area."
+ },
+ "w": {
+ "type": "number",
+ "description": "Width of the field area."
+ },
+ "h": {
+ "type": "number",
+ "description": "Height of the field area."
+ },
+ "page": {
+ "type": "integer",
+ "description": "Page number of the field area. Starts from 1.",
+ "example": 1
+ },
+ "option": {
+ "type": "string",
+ "description": "Option string value for 'radio' and 'multiple' select field types."
+ }
+ }
+ }
+ },
+ "options": {
+ "type": "array",
+ "description": "An array of option values for 'select' field type.",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "Option A",
+ "Option B"
+ ]
+ }
+ }
+ }
+ },
+ "position": {
+ "type": "integer",
+ "description": "Document position in the submission. If not specified, the document will be added in the order it appears in the documents array."
+ }
+ }
+ }
+ },
+ "submitters": {
+ "type": "array",
+ "description": "The list of submitters for the submission.",
+ "items": {
+ "type": "object",
+ "required": [
+ "email"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the submitter."
+ },
+ "role": {
+ "type": "string",
+ "description": "The role name or title of the submitter.",
+ "example": "First Party"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the submitter.",
+ "format": "email",
+ "example": "john.doe@example.com"
+ },
+ "phone": {
+ "type": "string",
+ "description": "The phone number of the submitter, formatted according to the E.164 standard.",
+ "example": "+1234567890"
+ },
+ "values": {
+ "type": "object",
+ "description": "An object with pre-filled values for the submission. Use field names for keys of the object. For more configurations see `fields` param."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this submitter within your app."
+ },
+ "completed": {
+ "type": "boolean",
+ "description": "Pass `true` to mark submitter as completed and auto-signed via API."
+ },
+ "metadata": {
+ "type": "object",
+ "description": "Metadata object with additional submitter information.",
+ "example": "{ \"customField\": \"value\" }"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending only for this submitter.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails for this submitter."
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Submitter specific URL to redirect to after the submission completion."
+ },
+ "order": {
+ "type": "integer",
+ "description": "The order of the submitter in the workflow (e.g., 0 for the first signer, 1 for the second, etc.). Use the same order number to create order groups. By default, submitters are ordered as in the submitters array."
+ },
+ "require_phone_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require phone 2FA verification via a one-time code sent to the phone number in order to access the documents.",
+ "default": false
+ },
+ "require_email_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require email 2FA verification via a one-time code sent to the email address in order to access the documents.",
+ "default": false
+ },
+ "invite_by": {
+ "type": "string",
+ "description": "Set the role name of the previous party that should invite this party via email."
+ },
+ "fields": {
+ "type": "array",
+ "description": "A list of configurations for document form fields.",
+ "items": {
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document field name.",
+ "example": "First Name"
+ },
+ "default_value": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ }
+ ]
+ }
+ }
+ ],
+ "description": "Default value of the field. Use base64 encoded file or a public URL to the image file to set default signature or image fields.",
+ "example": "Acme"
+ },
+ "readonly": {
+ "type": "boolean",
+ "description": "Set `true` to make it impossible for the submitter to edit predefined field value.",
+ "default": false
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Set `true` to make the field required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "roles": {
+ "type": "array",
+ "description": "A list of roles for the submitter. Use this param to merge multiple roles into one submitter.",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body. Can include the following variables: {{submission.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "flatten": {
+ "type": "boolean",
+ "description": "Remove PDF form fields from the documents.",
+ "default": false
+ },
+ "merge_documents": {
+ "type": "boolean",
+ "description": "Set `true` to merge the documents into a single PDF file.",
+ "default": false
+ },
+ "remove_tags": {
+ "type": "boolean",
+ "description": "Pass `false` to disable the removal of {{text}} tags from the PDF. This can be used along with transparent text tags for faster and more robust PDF processing.",
+ "default": true
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Create a submission from DOCX
+
+The API endpoint provides functionality to create a one-off submission request from a DOCX file with dynamic content variables. Use [[variable_name]] text tags to define dynamic content variables in the document. See https://www.wabosign.com/examples/demo_template.docx for the specific text variable syntax, including dynamic content tables and list. You can also use the {{signature}} field syntax to define fillable fields, as in a PDF. Related Guides Use dynamic content variables in DOCX to create personalized documents
+
+```java
+HttpResponse response = Unirest.post("https://api.wabosign.com/submissions/docx")
+ .header("X-Auth-Token", "API_KEY")
+ .header("content-type", "application/json")
+ .body("{\"name\":\"Test Submission Document\",\"variables\":{\"variable_name\":\"value\"},\"documents\":[{\"name\":\"string\",\"file\":\"base64\"}],\"submitters\":[{\"role\":\"First Party\",\"email\":\"john.doe@example.com\"}]}")
+ .asString();
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Create a submission from DOCX",
+ "operationId": "createSubmissionFromDocx",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "documents",
+ "submitters"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document submission.",
+ "example": "Test Submission Document"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "variables": {
+ "type": "object",
+ "description": "Dynamic content variables object. Variable values can be strings, numbers, arrays, objects, or HTML content used to generate styled text, paragraphs, and tables in DOCX.",
+ "example": {
+ "variable_name": "value"
+ }
+ },
+ "order": {
+ "type": "string",
+ "description": "Pass 'random' to send signature request emails to all parties right away. The order is 'preserved' by default so the second party will receive a signature request email only after the document is signed by the first party.",
+ "default": "preserved",
+ "enum": [
+ "preserved",
+ "random"
+ ]
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Specify URL to redirect to after the submission completion."
+ },
+ "bcc_completed": {
+ "type": "string",
+ "description": "Specify BCC address to send signed documents to after the completion."
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails."
+ },
+ "expire_at": {
+ "type": "string",
+ "description": "Specify the expiration date and time after which the submission becomes unavailable for signature.",
+ "example": "2024-09-01 12:00:00 UTC"
+ },
+ "template_ids": {
+ "type": "array",
+ "description": "An optional array of template IDs to use in the submission along with the provided documents. This can be used to create multi-document submissions when some of the required documents exist within templates.",
+ "items": {
+ "type": "integer",
+ "description": "The ID of the template to use for the submission."
+ }
+ },
+ "documents": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "name",
+ "file"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document."
+ },
+ "file": {
+ "example": "base64",
+ "type": "string",
+ "format": "base64",
+ "description": "Base64-encoded content of the PDF or DOCX file or downloadable file URL."
+ },
+ "position": {
+ "type": "integer",
+ "description": "Document position in the submission. If not specified, the document will be added in the order it appears in the documents array."
+ }
+ }
+ }
+ },
+ "submitters": {
+ "type": "array",
+ "description": "The list of submitters for the submission.",
+ "items": {
+ "type": "object",
+ "required": [
+ "email"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the submitter."
+ },
+ "role": {
+ "type": "string",
+ "description": "The role name or title of the submitter.",
+ "example": "First Party"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the submitter.",
+ "format": "email",
+ "example": "john.doe@example.com"
+ },
+ "phone": {
+ "type": "string",
+ "description": "The phone number of the submitter, formatted according to the E.164 standard.",
+ "example": "+1234567890"
+ },
+ "values": {
+ "type": "object",
+ "description": "An object with pre-filled values for the submission. Use field names for keys of the object. For more configurations see `fields` param."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this submitter within your app."
+ },
+ "completed": {
+ "type": "boolean",
+ "description": "Pass `true` to mark submitter as completed and auto-signed via API."
+ },
+ "metadata": {
+ "type": "object",
+ "description": "Metadata object with additional submitter information.",
+ "example": "{ \"customField\": \"value\" }"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending only for this submitter.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails for this submitter."
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Submitter specific URL to redirect to after the submission completion."
+ },
+ "order": {
+ "type": "integer",
+ "description": "The order of the submitter in the workflow (e.g., 0 for the first signer, 1 for the second, etc.). Use the same order number to create order groups. By default, submitters are ordered as in the submitters array."
+ },
+ "require_phone_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require phone 2FA verification via a one-time code sent to the phone number in order to access the documents.",
+ "default": false
+ },
+ "require_email_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require email 2FA verification via a one-time code sent to the email address in order to access the documents.",
+ "default": false
+ },
+ "invite_by": {
+ "type": "string",
+ "description": "Set the role name of the previous party that should invite this party via email."
+ },
+ "fields": {
+ "type": "array",
+ "description": "A list of configurations for document form fields.",
+ "items": {
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document field name.",
+ "example": "First Name"
+ },
+ "default_value": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ }
+ ]
+ }
+ }
+ ],
+ "description": "Default value of the field. Use base64 encoded file or a public URL to the image file to set default signature or image fields.",
+ "example": "Acme"
+ },
+ "readonly": {
+ "type": "boolean",
+ "description": "Set `true` to make it impossible for the submitter to edit predefined field value.",
+ "default": false
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Set `true` to make the field required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "roles": {
+ "type": "array",
+ "description": "A list of roles for the submitter. Use this param to merge multiple roles into one submitter.",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body. Can include the following variables: {{submission.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "merge_documents": {
+ "type": "boolean",
+ "description": "Set `true` to merge the documents into a single PDF file.",
+ "default": false
+ },
+ "remove_tags": {
+ "type": "boolean",
+ "description": "Pass `false` to disable the removal of {{text}} tags from the PDF. This can be used along with transparent text tags for faster and more robust PDF processing.",
+ "default": true
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Create a submission from HTML
+
+This API endpoint allows you to create a one-off submission request document using the provided HTML content, with special field tags rendered as a fillable and signable form. Related Guides Create PDF document fillable form with HTML
+
+```java
+HttpResponse response = Unirest.post("https://api.wabosign.com/submissions/html")
+ .header("X-Auth-Token", "API_KEY")
+ .header("content-type", "application/json")
+ .body("{\"name\":\"Test Submission Document\",\"documents\":[{\"name\":\"Test Document\",\"html\":\"
Lorem Ipsum is simply dummy text of the\\n\\n\\nand typesetting industry
\\n\"}],\"submitters\":[{\"role\":\"First Party\",\"email\":\"john.doe@example.com\"}]}")
+ .asString();
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Create a submission from HTML",
+ "operationId": "createSubmissionFromHtml",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "documents",
+ "submitters"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document submission",
+ "example": "Test Submission Document"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "order": {
+ "type": "string",
+ "description": "Pass 'random' to send signature request emails to all parties right away. The order is 'preserved' by default so the second party will receive a signature request email only after the document is signed by the first party.",
+ "default": "preserved",
+ "enum": [
+ "preserved",
+ "random"
+ ]
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Specify URL to redirect to after the submission completion."
+ },
+ "bcc_completed": {
+ "type": "string",
+ "description": "Specify BCC address to send signed documents to after the completion."
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails."
+ },
+ "expire_at": {
+ "type": "string",
+ "description": "Specify the expiration date and time after which the submission becomes unavailable for signature.",
+ "example": "2024-09-01 12:00:00 UTC"
+ },
+ "template_ids": {
+ "type": "array",
+ "description": "An optional array of template IDs to use in the submission along with the provided documents. This can be used to create multi-document submissions when some of the required documents exist within templates.",
+ "items": {
+ "type": "integer",
+ "description": "The ID of the template to use for the submission."
+ }
+ },
+ "documents": {
+ "type": "array",
+ "description": "The list of documents built from HTML. Can be used to create a submission with multiple documents.",
+ "items": {
+ "type": "object",
+ "required": [
+ "html"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document name. Random uuid will be assigned when not specified.",
+ "example": "Test Document"
+ },
+ "html": {
+ "type": "string",
+ "description": "HTML document content with field tags.",
+ "example": "
Lorem Ipsum is simply dummy text of the\n\n\nand typesetting industry
\n"
+ },
+ "html_header": {
+ "type": "string",
+ "description": "HTML document content of the header to be displayed on every page."
+ },
+ "html_footer": {
+ "type": "string",
+ "description": "HTML document content of the footer to be displayed on every page."
+ },
+ "size": {
+ "type": "string",
+ "default": "Letter",
+ "description": "Page size. Letter 8.5 x 11 will be assigned when not specified.",
+ "enum": [
+ "Letter",
+ "Legal",
+ "Tabloid",
+ "Ledger",
+ "A0",
+ "A1",
+ "A2",
+ "A3",
+ "A4",
+ "A5",
+ "A6"
+ ],
+ "example": "A4"
+ },
+ "position": {
+ "type": "integer",
+ "description": "Document position in the submission. If not specified, the document will be added in the order it appears in the documents array."
+ }
+ }
+ }
+ },
+ "submitters": {
+ "type": "array",
+ "description": "The list of submitters for the submission.",
+ "items": {
+ "type": "object",
+ "required": [
+ "email"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the submitter."
+ },
+ "role": {
+ "type": "string",
+ "description": "The role name or title of the submitter.",
+ "example": "First Party"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the submitter.",
+ "format": "email",
+ "example": "john.doe@example.com"
+ },
+ "phone": {
+ "type": "string",
+ "description": "The phone number of the submitter, formatted according to the E.164 standard.",
+ "example": "+1234567890"
+ },
+ "values": {
+ "type": "object",
+ "description": "An object with pre-filled values for the submission. Use field names for keys of the object. For more configurations see `fields` param."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this submitter within your app."
+ },
+ "completed": {
+ "type": "boolean",
+ "description": "Pass `true` to mark submitter as completed and auto-signed via API."
+ },
+ "metadata": {
+ "type": "object",
+ "description": "Metadata object with additional submitter information.",
+ "example": "{ \"customField\": \"value\" }"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending only for this submitter.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails for this submitter."
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Submitter specific URL to redirect to after the submission completion."
+ },
+ "order": {
+ "type": "integer",
+ "description": "The order of the submitter in the workflow (e.g., 0 for the first signer, 1 for the second, etc.). Use the same order number to create order groups. By default, submitters are ordered as in the submitters array."
+ },
+ "require_phone_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require phone 2FA verification via a one-time code sent to the phone number in order to access the documents.",
+ "default": false
+ },
+ "require_email_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require email 2FA verification via a one-time code sent to the email address in order to access the documents.",
+ "default": false
+ },
+ "invite_by": {
+ "type": "string",
+ "description": "Set the role name of the previous party that should invite this party via email."
+ },
+ "fields": {
+ "type": "array",
+ "description": "A list of configurations for document form fields.",
+ "items": {
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document field name.",
+ "example": "First Name"
+ },
+ "default_value": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ }
+ ]
+ }
+ }
+ ],
+ "description": "Default value of the field. Use base64 encoded file or a public URL to the image file to set default signature or image fields.",
+ "example": "Acme"
+ },
+ "readonly": {
+ "type": "boolean",
+ "description": "Set `true` to make it impossible for the submitter to edit predefined field value.",
+ "default": false
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Set `true` to make the field required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "roles": {
+ "type": "array",
+ "description": "A list of roles for the submitter. Use this param to merge multiple roles into one submitter.",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body. Can include the following variables: {{submission.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "merge_documents": {
+ "type": "boolean",
+ "description": "Set `true` to merge the documents into a single PDF file.",
+ "default": false
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Archive a submission
+
+The API endpoint allows you to archive a submission.
+
+```java
+HttpResponse response = Unirest.delete("https://api.wabosign.com/submissions/1001")
+ .header("X-Auth-Token", "API_KEY")
+ .asString();
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Archive a submission",
+ "operationId": "archiveSubmission",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submission.",
+ "example": 1001
+ }
+ ]
+}
+```
+
+### List all submitters
+
+The API endpoint provides the ability to retrieve a list of submitters.
+
+```java
+HttpResponse response = Unirest.get("https://api.wabosign.com/submitters")
+ .header("X-Auth-Token", "API_KEY")
+ .asString();
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submitters"
+ ],
+ "summary": "List all submitters",
+ "operationId": "getSubmitters",
+ "parameters": [
+ {
+ "name": "submission_id",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The submission ID allows you to receive only the submitters related to that specific submission."
+ },
+ {
+ "name": "q",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter submitters on name, email or phone partial match."
+ },
+ {
+ "name": "slug",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter submitters by unique slug.",
+ "example": "zAyL9fH36Havvm"
+ },
+ {
+ "name": "completed_after",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "example": "2024-03-05 9:32:20",
+ "description": "The date and time string value to filter submitters that completed the submission after the specified date and time."
+ },
+ {
+ "name": "completed_before",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "example": "2024-03-06 19:32:20",
+ "description": "The date and time string value to filter submitters that completed the submission before the specified date and time."
+ },
+ {
+ "name": "external_id",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "The unique applications-specific identifier provided for a submitter when initializing a signature request. It allows you to receive only submitters with a specified external id."
+ },
+ {
+ "name": "limit",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The number of submitters to return. Default value is 10. Maximum value is 100."
+ },
+ {
+ "name": "after",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submitter to start the list from. It allows you to receive only submitters with id greater than the specified value. Pass ID value from the `pagination.next` response to load the next batch of submitters."
+ },
+ {
+ "name": "before",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submitter to end the list with. It allows you to receive only submitters with id less than the specified value."
+ }
+ ]
+}
+```
+
+### Get a submitter
+
+The API endpoint provides functionality to retrieve information about a submitter, along with the submitter documents and field values.
+
+```java
+HttpResponse response = Unirest.get("https://api.wabosign.com/submitters/500001")
+ .header("X-Auth-Token", "API_KEY")
+ .asString();
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submitters"
+ ],
+ "summary": "Get a submitter",
+ "operationId": "getSubmitter",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submitter.",
+ "example": 500001
+ }
+ ]
+}
+```
+
+### Update a submitter
+
+The API endpoint allows you to update submitter details, pre-fill or update field values and re-send emails. Related Guides Automatically sign documents via API
+
+```java
+HttpResponse response = Unirest.put("https://api.wabosign.com/submitters/500001")
+ .header("X-Auth-Token", "API_KEY")
+ .header("content-type", "application/json")
+ .body("{\"email\":\"john.doe@example.com\",\"fields\":[{\"name\":\"First Name\",\"default_value\":\"Acme\"}]}")
+ .asString();
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submitters"
+ ],
+ "summary": "Update a submitter",
+ "operationId": "updateSubmitter",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submitter.",
+ "example": 500001
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the submitter."
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the submitter.",
+ "format": "email",
+ "example": "john.doe@example.com"
+ },
+ "phone": {
+ "type": "string",
+ "description": "The phone number of the submitter, formatted according to the E.164 standard.",
+ "example": "+1234567890"
+ },
+ "values": {
+ "type": "object",
+ "description": "An object with pre-filled values for the submission. Use field names for keys of the object. For more configurations see `fields` param."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this submitter within your app."
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `true` to re-send signature request emails."
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to re-send signature request via phone number SMS.",
+ "default": false
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails."
+ },
+ "completed": {
+ "type": "boolean",
+ "description": "Pass `true` to mark submitter as completed and auto-signed via API."
+ },
+ "metadata": {
+ "type": "object",
+ "description": "Metadata object with additional submitter information.",
+ "example": "{ \"customField\": \"value\" }"
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Submitter specific URL to redirect to after the submission completion."
+ },
+ "require_phone_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require phone 2FA verification via a one-time code sent to the phone number in order to access the documents.",
+ "default": false
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body. Can include the following variables: {{template.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "fields": {
+ "type": "array",
+ "description": "A list of configurations for template document form fields.",
+ "items": {
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document template field name.",
+ "example": "First Name"
+ },
+ "default_value": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ }
+ ]
+ }
+ }
+ ],
+ "description": "Default value of the field. Use base64 encoded file or a public URL to the image file to set default signature or image fields.",
+ "example": "Acme"
+ },
+ "readonly": {
+ "type": "boolean",
+ "description": "Set `true` to make it impossible for the submitter to edit predefined field value.",
+ "default": false
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Set `true` to make the field required."
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### List all templates
+
+The API endpoint provides the ability to retrieve a list of available document templates.
+
+```java
+HttpResponse response = Unirest.get("https://api.wabosign.com/templates")
+ .header("X-Auth-Token", "API_KEY")
+ .asString();
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "List all templates",
+ "operationId": "getTemplates",
+ "parameters": [
+ {
+ "name": "q",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter templates based on the name partial match."
+ },
+ {
+ "name": "slug",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter templates by unique slug.",
+ "example": "opaKWh8WWTAcVG"
+ },
+ {
+ "name": "external_id",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "The unique applications-specific identifier provided for the template via API or Embedded template form builder. It allows you to receive only templates with your specified external id."
+ },
+ {
+ "name": "folder",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter templates by folder name."
+ },
+ {
+ "name": "archived",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "boolean"
+ },
+ "description": "Get only archived templates instead of active ones."
+ },
+ {
+ "name": "limit",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The number of templates to return. Default value is 10. Maximum value is 100."
+ },
+ {
+ "name": "after",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the template to start the list from. It allows you to receive only templates with id greater than the specified value. Pass ID value from the `pagination.next` response to load the next batch of templates."
+ },
+ {
+ "name": "before",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the template to end the list with. It allows you to receive only templates with id less than the specified value."
+ }
+ ]
+}
+```
+
+### Get a template
+
+The API endpoint provides the functionality to retrieve information about a document template.
+
+```java
+HttpResponse response = Unirest.get("https://api.wabosign.com/templates/1000001")
+ .header("X-Auth-Token", "API_KEY")
+ .asString();
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Get a template",
+ "operationId": "getTemplate",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the document template.",
+ "example": 1000001
+ }
+ ]
+}
+```
+
+### Create a template from PDF
+
+The API endpoint provides the functionality to create a fillable document template for a PDF file. Use {{Field Name;role=Signer1;type=date}} text tags to define fillable fields in the document. See https://www.wabosign.com/examples/fieldtags.pdf for more text tag formats. Or specify the exact pixel coordinates of the document fields using `fields` param. Related Guides Use embedded text field tags to create a fillable form
+
+
+```java
+HttpResponse response = Unirest.post("https://api.wabosign.com/templates/pdf")
+ .header("X-Auth-Token", "API_KEY")
+ .header("content-type", "application/json")
+ .body("{\"name\":\"Test PDF\",\"documents\":[{\"name\":\"string\",\"file\":\"base64\",\"fields\":[{\"name\":\"string\",\"areas\":[{\"x\":0,\"y\":0,\"w\":0,\"h\":0,\"page\":1}]}]}]}")
+ .asString();
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Create a template from PDF",
+ "operationId": "createTemplateFromPdf",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "documents"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the template",
+ "example": "Test PDF"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The folder's name to which the template should be created."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this template within your app. Existing template with specified `external_id` will be updated with a new PDF.",
+ "example": "unique-key"
+ },
+ "shared_link": {
+ "type": "boolean",
+ "description": "set to `true` to make the template available via a shared link. This will allow anyone with the link to create a submission from this template.",
+ "default": true
+ },
+ "documents": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "name",
+ "file"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document."
+ },
+ "file": {
+ "example": "base64",
+ "type": "string",
+ "format": "base64",
+ "description": "Base64-encoded content of the PDF file or downloadable file URL."
+ },
+ "fields": {
+ "type": "array",
+ "description": "Fields are optional if you use {{...}} text tags to define fields in the document.",
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the field."
+ },
+ "type": {
+ "type": "string",
+ "description": "Type of the field (e.g., text, signature, date, initials).",
+ "enum": [
+ "heading",
+ "text",
+ "signature",
+ "initials",
+ "date",
+ "number",
+ "image",
+ "checkbox",
+ "multiple",
+ "file",
+ "radio",
+ "select",
+ "cells",
+ "stamp",
+ "payment",
+ "phone",
+ "verification",
+ "strikethrough"
+ ]
+ },
+ "role": {
+ "type": "string",
+ "description": "Role name of the signer."
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Indicates if the field is required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "areas": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "x",
+ "y",
+ "w",
+ "h",
+ "page"
+ ],
+ "properties": {
+ "x": {
+ "type": "number",
+ "description": "X-coordinate of the field area."
+ },
+ "y": {
+ "type": "number",
+ "description": "Y-coordinate of the field area."
+ },
+ "w": {
+ "type": "number",
+ "description": "Width of the field area."
+ },
+ "h": {
+ "type": "number",
+ "description": "Height of the field area."
+ },
+ "page": {
+ "type": "integer",
+ "description": "Page number of the field area. Starts from 1.",
+ "example": 1
+ },
+ "option": {
+ "type": "string",
+ "description": "Option string value for 'radio' and 'multiple' select field types."
+ }
+ }
+ }
+ },
+ "options": {
+ "type": "array",
+ "description": "An array of option values for 'select' field type.",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "Option A",
+ "Option B"
+ ]
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "flatten": {
+ "type": "boolean",
+ "description": "Remove PDF form fields from the documents.",
+ "default": false
+ },
+ "remove_tags": {
+ "type": "boolean",
+ "description": "Pass `false` to disable the removal of {{text}} tags from the PDF. This can be used along with transparent text tags for faster and more robust PDF processing.",
+ "default": true
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Create a template from Word DOCX
+
+The API endpoint provides the functionality to create a fillable document template for existing Microsoft Word document. Use {{Field Name;role=Signer1;type=date}} text tags to define fillable fields in the document. See https://www.wabosign.com/examples/fieldtags.docx for more text tag formats. Or specify the exact pixel coordinates of the document fields using `fields` param. Related Guides Use embedded text field tags to create a fillable form
+
+
+```java
+HttpResponse response = Unirest.post("https://api.wabosign.com/templates/docx")
+ .header("X-Auth-Token", "API_KEY")
+ .header("content-type", "application/json")
+ .body("{\"name\":\"Test DOCX\",\"documents\":[{\"name\":\"string\",\"file\":\"base64\"}]}")
+ .asString();
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Create a template from Word DOCX",
+ "operationId": "createTemplateFromDocx",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "documents"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the template",
+ "example": "Test DOCX"
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this template within your app. Existing template with specified `external_id` will be updated with a new document.",
+ "example": "unique-key"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The folder's name to which the template should be created."
+ },
+ "shared_link": {
+ "type": "boolean",
+ "description": "set to `true` to make the template available via a shared link. This will allow anyone with the link to create a submission from this template.",
+ "default": true
+ },
+ "documents": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "name",
+ "file"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document."
+ },
+ "file": {
+ "type": "string",
+ "example": "base64",
+ "format": "base64",
+ "description": "Base64-encoded content of the DOCX file or downloadable file URL"
+ },
+ "fields": {
+ "description": "Fields are optional if you use {{...}} text tags to define fields in the document.",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the field."
+ },
+ "type": {
+ "type": "string",
+ "description": "Type of the field (e.g., text, signature, date, initials).",
+ "enum": [
+ "heading",
+ "text",
+ "signature",
+ "initials",
+ "date",
+ "number",
+ "image",
+ "checkbox",
+ "multiple",
+ "file",
+ "radio",
+ "select",
+ "cells",
+ "stamp",
+ "payment",
+ "phone",
+ "verification",
+ "strikethrough"
+ ]
+ },
+ "role": {
+ "type": "string",
+ "description": "Role name of the signer."
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Indicates if the field is required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "areas": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "x": {
+ "type": "number",
+ "description": "X-coordinate of the field area."
+ },
+ "y": {
+ "type": "number",
+ "description": "Y-coordinate of the field area."
+ },
+ "w": {
+ "type": "number",
+ "description": "Width of the field area."
+ },
+ "h": {
+ "type": "number",
+ "description": "Height of the field area."
+ },
+ "page": {
+ "type": "integer",
+ "description": "Page number of the field area. Starts from 1."
+ },
+ "option": {
+ "type": "string",
+ "description": "Option string value for 'radio' and 'multiple' select field types."
+ }
+ }
+ }
+ },
+ "options": {
+ "type": "array",
+ "description": "An array of option values for 'select' field type.",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "Option A",
+ "Option B"
+ ]
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Create a template from HTML
+
+The API endpoint provides the functionality to seamlessly generate a PDF document template by utilizing the provided HTML content while incorporating pre-defined fields. Related Guides Create PDF document fillable form with HTML
+
+```java
+HttpResponse response = Unirest.post("https://api.wabosign.com/templates/html")
+ .header("X-Auth-Token", "API_KEY")
+ .header("content-type", "application/json")
+ .body("{\"html\":\"
Lorem Ipsum is simply dummy text of the\\n\\n\\nand typesetting industry
Lorem Ipsum is simply dummy text of the\n\n\nand typesetting industry
\n"
+ },
+ "html_header": {
+ "type": "string",
+ "description": "HTML template of the header to be displayed on every page."
+ },
+ "html_footer": {
+ "type": "string",
+ "description": "HTML template of the footer to be displayed on every page."
+ },
+ "name": {
+ "type": "string",
+ "description": "Template name. Random uuid will be assigned when not specified.",
+ "example": "Test Template"
+ },
+ "size": {
+ "type": "string",
+ "default": "Letter",
+ "description": "Page size. Letter 8.5 x 11 will be assigned when not specified.",
+ "enum": [
+ "Letter",
+ "Legal",
+ "Tabloid",
+ "Ledger",
+ "A0",
+ "A1",
+ "A2",
+ "A3",
+ "A4",
+ "A5",
+ "A6"
+ ],
+ "example": "A4"
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this template within your app. Existing template with specified `external_id` will be updated with a new HTML.",
+ "example": "714d974e-83d8-11ee-b962-0242ac120002"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The folder's name to which the template should be created."
+ },
+ "shared_link": {
+ "type": "boolean",
+ "description": "set to `true` to make the template available via a shared link. This will allow anyone with the link to create a submission from this template.",
+ "default": true
+ },
+ "documents": {
+ "type": "array",
+ "description": "The list of documents built from HTML. Can be used to create a template with multiple documents. Leave `documents` param empty when using a top-level `html` param for a template with a single document.",
+ "items": {
+ "type": "object",
+ "required": [
+ "html"
+ ],
+ "properties": {
+ "html": {
+ "type": "string",
+ "description": "HTML template with field tags.",
+ "example": "
Lorem Ipsum is simply dummy text of the\n\n\nand typesetting industry
\n"
+ },
+ "name": {
+ "type": "string",
+ "description": "Document name. Random uuid will be assigned when not specified.",
+ "example": "Test Document"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Clone a template
+
+The API endpoint allows you to clone existing template into a new template.
+
+```java
+HttpResponse response = Unirest.post("https://api.wabosign.com/templates/1000001/clone")
+ .header("X-Auth-Token", "API_KEY")
+ .header("content-type", "application/json")
+ .body("{\"name\":\"Cloned Template\"}")
+ .asString();
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Clone a template",
+ "operationId": "cloneTemplate",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the documents template.",
+ "example": 1000001
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Template name. Existing name with (Clone) suffix will be used if not specified.",
+ "example": "Cloned Template"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The folder's name to which the template should be cloned."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this template within your app."
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Merge templates
+
+The API endpoint allows you to merge multiple templates with documents and fields into a new combined template.
+
+```java
+HttpResponse response = Unirest.post("https://api.wabosign.com/templates/merge")
+ .header("X-Auth-Token", "API_KEY")
+ .header("content-type", "application/json")
+ .body("{\"template_ids\":[321,432],\"name\":\"Merged Template\"}")
+ .asString();
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Merge templates",
+ "operationId": "mergeTemplate",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "template_ids"
+ ],
+ "properties": {
+ "template_ids": {
+ "type": "array",
+ "description": "An array of template ids to merge into a new template.",
+ "items": {
+ "type": "integer"
+ },
+ "example": [
+ 321,
+ 432
+ ]
+ },
+ "name": {
+ "type": "string",
+ "description": "Template name. Existing name with (Merged) suffix will be used if not specified.",
+ "example": "Merged Template"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The name of the folder in which the merged template should be placed."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this template within your app."
+ },
+ "shared_link": {
+ "type": "boolean",
+ "description": "set to `true` to make the template available via a shared link. This will allow anyone with the link to create a submission from this template.",
+ "default": true
+ },
+ "roles": {
+ "type": "array",
+ "description": "An array of submitter role names to be used in the merged template.",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "Agent",
+ "Customer"
+ ]
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Update a template
+
+The API endpoint provides the functionality to move a document template to a different folder and update the name of the template.
+
+```java
+HttpResponse response = Unirest.put("https://api.wabosign.com/templates/1000001")
+ .header("X-Auth-Token", "API_KEY")
+ .header("content-type", "application/json")
+ .body("{\"name\":\"New Document Name\",\"folder_name\":\"New Folder\"}")
+ .asString();
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Update a template",
+ "operationId": "updateTemplate",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the document template.",
+ "example": 1000001
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the template",
+ "example": "New Document Name"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The folder's name to which the template should be moved.",
+ "example": "New Folder"
+ },
+ "roles": {
+ "type": "array",
+ "description": "An array of submitter role names to update the template with.",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "Agent",
+ "Customer"
+ ]
+ },
+ "archived": {
+ "type": "boolean",
+ "description": "Set `false` to unarchive template."
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Update template documents
+
+The API endpoint allows you to add, remove or replace documents in the template with provided PDF/DOCX file or HTML content.
+
+```java
+HttpResponse response = Unirest.put("https://api.wabosign.com/templates/1000001/documents")
+ .header("X-Auth-Token", "API_KEY")
+ .header("content-type", "application/json")
+ .body("{\"documents\":[{\"file\":\"string\"}]}")
+ .asString();
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Update template documents",
+ "operationId": "addDocumentToTemplate",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the documents template.",
+ "example": 1000001
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "documents": {
+ "type": "array",
+ "description": "The list of documents to add or replace in the template.",
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document name. Random uuid will be assigned when not specified.",
+ "example": "Test Template"
+ },
+ "file": {
+ "type": "string",
+ "format": "base64",
+ "description": "Base64-encoded content of the PDF or DOCX file or downloadable file URL. Leave it empty if you create a new document using HTML param."
+ },
+ "html": {
+ "type": "string",
+ "description": "HTML template with field tags. Leave it empty if you add a document via PDF or DOCX base64 encoded file param or URL."
+ },
+ "position": {
+ "type": "integer",
+ "description": "Position of the document. By default will be added as the last document in the template.",
+ "example": 0
+ },
+ "replace": {
+ "type": "boolean",
+ "default": false,
+ "description": "Set to `true` to replace existing document with a new file at `position`. Existing document fields will be transferred to the new document if it doesn't contain any fields."
+ },
+ "remove": {
+ "type": "boolean",
+ "default": false,
+ "description": "Set to `true` to remove existing document at given `position` or with given `name`."
+ }
+ }
+ }
+ },
+ "merge": {
+ "type": "boolean",
+ "default": false,
+ "description": "Set to `true` to merge all existing and new documents into a single PDF document in the template."
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Archive a template
+
+The API endpoint allows you to archive a document template.
+
+```java
+HttpResponse response = Unirest.delete("https://api.wabosign.com/templates/1000001")
+ .header("X-Auth-Token", "API_KEY")
+ .asString();
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Archive a template",
+ "operationId": "archiveTemplate",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the document template.",
+ "example": 1000001
+ }
+ ]
+}
+```
+
diff --git a/docs/api/javascript.md b/docs/api/javascript.md
new file mode 100644
index 00000000..f94e1dba
--- /dev/null
+++ b/docs/api/javascript.md
@@ -0,0 +1,4034 @@
+### List all submissions
+
+The API endpoint provides the ability to retrieve a list of available submissions.
+
+```javascript
+const wabosign = require("@wabosign/api");
+
+wabosign.configure({ key: "API_KEY", url: "https://api.wabosign.com" });
+
+const { data, pagination } = await wabosign.listSubmissions({ limit: 10 });
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "List all submissions",
+ "operationId": "getSubmissions",
+ "parameters": [
+ {
+ "name": "template_id",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The template ID allows you to receive only the submissions created from that specific template."
+ },
+ {
+ "name": "status",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string",
+ "enum": [
+ "pending",
+ "completed",
+ "declined",
+ "expired"
+ ]
+ },
+ "description": "Filter submissions by status."
+ },
+ {
+ "name": "q",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter submissions based on submitters name, email or phone partial match."
+ },
+ {
+ "name": "slug",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter submissions by unique slug.",
+ "example": "NtLDQM7eJX2ZMd"
+ },
+ {
+ "name": "template_folder",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter submissions by template folder name."
+ },
+ {
+ "name": "archived",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "boolean"
+ },
+ "description": "Returns only archived submissions when `true` and only active submissions when `false`."
+ },
+ {
+ "name": "limit",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The number of submissions to return. Default value is 10. Maximum value is 100."
+ },
+ {
+ "name": "after",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submission to start the list from. It allows you to receive only submissions with an ID greater than the specified value. Pass ID value from the `pagination.next` response to load the next batch of submissions."
+ },
+ {
+ "name": "before",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submission that marks the end of the list. It allows you to receive only submissions with an ID less than the specified value."
+ }
+ ]
+}
+```
+
+### Get a submission
+
+The API endpoint provides the functionality to retrieve information about a submission.
+
+```javascript
+const wabosign = require("@wabosign/api");
+
+wabosign.configure({ key: "API_KEY", url: "https://api.wabosign.com" });
+
+const submission = await wabosign.getSubmission(1001);
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Get a submission",
+ "operationId": "getSubmission",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submission.",
+ "example": 1001
+ }
+ ]
+}
+```
+
+### Get submission documents
+
+This endpoint returns a list of partially filled documents for a submission. If the submission has been completed, the final signed documents are returned.
+
+```javascript
+const wabosign = require("@wabosign/api");
+
+wabosign.configure({ key: "API_KEY", url: "https://api.wabosign.com" });
+
+const submission = await wabosign.getSubmissionDocuments(1001);
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Get submission documents",
+ "operationId": "getSubmissionDocuments",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submission.",
+ "example": 1001
+ }
+ ]
+}
+```
+
+### Create a submission
+
+This API endpoint allows you to create signature requests (submissions) for a document template and send them to the specified submitters (signers). Related Guides Send documents for signature via API Pre-fill PDF document form fields with API
+
+```javascript
+const wabosign = require("@wabosign/api");
+
+wabosign.configure({ key: "API_KEY", url: "https://api.wabosign.com" });
+
+const submission = await wabosign.createSubmission({
+ template_id: 1000001,
+ send_email: true,
+ submitters: [
+ {
+ role: "First Party",
+ email: "john.doe@example.com"
+ }
+ ]
+});
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Create a submission",
+ "operationId": "createSubmission",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "template_id",
+ "submitters"
+ ],
+ "properties": {
+ "template_id": {
+ "type": "integer",
+ "description": "The unique identifier of the template. Document template forms can be created via the Web UI, PDF and DOCX API, or HTML API.",
+ "example": 1000001
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "order": {
+ "type": "string",
+ "description": "Pass 'random' to send signature request emails to all parties right away. The order is 'preserved' by default so the second party will receive a signature request email only after the document is signed by the first party.",
+ "default": "preserved",
+ "enum": [
+ "preserved",
+ "random"
+ ]
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Specify URL to redirect to after the submission completion."
+ },
+ "bcc_completed": {
+ "type": "string",
+ "description": "Specify BCC address to send signed documents to after the completion."
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails."
+ },
+ "expire_at": {
+ "type": "string",
+ "description": "Specify the expiration date and time after which the submission becomes unavailable for signature.",
+ "example": "2024-09-01 12:00:00 UTC"
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body. Can include the following variables: {{template.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "submitters": {
+ "type": "array",
+ "description": "The list of submitters for the submission.",
+ "items": {
+ "type": "object",
+ "required": [
+ "email"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the submitter."
+ },
+ "role": {
+ "type": "string",
+ "description": "The role name or title of the submitter.",
+ "example": "First Party"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the submitter.",
+ "format": "email",
+ "example": "john.doe@example.com"
+ },
+ "phone": {
+ "type": "string",
+ "description": "The phone number of the submitter, formatted according to the E.164 standard.",
+ "example": "+1234567890"
+ },
+ "values": {
+ "type": "object",
+ "description": "An object with pre-filled values for the submission. Use field names for keys of the object. For more configurations see `fields` param."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this submitter within your app."
+ },
+ "completed": {
+ "type": "boolean",
+ "description": "Pass `true` to mark submitter as completed and auto-signed via API."
+ },
+ "metadata": {
+ "type": "object",
+ "description": "Metadata object with additional submitter information.",
+ "example": "{ \"customField\": \"value\" }"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending only for this submitter.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails for this submitter."
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Submitter specific URL to redirect to after the submission completion."
+ },
+ "order": {
+ "type": "integer",
+ "description": "The order of the submitter in the workflow (e.g., 0 for the first signer, 1 for the second, etc.). Use the same order number to create order groups. By default, submitters are ordered as in the submitters array."
+ },
+ "require_phone_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require phone 2FA verification via a one-time code sent to the phone number in order to access the documents.",
+ "default": false
+ },
+ "require_email_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require email 2FA verification via a one-time code sent to the email address in order to access the documents.",
+ "default": false
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject for the submitter."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body for the submitter. Can include the following variables: {{template.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "fields": {
+ "type": "array",
+ "description": "A list of configurations for template document form fields.",
+ "items": {
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document template field name.",
+ "example": "First Name"
+ },
+ "default_value": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ }
+ ]
+ }
+ }
+ ],
+ "description": "Default value of the field. Use base64 encoded file or a public URL to the image file to set default signature or image fields.",
+ "example": "Acme"
+ },
+ "readonly": {
+ "type": "boolean",
+ "description": "Set `true` to make it impossible for the submitter to edit predefined field value.",
+ "default": false
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Set `true` to make the field required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "roles": {
+ "type": "array",
+ "description": "A list of roles for the submitter. Use this param to merge multiple roles into one submitter.",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Create a submission from PDF
+
+The API endpoint provides the functionality to create one-off submission request from a PDF. Use {{Field Name;role=Signer1;type=date}} text tags to define fillable fields in the document. See https://www.wabosign.com/examples/fieldtags.pdf for more text tag formats. Or specify the exact pixel coordinates of the document fields using `fields` param. Related Guides Use embedded text field tags to create a fillable form
+
+
+```javascript
+const wabosign = require("@wabosign/api");
+
+wabosign.configure({ key: "API_KEY", url: "https://api.wabosign.com" });
+
+const submission = await wabosign.createSubmissionFromPdf({
+ name: "Test Submission Document",
+ documents: [
+ {
+ name: "string",
+ file: "base64",
+ fields: [
+ {
+ name: "string",
+ areas: [
+ {
+ x: 0,
+ y: 0,
+ w: 0,
+ h: 0,
+ page: 1
+ }
+ ]
+ }
+ ]
+ }
+ ],
+ submitters: [
+ {
+ role: "First Party",
+ email: "john.doe@example.com"
+ }
+ ]
+});
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Create a submission from PDF",
+ "operationId": "createSubmissionFromPdf",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "documents",
+ "submitters"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document submission.",
+ "example": "Test Submission Document"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "order": {
+ "type": "string",
+ "description": "Pass 'random' to send signature request emails to all parties right away. The order is 'preserved' by default so the second party will receive a signature request email only after the document is signed by the first party.",
+ "default": "preserved",
+ "enum": [
+ "preserved",
+ "random"
+ ]
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Specify URL to redirect to after the submission completion."
+ },
+ "bcc_completed": {
+ "type": "string",
+ "description": "Specify BCC address to send signed documents to after the completion."
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails."
+ },
+ "expire_at": {
+ "type": "string",
+ "description": "Specify the expiration date and time after which the submission becomes unavailable for signature.",
+ "example": "2024-09-01 12:00:00 UTC"
+ },
+ "template_ids": {
+ "type": "array",
+ "description": "An optional array of template IDs to use in the submission along with the provided documents. This can be used to create multi-document submissions when some of the required documents exist within templates.",
+ "items": {
+ "type": "integer",
+ "description": "The ID of the template to use for the submission."
+ }
+ },
+ "documents": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "name",
+ "file"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document."
+ },
+ "file": {
+ "example": "base64",
+ "type": "string",
+ "format": "base64",
+ "description": "Base64-encoded content of the PDF file or downloadable file URL."
+ },
+ "fields": {
+ "type": "array",
+ "description": "Fields are optional if you use {{...}} text tags to define fields in the document.",
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the field."
+ },
+ "type": {
+ "type": "string",
+ "description": "Type of the field (e.g., text, signature, date, initials).",
+ "enum": [
+ "heading",
+ "text",
+ "signature",
+ "initials",
+ "date",
+ "number",
+ "image",
+ "checkbox",
+ "multiple",
+ "file",
+ "radio",
+ "select",
+ "cells",
+ "stamp",
+ "payment",
+ "phone",
+ "verification",
+ "strikethrough"
+ ]
+ },
+ "role": {
+ "type": "string",
+ "description": "Role name of the signer."
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Indicates if the field is required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "areas": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "x",
+ "y",
+ "w",
+ "h",
+ "page"
+ ],
+ "properties": {
+ "x": {
+ "type": "number",
+ "description": "X-coordinate of the field area."
+ },
+ "y": {
+ "type": "number",
+ "description": "Y-coordinate of the field area."
+ },
+ "w": {
+ "type": "number",
+ "description": "Width of the field area."
+ },
+ "h": {
+ "type": "number",
+ "description": "Height of the field area."
+ },
+ "page": {
+ "type": "integer",
+ "description": "Page number of the field area. Starts from 1.",
+ "example": 1
+ },
+ "option": {
+ "type": "string",
+ "description": "Option string value for 'radio' and 'multiple' select field types."
+ }
+ }
+ }
+ },
+ "options": {
+ "type": "array",
+ "description": "An array of option values for 'select' field type.",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "Option A",
+ "Option B"
+ ]
+ }
+ }
+ }
+ },
+ "position": {
+ "type": "integer",
+ "description": "Document position in the submission. If not specified, the document will be added in the order it appears in the documents array."
+ }
+ }
+ }
+ },
+ "submitters": {
+ "type": "array",
+ "description": "The list of submitters for the submission.",
+ "items": {
+ "type": "object",
+ "required": [
+ "email"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the submitter."
+ },
+ "role": {
+ "type": "string",
+ "description": "The role name or title of the submitter.",
+ "example": "First Party"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the submitter.",
+ "format": "email",
+ "example": "john.doe@example.com"
+ },
+ "phone": {
+ "type": "string",
+ "description": "The phone number of the submitter, formatted according to the E.164 standard.",
+ "example": "+1234567890"
+ },
+ "values": {
+ "type": "object",
+ "description": "An object with pre-filled values for the submission. Use field names for keys of the object. For more configurations see `fields` param."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this submitter within your app."
+ },
+ "completed": {
+ "type": "boolean",
+ "description": "Pass `true` to mark submitter as completed and auto-signed via API."
+ },
+ "metadata": {
+ "type": "object",
+ "description": "Metadata object with additional submitter information.",
+ "example": "{ \"customField\": \"value\" }"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending only for this submitter.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails for this submitter."
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Submitter specific URL to redirect to after the submission completion."
+ },
+ "order": {
+ "type": "integer",
+ "description": "The order of the submitter in the workflow (e.g., 0 for the first signer, 1 for the second, etc.). Use the same order number to create order groups. By default, submitters are ordered as in the submitters array."
+ },
+ "require_phone_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require phone 2FA verification via a one-time code sent to the phone number in order to access the documents.",
+ "default": false
+ },
+ "require_email_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require email 2FA verification via a one-time code sent to the email address in order to access the documents.",
+ "default": false
+ },
+ "invite_by": {
+ "type": "string",
+ "description": "Set the role name of the previous party that should invite this party via email."
+ },
+ "fields": {
+ "type": "array",
+ "description": "A list of configurations for document form fields.",
+ "items": {
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document field name.",
+ "example": "First Name"
+ },
+ "default_value": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ }
+ ]
+ }
+ }
+ ],
+ "description": "Default value of the field. Use base64 encoded file or a public URL to the image file to set default signature or image fields.",
+ "example": "Acme"
+ },
+ "readonly": {
+ "type": "boolean",
+ "description": "Set `true` to make it impossible for the submitter to edit predefined field value.",
+ "default": false
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Set `true` to make the field required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "roles": {
+ "type": "array",
+ "description": "A list of roles for the submitter. Use this param to merge multiple roles into one submitter.",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body. Can include the following variables: {{submission.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "flatten": {
+ "type": "boolean",
+ "description": "Remove PDF form fields from the documents.",
+ "default": false
+ },
+ "merge_documents": {
+ "type": "boolean",
+ "description": "Set `true` to merge the documents into a single PDF file.",
+ "default": false
+ },
+ "remove_tags": {
+ "type": "boolean",
+ "description": "Pass `false` to disable the removal of {{text}} tags from the PDF. This can be used along with transparent text tags for faster and more robust PDF processing.",
+ "default": true
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Create a submission from DOCX
+
+The API endpoint provides functionality to create a one-off submission request from a DOCX file with dynamic content variables. Use [[variable_name]] text tags to define dynamic content variables in the document. See https://www.wabosign.com/examples/demo_template.docx for the specific text variable syntax, including dynamic content tables and list. You can also use the {{signature}} field syntax to define fillable fields, as in a PDF. Related Guides Use dynamic content variables in DOCX to create personalized documents
+
+```javascript
+const wabosign = require("@wabosign/api");
+
+wabosign.configure({ key: "API_KEY", url: "https://api.wabosign.com" });
+
+const submission = await wabosign.createSubmissionFromDocx({
+ name: "Test Submission Document",
+ variables: {
+ variable_name: "value"
+ },
+ documents: [
+ {
+ name: "string",
+ file: "base64"
+ }
+ ],
+ submitters: [
+ {
+ role: "First Party",
+ email: "john.doe@example.com"
+ }
+ ]
+});
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Create a submission from DOCX",
+ "operationId": "createSubmissionFromDocx",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "documents",
+ "submitters"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document submission.",
+ "example": "Test Submission Document"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "variables": {
+ "type": "object",
+ "description": "Dynamic content variables object. Variable values can be strings, numbers, arrays, objects, or HTML content used to generate styled text, paragraphs, and tables in DOCX.",
+ "example": {
+ "variable_name": "value"
+ }
+ },
+ "order": {
+ "type": "string",
+ "description": "Pass 'random' to send signature request emails to all parties right away. The order is 'preserved' by default so the second party will receive a signature request email only after the document is signed by the first party.",
+ "default": "preserved",
+ "enum": [
+ "preserved",
+ "random"
+ ]
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Specify URL to redirect to after the submission completion."
+ },
+ "bcc_completed": {
+ "type": "string",
+ "description": "Specify BCC address to send signed documents to after the completion."
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails."
+ },
+ "expire_at": {
+ "type": "string",
+ "description": "Specify the expiration date and time after which the submission becomes unavailable for signature.",
+ "example": "2024-09-01 12:00:00 UTC"
+ },
+ "template_ids": {
+ "type": "array",
+ "description": "An optional array of template IDs to use in the submission along with the provided documents. This can be used to create multi-document submissions when some of the required documents exist within templates.",
+ "items": {
+ "type": "integer",
+ "description": "The ID of the template to use for the submission."
+ }
+ },
+ "documents": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "name",
+ "file"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document."
+ },
+ "file": {
+ "example": "base64",
+ "type": "string",
+ "format": "base64",
+ "description": "Base64-encoded content of the PDF or DOCX file or downloadable file URL."
+ },
+ "position": {
+ "type": "integer",
+ "description": "Document position in the submission. If not specified, the document will be added in the order it appears in the documents array."
+ }
+ }
+ }
+ },
+ "submitters": {
+ "type": "array",
+ "description": "The list of submitters for the submission.",
+ "items": {
+ "type": "object",
+ "required": [
+ "email"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the submitter."
+ },
+ "role": {
+ "type": "string",
+ "description": "The role name or title of the submitter.",
+ "example": "First Party"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the submitter.",
+ "format": "email",
+ "example": "john.doe@example.com"
+ },
+ "phone": {
+ "type": "string",
+ "description": "The phone number of the submitter, formatted according to the E.164 standard.",
+ "example": "+1234567890"
+ },
+ "values": {
+ "type": "object",
+ "description": "An object with pre-filled values for the submission. Use field names for keys of the object. For more configurations see `fields` param."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this submitter within your app."
+ },
+ "completed": {
+ "type": "boolean",
+ "description": "Pass `true` to mark submitter as completed and auto-signed via API."
+ },
+ "metadata": {
+ "type": "object",
+ "description": "Metadata object with additional submitter information.",
+ "example": "{ \"customField\": \"value\" }"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending only for this submitter.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails for this submitter."
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Submitter specific URL to redirect to after the submission completion."
+ },
+ "order": {
+ "type": "integer",
+ "description": "The order of the submitter in the workflow (e.g., 0 for the first signer, 1 for the second, etc.). Use the same order number to create order groups. By default, submitters are ordered as in the submitters array."
+ },
+ "require_phone_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require phone 2FA verification via a one-time code sent to the phone number in order to access the documents.",
+ "default": false
+ },
+ "require_email_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require email 2FA verification via a one-time code sent to the email address in order to access the documents.",
+ "default": false
+ },
+ "invite_by": {
+ "type": "string",
+ "description": "Set the role name of the previous party that should invite this party via email."
+ },
+ "fields": {
+ "type": "array",
+ "description": "A list of configurations for document form fields.",
+ "items": {
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document field name.",
+ "example": "First Name"
+ },
+ "default_value": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ }
+ ]
+ }
+ }
+ ],
+ "description": "Default value of the field. Use base64 encoded file or a public URL to the image file to set default signature or image fields.",
+ "example": "Acme"
+ },
+ "readonly": {
+ "type": "boolean",
+ "description": "Set `true` to make it impossible for the submitter to edit predefined field value.",
+ "default": false
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Set `true` to make the field required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "roles": {
+ "type": "array",
+ "description": "A list of roles for the submitter. Use this param to merge multiple roles into one submitter.",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body. Can include the following variables: {{submission.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "merge_documents": {
+ "type": "boolean",
+ "description": "Set `true` to merge the documents into a single PDF file.",
+ "default": false
+ },
+ "remove_tags": {
+ "type": "boolean",
+ "description": "Pass `false` to disable the removal of {{text}} tags from the PDF. This can be used along with transparent text tags for faster and more robust PDF processing.",
+ "default": true
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Create a submission from HTML
+
+This API endpoint allows you to create a one-off submission request document using the provided HTML content, with special field tags rendered as a fillable and signable form. Related Guides Create PDF document fillable form with HTML
+
+```javascript
+const wabosign = require("@wabosign/api");
+
+wabosign.configure({ key: "API_KEY", url: "https://api.wabosign.com" });
+
+const submission = await wabosign.createSubmissionFromHtml({
+ name: "Test Submission Document",
+ documents: [
+ {
+ name: "Test Document",
+ html: `
Lorem Ipsum is simply dummy text of the
+
+
+and typesetting industry
+`
+ }
+ ],
+ submitters: [
+ {
+ role: "First Party",
+ email: "john.doe@example.com"
+ }
+ ]
+});
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Create a submission from HTML",
+ "operationId": "createSubmissionFromHtml",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "documents",
+ "submitters"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document submission",
+ "example": "Test Submission Document"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "order": {
+ "type": "string",
+ "description": "Pass 'random' to send signature request emails to all parties right away. The order is 'preserved' by default so the second party will receive a signature request email only after the document is signed by the first party.",
+ "default": "preserved",
+ "enum": [
+ "preserved",
+ "random"
+ ]
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Specify URL to redirect to after the submission completion."
+ },
+ "bcc_completed": {
+ "type": "string",
+ "description": "Specify BCC address to send signed documents to after the completion."
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails."
+ },
+ "expire_at": {
+ "type": "string",
+ "description": "Specify the expiration date and time after which the submission becomes unavailable for signature.",
+ "example": "2024-09-01 12:00:00 UTC"
+ },
+ "template_ids": {
+ "type": "array",
+ "description": "An optional array of template IDs to use in the submission along with the provided documents. This can be used to create multi-document submissions when some of the required documents exist within templates.",
+ "items": {
+ "type": "integer",
+ "description": "The ID of the template to use for the submission."
+ }
+ },
+ "documents": {
+ "type": "array",
+ "description": "The list of documents built from HTML. Can be used to create a submission with multiple documents.",
+ "items": {
+ "type": "object",
+ "required": [
+ "html"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document name. Random uuid will be assigned when not specified.",
+ "example": "Test Document"
+ },
+ "html": {
+ "type": "string",
+ "description": "HTML document content with field tags.",
+ "example": "
Lorem Ipsum is simply dummy text of the\n\n\nand typesetting industry
\n"
+ },
+ "html_header": {
+ "type": "string",
+ "description": "HTML document content of the header to be displayed on every page."
+ },
+ "html_footer": {
+ "type": "string",
+ "description": "HTML document content of the footer to be displayed on every page."
+ },
+ "size": {
+ "type": "string",
+ "default": "Letter",
+ "description": "Page size. Letter 8.5 x 11 will be assigned when not specified.",
+ "enum": [
+ "Letter",
+ "Legal",
+ "Tabloid",
+ "Ledger",
+ "A0",
+ "A1",
+ "A2",
+ "A3",
+ "A4",
+ "A5",
+ "A6"
+ ],
+ "example": "A4"
+ },
+ "position": {
+ "type": "integer",
+ "description": "Document position in the submission. If not specified, the document will be added in the order it appears in the documents array."
+ }
+ }
+ }
+ },
+ "submitters": {
+ "type": "array",
+ "description": "The list of submitters for the submission.",
+ "items": {
+ "type": "object",
+ "required": [
+ "email"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the submitter."
+ },
+ "role": {
+ "type": "string",
+ "description": "The role name or title of the submitter.",
+ "example": "First Party"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the submitter.",
+ "format": "email",
+ "example": "john.doe@example.com"
+ },
+ "phone": {
+ "type": "string",
+ "description": "The phone number of the submitter, formatted according to the E.164 standard.",
+ "example": "+1234567890"
+ },
+ "values": {
+ "type": "object",
+ "description": "An object with pre-filled values for the submission. Use field names for keys of the object. For more configurations see `fields` param."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this submitter within your app."
+ },
+ "completed": {
+ "type": "boolean",
+ "description": "Pass `true` to mark submitter as completed and auto-signed via API."
+ },
+ "metadata": {
+ "type": "object",
+ "description": "Metadata object with additional submitter information.",
+ "example": "{ \"customField\": \"value\" }"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending only for this submitter.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails for this submitter."
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Submitter specific URL to redirect to after the submission completion."
+ },
+ "order": {
+ "type": "integer",
+ "description": "The order of the submitter in the workflow (e.g., 0 for the first signer, 1 for the second, etc.). Use the same order number to create order groups. By default, submitters are ordered as in the submitters array."
+ },
+ "require_phone_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require phone 2FA verification via a one-time code sent to the phone number in order to access the documents.",
+ "default": false
+ },
+ "require_email_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require email 2FA verification via a one-time code sent to the email address in order to access the documents.",
+ "default": false
+ },
+ "invite_by": {
+ "type": "string",
+ "description": "Set the role name of the previous party that should invite this party via email."
+ },
+ "fields": {
+ "type": "array",
+ "description": "A list of configurations for document form fields.",
+ "items": {
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document field name.",
+ "example": "First Name"
+ },
+ "default_value": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ }
+ ]
+ }
+ }
+ ],
+ "description": "Default value of the field. Use base64 encoded file or a public URL to the image file to set default signature or image fields.",
+ "example": "Acme"
+ },
+ "readonly": {
+ "type": "boolean",
+ "description": "Set `true` to make it impossible for the submitter to edit predefined field value.",
+ "default": false
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Set `true` to make the field required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "roles": {
+ "type": "array",
+ "description": "A list of roles for the submitter. Use this param to merge multiple roles into one submitter.",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body. Can include the following variables: {{submission.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "merge_documents": {
+ "type": "boolean",
+ "description": "Set `true` to merge the documents into a single PDF file.",
+ "default": false
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Archive a submission
+
+The API endpoint allows you to archive a submission.
+
+```javascript
+const wabosign = require("@wabosign/api");
+
+wabosign.configure({ key: "API_KEY", url: "https://api.wabosign.com" });
+
+await wabosign.archiveSubmission(1001);
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Archive a submission",
+ "operationId": "archiveSubmission",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submission.",
+ "example": 1001
+ }
+ ]
+}
+```
+
+### List all submitters
+
+The API endpoint provides the ability to retrieve a list of submitters.
+
+```javascript
+const wabosign = require("@wabosign/api");
+
+wabosign.configure({ key: "API_KEY", url: "https://api.wabosign.com" });
+
+const { data, pagination } = await wabosign.listSubmitters({ limit: 10 });
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submitters"
+ ],
+ "summary": "List all submitters",
+ "operationId": "getSubmitters",
+ "parameters": [
+ {
+ "name": "submission_id",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The submission ID allows you to receive only the submitters related to that specific submission."
+ },
+ {
+ "name": "q",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter submitters on name, email or phone partial match."
+ },
+ {
+ "name": "slug",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter submitters by unique slug.",
+ "example": "zAyL9fH36Havvm"
+ },
+ {
+ "name": "completed_after",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "example": "2024-03-05 9:32:20",
+ "description": "The date and time string value to filter submitters that completed the submission after the specified date and time."
+ },
+ {
+ "name": "completed_before",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "example": "2024-03-06 19:32:20",
+ "description": "The date and time string value to filter submitters that completed the submission before the specified date and time."
+ },
+ {
+ "name": "external_id",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "The unique applications-specific identifier provided for a submitter when initializing a signature request. It allows you to receive only submitters with a specified external id."
+ },
+ {
+ "name": "limit",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The number of submitters to return. Default value is 10. Maximum value is 100."
+ },
+ {
+ "name": "after",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submitter to start the list from. It allows you to receive only submitters with id greater than the specified value. Pass ID value from the `pagination.next` response to load the next batch of submitters."
+ },
+ {
+ "name": "before",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submitter to end the list with. It allows you to receive only submitters with id less than the specified value."
+ }
+ ]
+}
+```
+
+### Get a submitter
+
+The API endpoint provides functionality to retrieve information about a submitter, along with the submitter documents and field values.
+
+```javascript
+const wabosign = require("@wabosign/api");
+
+wabosign.configure({ key: "API_KEY", url: "https://api.wabosign.com" });
+
+const submitter = await wabosign.getSubmitter(500001);
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submitters"
+ ],
+ "summary": "Get a submitter",
+ "operationId": "getSubmitter",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submitter.",
+ "example": 500001
+ }
+ ]
+}
+```
+
+### Update a submitter
+
+The API endpoint allows you to update submitter details, pre-fill or update field values and re-send emails. Related Guides Automatically sign documents via API
+
+```javascript
+const wabosign = require("@wabosign/api");
+
+wabosign.configure({ key: "API_KEY", url: "https://api.wabosign.com" });
+
+const submitter = await wabosign.updateSubmitter(500001, {
+ email: "john.doe@example.com",
+ fields: [
+ {
+ name: "First Name",
+ default_value: "Acme"
+ }
+ ]
+});
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submitters"
+ ],
+ "summary": "Update a submitter",
+ "operationId": "updateSubmitter",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submitter.",
+ "example": 500001
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the submitter."
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the submitter.",
+ "format": "email",
+ "example": "john.doe@example.com"
+ },
+ "phone": {
+ "type": "string",
+ "description": "The phone number of the submitter, formatted according to the E.164 standard.",
+ "example": "+1234567890"
+ },
+ "values": {
+ "type": "object",
+ "description": "An object with pre-filled values for the submission. Use field names for keys of the object. For more configurations see `fields` param."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this submitter within your app."
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `true` to re-send signature request emails."
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to re-send signature request via phone number SMS.",
+ "default": false
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails."
+ },
+ "completed": {
+ "type": "boolean",
+ "description": "Pass `true` to mark submitter as completed and auto-signed via API."
+ },
+ "metadata": {
+ "type": "object",
+ "description": "Metadata object with additional submitter information.",
+ "example": "{ \"customField\": \"value\" }"
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Submitter specific URL to redirect to after the submission completion."
+ },
+ "require_phone_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require phone 2FA verification via a one-time code sent to the phone number in order to access the documents.",
+ "default": false
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body. Can include the following variables: {{template.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "fields": {
+ "type": "array",
+ "description": "A list of configurations for template document form fields.",
+ "items": {
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document template field name.",
+ "example": "First Name"
+ },
+ "default_value": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ }
+ ]
+ }
+ }
+ ],
+ "description": "Default value of the field. Use base64 encoded file or a public URL to the image file to set default signature or image fields.",
+ "example": "Acme"
+ },
+ "readonly": {
+ "type": "boolean",
+ "description": "Set `true` to make it impossible for the submitter to edit predefined field value.",
+ "default": false
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Set `true` to make the field required."
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### List all templates
+
+The API endpoint provides the ability to retrieve a list of available document templates.
+
+```javascript
+const wabosign = require("@wabosign/api");
+
+wabosign.configure({ key: "API_KEY", url: "https://api.wabosign.com" });
+
+const { data, pagination } = await wabosign.listTemplates({ limit: 10 });
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "List all templates",
+ "operationId": "getTemplates",
+ "parameters": [
+ {
+ "name": "q",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter templates based on the name partial match."
+ },
+ {
+ "name": "slug",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter templates by unique slug.",
+ "example": "opaKWh8WWTAcVG"
+ },
+ {
+ "name": "external_id",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "The unique applications-specific identifier provided for the template via API or Embedded template form builder. It allows you to receive only templates with your specified external id."
+ },
+ {
+ "name": "folder",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter templates by folder name."
+ },
+ {
+ "name": "archived",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "boolean"
+ },
+ "description": "Get only archived templates instead of active ones."
+ },
+ {
+ "name": "limit",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The number of templates to return. Default value is 10. Maximum value is 100."
+ },
+ {
+ "name": "after",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the template to start the list from. It allows you to receive only templates with id greater than the specified value. Pass ID value from the `pagination.next` response to load the next batch of templates."
+ },
+ {
+ "name": "before",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the template to end the list with. It allows you to receive only templates with id less than the specified value."
+ }
+ ]
+}
+```
+
+### Get a template
+
+The API endpoint provides the functionality to retrieve information about a document template.
+
+```javascript
+const wabosign = require("@wabosign/api");
+
+wabosign.configure({ key: "API_KEY", url: "https://api.wabosign.com" });
+
+const template = await wabosign.getTemplate(1000001);
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Get a template",
+ "operationId": "getTemplate",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the document template.",
+ "example": 1000001
+ }
+ ]
+}
+```
+
+### Create a template from PDF
+
+The API endpoint provides the functionality to create a fillable document template for a PDF file. Use {{Field Name;role=Signer1;type=date}} text tags to define fillable fields in the document. See https://www.wabosign.com/examples/fieldtags.pdf for more text tag formats. Or specify the exact pixel coordinates of the document fields using `fields` param. Related Guides Use embedded text field tags to create a fillable form
+
+
+```javascript
+const wabosign = require("@wabosign/api");
+
+wabosign.configure({ key: "API_KEY", url: "https://api.wabosign.com" });
+
+const template = await wabosign.createTemplateFromPdf({
+ name: "Test PDF",
+ documents: [
+ {
+ name: "string",
+ file: "base64",
+ fields: [
+ {
+ name: "string",
+ areas: [
+ {
+ x: 0,
+ y: 0,
+ w: 0,
+ h: 0,
+ page: 1
+ }
+ ]
+ }
+ ]
+ }
+ ]
+});
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Create a template from PDF",
+ "operationId": "createTemplateFromPdf",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "documents"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the template",
+ "example": "Test PDF"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The folder's name to which the template should be created."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this template within your app. Existing template with specified `external_id` will be updated with a new PDF.",
+ "example": "unique-key"
+ },
+ "shared_link": {
+ "type": "boolean",
+ "description": "set to `true` to make the template available via a shared link. This will allow anyone with the link to create a submission from this template.",
+ "default": true
+ },
+ "documents": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "name",
+ "file"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document."
+ },
+ "file": {
+ "example": "base64",
+ "type": "string",
+ "format": "base64",
+ "description": "Base64-encoded content of the PDF file or downloadable file URL."
+ },
+ "fields": {
+ "type": "array",
+ "description": "Fields are optional if you use {{...}} text tags to define fields in the document.",
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the field."
+ },
+ "type": {
+ "type": "string",
+ "description": "Type of the field (e.g., text, signature, date, initials).",
+ "enum": [
+ "heading",
+ "text",
+ "signature",
+ "initials",
+ "date",
+ "number",
+ "image",
+ "checkbox",
+ "multiple",
+ "file",
+ "radio",
+ "select",
+ "cells",
+ "stamp",
+ "payment",
+ "phone",
+ "verification",
+ "strikethrough"
+ ]
+ },
+ "role": {
+ "type": "string",
+ "description": "Role name of the signer."
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Indicates if the field is required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "areas": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "x",
+ "y",
+ "w",
+ "h",
+ "page"
+ ],
+ "properties": {
+ "x": {
+ "type": "number",
+ "description": "X-coordinate of the field area."
+ },
+ "y": {
+ "type": "number",
+ "description": "Y-coordinate of the field area."
+ },
+ "w": {
+ "type": "number",
+ "description": "Width of the field area."
+ },
+ "h": {
+ "type": "number",
+ "description": "Height of the field area."
+ },
+ "page": {
+ "type": "integer",
+ "description": "Page number of the field area. Starts from 1.",
+ "example": 1
+ },
+ "option": {
+ "type": "string",
+ "description": "Option string value for 'radio' and 'multiple' select field types."
+ }
+ }
+ }
+ },
+ "options": {
+ "type": "array",
+ "description": "An array of option values for 'select' field type.",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "Option A",
+ "Option B"
+ ]
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "flatten": {
+ "type": "boolean",
+ "description": "Remove PDF form fields from the documents.",
+ "default": false
+ },
+ "remove_tags": {
+ "type": "boolean",
+ "description": "Pass `false` to disable the removal of {{text}} tags from the PDF. This can be used along with transparent text tags for faster and more robust PDF processing.",
+ "default": true
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Create a template from Word DOCX
+
+The API endpoint provides the functionality to create a fillable document template for existing Microsoft Word document. Use {{Field Name;role=Signer1;type=date}} text tags to define fillable fields in the document. See https://www.wabosign.com/examples/fieldtags.docx for more text tag formats. Or specify the exact pixel coordinates of the document fields using `fields` param. Related Guides Use embedded text field tags to create a fillable form
+
+
+```javascript
+const wabosign = require("@wabosign/api");
+
+wabosign.configure({ key: "API_KEY", url: "https://api.wabosign.com" });
+
+const template = await wabosign.createTemplateFromDocx({
+ name: "Test DOCX",
+ documents: [
+ {
+ name: "string",
+ file: "base64"
+ }
+ ]
+});
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Create a template from Word DOCX",
+ "operationId": "createTemplateFromDocx",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "documents"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the template",
+ "example": "Test DOCX"
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this template within your app. Existing template with specified `external_id` will be updated with a new document.",
+ "example": "unique-key"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The folder's name to which the template should be created."
+ },
+ "shared_link": {
+ "type": "boolean",
+ "description": "set to `true` to make the template available via a shared link. This will allow anyone with the link to create a submission from this template.",
+ "default": true
+ },
+ "documents": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "name",
+ "file"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document."
+ },
+ "file": {
+ "type": "string",
+ "example": "base64",
+ "format": "base64",
+ "description": "Base64-encoded content of the DOCX file or downloadable file URL"
+ },
+ "fields": {
+ "description": "Fields are optional if you use {{...}} text tags to define fields in the document.",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the field."
+ },
+ "type": {
+ "type": "string",
+ "description": "Type of the field (e.g., text, signature, date, initials).",
+ "enum": [
+ "heading",
+ "text",
+ "signature",
+ "initials",
+ "date",
+ "number",
+ "image",
+ "checkbox",
+ "multiple",
+ "file",
+ "radio",
+ "select",
+ "cells",
+ "stamp",
+ "payment",
+ "phone",
+ "verification",
+ "strikethrough"
+ ]
+ },
+ "role": {
+ "type": "string",
+ "description": "Role name of the signer."
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Indicates if the field is required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "areas": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "x": {
+ "type": "number",
+ "description": "X-coordinate of the field area."
+ },
+ "y": {
+ "type": "number",
+ "description": "Y-coordinate of the field area."
+ },
+ "w": {
+ "type": "number",
+ "description": "Width of the field area."
+ },
+ "h": {
+ "type": "number",
+ "description": "Height of the field area."
+ },
+ "page": {
+ "type": "integer",
+ "description": "Page number of the field area. Starts from 1."
+ },
+ "option": {
+ "type": "string",
+ "description": "Option string value for 'radio' and 'multiple' select field types."
+ }
+ }
+ }
+ },
+ "options": {
+ "type": "array",
+ "description": "An array of option values for 'select' field type.",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "Option A",
+ "Option B"
+ ]
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Create a template from HTML
+
+The API endpoint provides the functionality to seamlessly generate a PDF document template by utilizing the provided HTML content while incorporating pre-defined fields. Related Guides Create PDF document fillable form with HTML
+
+```javascript
+const wabosign = require("@wabosign/api");
+
+wabosign.configure({ key: "API_KEY", url: "https://api.wabosign.com" });
+
+const template = await wabosign.createTemplateFromHtml({
+ html: `
Lorem Ipsum is simply dummy text of the
+
+
+and typesetting industry
Lorem Ipsum is simply dummy text of the\n\n\nand typesetting industry
\n"
+ },
+ "html_header": {
+ "type": "string",
+ "description": "HTML template of the header to be displayed on every page."
+ },
+ "html_footer": {
+ "type": "string",
+ "description": "HTML template of the footer to be displayed on every page."
+ },
+ "name": {
+ "type": "string",
+ "description": "Template name. Random uuid will be assigned when not specified.",
+ "example": "Test Template"
+ },
+ "size": {
+ "type": "string",
+ "default": "Letter",
+ "description": "Page size. Letter 8.5 x 11 will be assigned when not specified.",
+ "enum": [
+ "Letter",
+ "Legal",
+ "Tabloid",
+ "Ledger",
+ "A0",
+ "A1",
+ "A2",
+ "A3",
+ "A4",
+ "A5",
+ "A6"
+ ],
+ "example": "A4"
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this template within your app. Existing template with specified `external_id` will be updated with a new HTML.",
+ "example": "714d974e-83d8-11ee-b962-0242ac120002"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The folder's name to which the template should be created."
+ },
+ "shared_link": {
+ "type": "boolean",
+ "description": "set to `true` to make the template available via a shared link. This will allow anyone with the link to create a submission from this template.",
+ "default": true
+ },
+ "documents": {
+ "type": "array",
+ "description": "The list of documents built from HTML. Can be used to create a template with multiple documents. Leave `documents` param empty when using a top-level `html` param for a template with a single document.",
+ "items": {
+ "type": "object",
+ "required": [
+ "html"
+ ],
+ "properties": {
+ "html": {
+ "type": "string",
+ "description": "HTML template with field tags.",
+ "example": "
Lorem Ipsum is simply dummy text of the\n\n\nand typesetting industry
\n"
+ },
+ "name": {
+ "type": "string",
+ "description": "Document name. Random uuid will be assigned when not specified.",
+ "example": "Test Document"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Clone a template
+
+The API endpoint allows you to clone existing template into a new template.
+
+```javascript
+const wabosign = require("@wabosign/api");
+
+wabosign.configure({ key: "API_KEY", url: "https://api.wabosign.com" });
+
+const template = await wabosign.cloneTemplate(1000001, {
+ name: "Cloned Template"
+});
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Clone a template",
+ "operationId": "cloneTemplate",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the documents template.",
+ "example": 1000001
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Template name. Existing name with (Clone) suffix will be used if not specified.",
+ "example": "Cloned Template"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The folder's name to which the template should be cloned."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this template within your app."
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Merge templates
+
+The API endpoint allows you to merge multiple templates with documents and fields into a new combined template.
+
+```javascript
+const wabosign = require("@wabosign/api");
+
+wabosign.configure({ key: "API_KEY", url: "https://api.wabosign.com" });
+
+const template = await wabosign.mergeTemplates({
+ template_ids: [
+ 321,
+ 432
+ ],
+ name: "Merged Template"
+});
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Merge templates",
+ "operationId": "mergeTemplate",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "template_ids"
+ ],
+ "properties": {
+ "template_ids": {
+ "type": "array",
+ "description": "An array of template ids to merge into a new template.",
+ "items": {
+ "type": "integer"
+ },
+ "example": [
+ 321,
+ 432
+ ]
+ },
+ "name": {
+ "type": "string",
+ "description": "Template name. Existing name with (Merged) suffix will be used if not specified.",
+ "example": "Merged Template"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The name of the folder in which the merged template should be placed."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this template within your app."
+ },
+ "shared_link": {
+ "type": "boolean",
+ "description": "set to `true` to make the template available via a shared link. This will allow anyone with the link to create a submission from this template.",
+ "default": true
+ },
+ "roles": {
+ "type": "array",
+ "description": "An array of submitter role names to be used in the merged template.",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "Agent",
+ "Customer"
+ ]
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Update a template
+
+The API endpoint provides the functionality to move a document template to a different folder and update the name of the template.
+
+```javascript
+const wabosign = require("@wabosign/api");
+
+wabosign.configure({ key: "API_KEY", url: "https://api.wabosign.com" });
+
+const template = await wabosign.updateTemplate(1000001, {
+ name: "New Document Name",
+ folder_name: "New Folder"
+});
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Update a template",
+ "operationId": "updateTemplate",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the document template.",
+ "example": 1000001
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the template",
+ "example": "New Document Name"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The folder's name to which the template should be moved.",
+ "example": "New Folder"
+ },
+ "roles": {
+ "type": "array",
+ "description": "An array of submitter role names to update the template with.",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "Agent",
+ "Customer"
+ ]
+ },
+ "archived": {
+ "type": "boolean",
+ "description": "Set `false` to unarchive template."
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Update template documents
+
+The API endpoint allows you to add, remove or replace documents in the template with provided PDF/DOCX file or HTML content.
+
+```javascript
+const wabosign = require("@wabosign/api");
+
+wabosign.configure({ key: "API_KEY", url: "https://api.wabosign.com" });
+
+const template = await wabosign.updateTemplateDocuments(1000001, {
+ documents: [
+ {
+ file: "string"
+ }
+ ]
+});
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Update template documents",
+ "operationId": "addDocumentToTemplate",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the documents template.",
+ "example": 1000001
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "documents": {
+ "type": "array",
+ "description": "The list of documents to add or replace in the template.",
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document name. Random uuid will be assigned when not specified.",
+ "example": "Test Template"
+ },
+ "file": {
+ "type": "string",
+ "format": "base64",
+ "description": "Base64-encoded content of the PDF or DOCX file or downloadable file URL. Leave it empty if you create a new document using HTML param."
+ },
+ "html": {
+ "type": "string",
+ "description": "HTML template with field tags. Leave it empty if you add a document via PDF or DOCX base64 encoded file param or URL."
+ },
+ "position": {
+ "type": "integer",
+ "description": "Position of the document. By default will be added as the last document in the template.",
+ "example": 0
+ },
+ "replace": {
+ "type": "boolean",
+ "default": false,
+ "description": "Set to `true` to replace existing document with a new file at `position`. Existing document fields will be transferred to the new document if it doesn't contain any fields."
+ },
+ "remove": {
+ "type": "boolean",
+ "default": false,
+ "description": "Set to `true` to remove existing document at given `position` or with given `name`."
+ }
+ }
+ }
+ },
+ "merge": {
+ "type": "boolean",
+ "default": false,
+ "description": "Set to `true` to merge all existing and new documents into a single PDF document in the template."
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Archive a template
+
+The API endpoint allows you to archive a document template.
+
+```javascript
+const wabosign = require("@wabosign/api");
+
+wabosign.configure({ key: "API_KEY", url: "https://api.wabosign.com" });
+
+await wabosign.archiveTemplate(1000001);
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Archive a template",
+ "operationId": "archiveTemplate",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the document template.",
+ "example": 1000001
+ }
+ ]
+}
+```
+
diff --git a/docs/api/nodejs.md b/docs/api/nodejs.md
new file mode 100644
index 00000000..b9d76d77
--- /dev/null
+++ b/docs/api/nodejs.md
@@ -0,0 +1,4151 @@
+### List all submissions
+
+The API endpoint provides the ability to retrieve a list of available submissions.
+
+```nodejs
+const fetch = require("node-fetch");
+
+const resp = await fetch("https://api.wabosign.com/submissions", {
+ method: "GET",
+ headers: {
+ "X-Auth-Token": "API_KEY"
+ }
+});
+
+const { data, pagination } = await resp.json();
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "List all submissions",
+ "operationId": "getSubmissions",
+ "parameters": [
+ {
+ "name": "template_id",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The template ID allows you to receive only the submissions created from that specific template."
+ },
+ {
+ "name": "status",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string",
+ "enum": [
+ "pending",
+ "completed",
+ "declined",
+ "expired"
+ ]
+ },
+ "description": "Filter submissions by status."
+ },
+ {
+ "name": "q",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter submissions based on submitters name, email or phone partial match."
+ },
+ {
+ "name": "slug",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter submissions by unique slug.",
+ "example": "NtLDQM7eJX2ZMd"
+ },
+ {
+ "name": "template_folder",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter submissions by template folder name."
+ },
+ {
+ "name": "archived",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "boolean"
+ },
+ "description": "Returns only archived submissions when `true` and only active submissions when `false`."
+ },
+ {
+ "name": "limit",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The number of submissions to return. Default value is 10. Maximum value is 100."
+ },
+ {
+ "name": "after",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submission to start the list from. It allows you to receive only submissions with an ID greater than the specified value. Pass ID value from the `pagination.next` response to load the next batch of submissions."
+ },
+ {
+ "name": "before",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submission that marks the end of the list. It allows you to receive only submissions with an ID less than the specified value."
+ }
+ ]
+}
+```
+
+### Get a submission
+
+The API endpoint provides the functionality to retrieve information about a submission.
+
+```nodejs
+const fetch = require("node-fetch");
+
+const resp = await fetch("https://api.wabosign.com/submissions/1001", {
+ method: "GET",
+ headers: {
+ "X-Auth-Token": "API_KEY"
+ }
+});
+
+const submission = await resp.json();
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Get a submission",
+ "operationId": "getSubmission",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submission.",
+ "example": 1001
+ }
+ ]
+}
+```
+
+### Get submission documents
+
+This endpoint returns a list of partially filled documents for a submission. If the submission has been completed, the final signed documents are returned.
+
+```nodejs
+const fetch = require("node-fetch");
+
+const resp = await fetch("https://api.wabosign.com/submissions/1001/documents", {
+ method: "GET",
+ headers: {
+ "X-Auth-Token": "API_KEY"
+ }
+});
+
+const submission = await resp.json();
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Get submission documents",
+ "operationId": "getSubmissionDocuments",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submission.",
+ "example": 1001
+ }
+ ]
+}
+```
+
+### Create a submission
+
+This API endpoint allows you to create signature requests (submissions) for a document template and send them to the specified submitters (signers). Related Guides Send documents for signature via API Pre-fill PDF document form fields with API
+
+```nodejs
+const fetch = require("node-fetch");
+
+const resp = await fetch("https://api.wabosign.com/submissions", {
+ method: "POST",
+ headers: {
+ "X-Auth-Token": "API_KEY"
+ },
+ body: JSON.stringify({
+ template_id: 1000001,
+ send_email: true,
+ submitters: [
+ {
+ role: "First Party",
+ email: "john.doe@example.com"
+ }
+ ]
+ })
+});
+
+const submitters = await resp.json();
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Create a submission",
+ "operationId": "createSubmission",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "template_id",
+ "submitters"
+ ],
+ "properties": {
+ "template_id": {
+ "type": "integer",
+ "description": "The unique identifier of the template. Document template forms can be created via the Web UI, PDF and DOCX API, or HTML API.",
+ "example": 1000001
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "order": {
+ "type": "string",
+ "description": "Pass 'random' to send signature request emails to all parties right away. The order is 'preserved' by default so the second party will receive a signature request email only after the document is signed by the first party.",
+ "default": "preserved",
+ "enum": [
+ "preserved",
+ "random"
+ ]
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Specify URL to redirect to after the submission completion."
+ },
+ "bcc_completed": {
+ "type": "string",
+ "description": "Specify BCC address to send signed documents to after the completion."
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails."
+ },
+ "expire_at": {
+ "type": "string",
+ "description": "Specify the expiration date and time after which the submission becomes unavailable for signature.",
+ "example": "2024-09-01 12:00:00 UTC"
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body. Can include the following variables: {{template.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "submitters": {
+ "type": "array",
+ "description": "The list of submitters for the submission.",
+ "items": {
+ "type": "object",
+ "required": [
+ "email"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the submitter."
+ },
+ "role": {
+ "type": "string",
+ "description": "The role name or title of the submitter.",
+ "example": "First Party"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the submitter.",
+ "format": "email",
+ "example": "john.doe@example.com"
+ },
+ "phone": {
+ "type": "string",
+ "description": "The phone number of the submitter, formatted according to the E.164 standard.",
+ "example": "+1234567890"
+ },
+ "values": {
+ "type": "object",
+ "description": "An object with pre-filled values for the submission. Use field names for keys of the object. For more configurations see `fields` param."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this submitter within your app."
+ },
+ "completed": {
+ "type": "boolean",
+ "description": "Pass `true` to mark submitter as completed and auto-signed via API."
+ },
+ "metadata": {
+ "type": "object",
+ "description": "Metadata object with additional submitter information.",
+ "example": "{ \"customField\": \"value\" }"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending only for this submitter.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails for this submitter."
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Submitter specific URL to redirect to after the submission completion."
+ },
+ "order": {
+ "type": "integer",
+ "description": "The order of the submitter in the workflow (e.g., 0 for the first signer, 1 for the second, etc.). Use the same order number to create order groups. By default, submitters are ordered as in the submitters array."
+ },
+ "require_phone_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require phone 2FA verification via a one-time code sent to the phone number in order to access the documents.",
+ "default": false
+ },
+ "require_email_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require email 2FA verification via a one-time code sent to the email address in order to access the documents.",
+ "default": false
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject for the submitter."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body for the submitter. Can include the following variables: {{template.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "fields": {
+ "type": "array",
+ "description": "A list of configurations for template document form fields.",
+ "items": {
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document template field name.",
+ "example": "First Name"
+ },
+ "default_value": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ }
+ ]
+ }
+ }
+ ],
+ "description": "Default value of the field. Use base64 encoded file or a public URL to the image file to set default signature or image fields.",
+ "example": "Acme"
+ },
+ "readonly": {
+ "type": "boolean",
+ "description": "Set `true` to make it impossible for the submitter to edit predefined field value.",
+ "default": false
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Set `true` to make the field required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "roles": {
+ "type": "array",
+ "description": "A list of roles for the submitter. Use this param to merge multiple roles into one submitter.",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Create a submission from PDF
+
+The API endpoint provides the functionality to create one-off submission request from a PDF. Use {{Field Name;role=Signer1;type=date}} text tags to define fillable fields in the document. See https://www.wabosign.com/examples/fieldtags.pdf for more text tag formats. Or specify the exact pixel coordinates of the document fields using `fields` param. Related Guides Use embedded text field tags to create a fillable form
+
+
+```nodejs
+const fetch = require("node-fetch");
+
+const resp = await fetch("https://api.wabosign.com/submissions/pdf", {
+ method: "POST",
+ headers: {
+ "X-Auth-Token": "API_KEY"
+ },
+ body: JSON.stringify({
+ name: "Test Submission Document",
+ documents: [
+ {
+ name: "string",
+ file: "base64",
+ fields: [
+ {
+ name: "string",
+ areas: [
+ {
+ x: 0,
+ y: 0,
+ w: 0,
+ h: 0,
+ page: 1
+ }
+ ]
+ }
+ ]
+ }
+ ],
+ submitters: [
+ {
+ role: "First Party",
+ email: "john.doe@example.com"
+ }
+ ]
+ })
+});
+
+const submission = await resp.json();
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Create a submission from PDF",
+ "operationId": "createSubmissionFromPdf",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "documents",
+ "submitters"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document submission.",
+ "example": "Test Submission Document"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "order": {
+ "type": "string",
+ "description": "Pass 'random' to send signature request emails to all parties right away. The order is 'preserved' by default so the second party will receive a signature request email only after the document is signed by the first party.",
+ "default": "preserved",
+ "enum": [
+ "preserved",
+ "random"
+ ]
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Specify URL to redirect to after the submission completion."
+ },
+ "bcc_completed": {
+ "type": "string",
+ "description": "Specify BCC address to send signed documents to after the completion."
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails."
+ },
+ "expire_at": {
+ "type": "string",
+ "description": "Specify the expiration date and time after which the submission becomes unavailable for signature.",
+ "example": "2024-09-01 12:00:00 UTC"
+ },
+ "template_ids": {
+ "type": "array",
+ "description": "An optional array of template IDs to use in the submission along with the provided documents. This can be used to create multi-document submissions when some of the required documents exist within templates.",
+ "items": {
+ "type": "integer",
+ "description": "The ID of the template to use for the submission."
+ }
+ },
+ "documents": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "name",
+ "file"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document."
+ },
+ "file": {
+ "example": "base64",
+ "type": "string",
+ "format": "base64",
+ "description": "Base64-encoded content of the PDF file or downloadable file URL."
+ },
+ "fields": {
+ "type": "array",
+ "description": "Fields are optional if you use {{...}} text tags to define fields in the document.",
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the field."
+ },
+ "type": {
+ "type": "string",
+ "description": "Type of the field (e.g., text, signature, date, initials).",
+ "enum": [
+ "heading",
+ "text",
+ "signature",
+ "initials",
+ "date",
+ "number",
+ "image",
+ "checkbox",
+ "multiple",
+ "file",
+ "radio",
+ "select",
+ "cells",
+ "stamp",
+ "payment",
+ "phone",
+ "verification",
+ "strikethrough"
+ ]
+ },
+ "role": {
+ "type": "string",
+ "description": "Role name of the signer."
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Indicates if the field is required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "areas": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "x",
+ "y",
+ "w",
+ "h",
+ "page"
+ ],
+ "properties": {
+ "x": {
+ "type": "number",
+ "description": "X-coordinate of the field area."
+ },
+ "y": {
+ "type": "number",
+ "description": "Y-coordinate of the field area."
+ },
+ "w": {
+ "type": "number",
+ "description": "Width of the field area."
+ },
+ "h": {
+ "type": "number",
+ "description": "Height of the field area."
+ },
+ "page": {
+ "type": "integer",
+ "description": "Page number of the field area. Starts from 1.",
+ "example": 1
+ },
+ "option": {
+ "type": "string",
+ "description": "Option string value for 'radio' and 'multiple' select field types."
+ }
+ }
+ }
+ },
+ "options": {
+ "type": "array",
+ "description": "An array of option values for 'select' field type.",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "Option A",
+ "Option B"
+ ]
+ }
+ }
+ }
+ },
+ "position": {
+ "type": "integer",
+ "description": "Document position in the submission. If not specified, the document will be added in the order it appears in the documents array."
+ }
+ }
+ }
+ },
+ "submitters": {
+ "type": "array",
+ "description": "The list of submitters for the submission.",
+ "items": {
+ "type": "object",
+ "required": [
+ "email"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the submitter."
+ },
+ "role": {
+ "type": "string",
+ "description": "The role name or title of the submitter.",
+ "example": "First Party"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the submitter.",
+ "format": "email",
+ "example": "john.doe@example.com"
+ },
+ "phone": {
+ "type": "string",
+ "description": "The phone number of the submitter, formatted according to the E.164 standard.",
+ "example": "+1234567890"
+ },
+ "values": {
+ "type": "object",
+ "description": "An object with pre-filled values for the submission. Use field names for keys of the object. For more configurations see `fields` param."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this submitter within your app."
+ },
+ "completed": {
+ "type": "boolean",
+ "description": "Pass `true` to mark submitter as completed and auto-signed via API."
+ },
+ "metadata": {
+ "type": "object",
+ "description": "Metadata object with additional submitter information.",
+ "example": "{ \"customField\": \"value\" }"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending only for this submitter.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails for this submitter."
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Submitter specific URL to redirect to after the submission completion."
+ },
+ "order": {
+ "type": "integer",
+ "description": "The order of the submitter in the workflow (e.g., 0 for the first signer, 1 for the second, etc.). Use the same order number to create order groups. By default, submitters are ordered as in the submitters array."
+ },
+ "require_phone_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require phone 2FA verification via a one-time code sent to the phone number in order to access the documents.",
+ "default": false
+ },
+ "require_email_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require email 2FA verification via a one-time code sent to the email address in order to access the documents.",
+ "default": false
+ },
+ "invite_by": {
+ "type": "string",
+ "description": "Set the role name of the previous party that should invite this party via email."
+ },
+ "fields": {
+ "type": "array",
+ "description": "A list of configurations for document form fields.",
+ "items": {
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document field name.",
+ "example": "First Name"
+ },
+ "default_value": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ }
+ ]
+ }
+ }
+ ],
+ "description": "Default value of the field. Use base64 encoded file or a public URL to the image file to set default signature or image fields.",
+ "example": "Acme"
+ },
+ "readonly": {
+ "type": "boolean",
+ "description": "Set `true` to make it impossible for the submitter to edit predefined field value.",
+ "default": false
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Set `true` to make the field required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "roles": {
+ "type": "array",
+ "description": "A list of roles for the submitter. Use this param to merge multiple roles into one submitter.",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body. Can include the following variables: {{submission.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "flatten": {
+ "type": "boolean",
+ "description": "Remove PDF form fields from the documents.",
+ "default": false
+ },
+ "merge_documents": {
+ "type": "boolean",
+ "description": "Set `true` to merge the documents into a single PDF file.",
+ "default": false
+ },
+ "remove_tags": {
+ "type": "boolean",
+ "description": "Pass `false` to disable the removal of {{text}} tags from the PDF. This can be used along with transparent text tags for faster and more robust PDF processing.",
+ "default": true
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Create a submission from DOCX
+
+The API endpoint provides functionality to create a one-off submission request from a DOCX file with dynamic content variables. Use [[variable_name]] text tags to define dynamic content variables in the document. See https://www.wabosign.com/examples/demo_template.docx for the specific text variable syntax, including dynamic content tables and list. You can also use the {{signature}} field syntax to define fillable fields, as in a PDF. Related Guides Use dynamic content variables in DOCX to create personalized documents
+
+```nodejs
+const fetch = require("node-fetch");
+
+const resp = await fetch("https://api.wabosign.com/submissions/docx", {
+ method: "POST",
+ headers: {
+ "X-Auth-Token": "API_KEY"
+ },
+ body: JSON.stringify({
+ name: "Test Submission Document",
+ variables: {
+ variable_name: "value"
+ },
+ documents: [
+ {
+ name: "string",
+ file: "base64"
+ }
+ ],
+ submitters: [
+ {
+ role: "First Party",
+ email: "john.doe@example.com"
+ }
+ ]
+ })
+});
+
+const submitters = await resp.json();
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Create a submission from DOCX",
+ "operationId": "createSubmissionFromDocx",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "documents",
+ "submitters"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document submission.",
+ "example": "Test Submission Document"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "variables": {
+ "type": "object",
+ "description": "Dynamic content variables object. Variable values can be strings, numbers, arrays, objects, or HTML content used to generate styled text, paragraphs, and tables in DOCX.",
+ "example": {
+ "variable_name": "value"
+ }
+ },
+ "order": {
+ "type": "string",
+ "description": "Pass 'random' to send signature request emails to all parties right away. The order is 'preserved' by default so the second party will receive a signature request email only after the document is signed by the first party.",
+ "default": "preserved",
+ "enum": [
+ "preserved",
+ "random"
+ ]
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Specify URL to redirect to after the submission completion."
+ },
+ "bcc_completed": {
+ "type": "string",
+ "description": "Specify BCC address to send signed documents to after the completion."
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails."
+ },
+ "expire_at": {
+ "type": "string",
+ "description": "Specify the expiration date and time after which the submission becomes unavailable for signature.",
+ "example": "2024-09-01 12:00:00 UTC"
+ },
+ "template_ids": {
+ "type": "array",
+ "description": "An optional array of template IDs to use in the submission along with the provided documents. This can be used to create multi-document submissions when some of the required documents exist within templates.",
+ "items": {
+ "type": "integer",
+ "description": "The ID of the template to use for the submission."
+ }
+ },
+ "documents": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "name",
+ "file"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document."
+ },
+ "file": {
+ "example": "base64",
+ "type": "string",
+ "format": "base64",
+ "description": "Base64-encoded content of the PDF or DOCX file or downloadable file URL."
+ },
+ "position": {
+ "type": "integer",
+ "description": "Document position in the submission. If not specified, the document will be added in the order it appears in the documents array."
+ }
+ }
+ }
+ },
+ "submitters": {
+ "type": "array",
+ "description": "The list of submitters for the submission.",
+ "items": {
+ "type": "object",
+ "required": [
+ "email"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the submitter."
+ },
+ "role": {
+ "type": "string",
+ "description": "The role name or title of the submitter.",
+ "example": "First Party"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the submitter.",
+ "format": "email",
+ "example": "john.doe@example.com"
+ },
+ "phone": {
+ "type": "string",
+ "description": "The phone number of the submitter, formatted according to the E.164 standard.",
+ "example": "+1234567890"
+ },
+ "values": {
+ "type": "object",
+ "description": "An object with pre-filled values for the submission. Use field names for keys of the object. For more configurations see `fields` param."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this submitter within your app."
+ },
+ "completed": {
+ "type": "boolean",
+ "description": "Pass `true` to mark submitter as completed and auto-signed via API."
+ },
+ "metadata": {
+ "type": "object",
+ "description": "Metadata object with additional submitter information.",
+ "example": "{ \"customField\": \"value\" }"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending only for this submitter.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails for this submitter."
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Submitter specific URL to redirect to after the submission completion."
+ },
+ "order": {
+ "type": "integer",
+ "description": "The order of the submitter in the workflow (e.g., 0 for the first signer, 1 for the second, etc.). Use the same order number to create order groups. By default, submitters are ordered as in the submitters array."
+ },
+ "require_phone_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require phone 2FA verification via a one-time code sent to the phone number in order to access the documents.",
+ "default": false
+ },
+ "require_email_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require email 2FA verification via a one-time code sent to the email address in order to access the documents.",
+ "default": false
+ },
+ "invite_by": {
+ "type": "string",
+ "description": "Set the role name of the previous party that should invite this party via email."
+ },
+ "fields": {
+ "type": "array",
+ "description": "A list of configurations for document form fields.",
+ "items": {
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document field name.",
+ "example": "First Name"
+ },
+ "default_value": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ }
+ ]
+ }
+ }
+ ],
+ "description": "Default value of the field. Use base64 encoded file or a public URL to the image file to set default signature or image fields.",
+ "example": "Acme"
+ },
+ "readonly": {
+ "type": "boolean",
+ "description": "Set `true` to make it impossible for the submitter to edit predefined field value.",
+ "default": false
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Set `true` to make the field required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "roles": {
+ "type": "array",
+ "description": "A list of roles for the submitter. Use this param to merge multiple roles into one submitter.",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body. Can include the following variables: {{submission.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "merge_documents": {
+ "type": "boolean",
+ "description": "Set `true` to merge the documents into a single PDF file.",
+ "default": false
+ },
+ "remove_tags": {
+ "type": "boolean",
+ "description": "Pass `false` to disable the removal of {{text}} tags from the PDF. This can be used along with transparent text tags for faster and more robust PDF processing.",
+ "default": true
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Create a submission from HTML
+
+This API endpoint allows you to create a one-off submission request document using the provided HTML content, with special field tags rendered as a fillable and signable form. Related Guides Create PDF document fillable form with HTML
+
+```nodejs
+const fetch = require("node-fetch");
+
+const resp = await fetch("https://api.wabosign.com/submissions/html", {
+ method: "POST",
+ headers: {
+ "X-Auth-Token": "API_KEY"
+ },
+ body: JSON.stringify({
+ name: "Test Submission Document",
+ documents: [
+ {
+ name: "Test Document",
+ html: `
Lorem Ipsum is simply dummy text of the
+
+
+and typesetting industry
+`
+ }
+ ],
+ submitters: [
+ {
+ role: "First Party",
+ email: "john.doe@example.com"
+ }
+ ]
+ })
+});
+
+const submission = await resp.json();
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Create a submission from HTML",
+ "operationId": "createSubmissionFromHtml",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "documents",
+ "submitters"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document submission",
+ "example": "Test Submission Document"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "order": {
+ "type": "string",
+ "description": "Pass 'random' to send signature request emails to all parties right away. The order is 'preserved' by default so the second party will receive a signature request email only after the document is signed by the first party.",
+ "default": "preserved",
+ "enum": [
+ "preserved",
+ "random"
+ ]
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Specify URL to redirect to after the submission completion."
+ },
+ "bcc_completed": {
+ "type": "string",
+ "description": "Specify BCC address to send signed documents to after the completion."
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails."
+ },
+ "expire_at": {
+ "type": "string",
+ "description": "Specify the expiration date and time after which the submission becomes unavailable for signature.",
+ "example": "2024-09-01 12:00:00 UTC"
+ },
+ "template_ids": {
+ "type": "array",
+ "description": "An optional array of template IDs to use in the submission along with the provided documents. This can be used to create multi-document submissions when some of the required documents exist within templates.",
+ "items": {
+ "type": "integer",
+ "description": "The ID of the template to use for the submission."
+ }
+ },
+ "documents": {
+ "type": "array",
+ "description": "The list of documents built from HTML. Can be used to create a submission with multiple documents.",
+ "items": {
+ "type": "object",
+ "required": [
+ "html"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document name. Random uuid will be assigned when not specified.",
+ "example": "Test Document"
+ },
+ "html": {
+ "type": "string",
+ "description": "HTML document content with field tags.",
+ "example": "
Lorem Ipsum is simply dummy text of the\n\n\nand typesetting industry
\n"
+ },
+ "html_header": {
+ "type": "string",
+ "description": "HTML document content of the header to be displayed on every page."
+ },
+ "html_footer": {
+ "type": "string",
+ "description": "HTML document content of the footer to be displayed on every page."
+ },
+ "size": {
+ "type": "string",
+ "default": "Letter",
+ "description": "Page size. Letter 8.5 x 11 will be assigned when not specified.",
+ "enum": [
+ "Letter",
+ "Legal",
+ "Tabloid",
+ "Ledger",
+ "A0",
+ "A1",
+ "A2",
+ "A3",
+ "A4",
+ "A5",
+ "A6"
+ ],
+ "example": "A4"
+ },
+ "position": {
+ "type": "integer",
+ "description": "Document position in the submission. If not specified, the document will be added in the order it appears in the documents array."
+ }
+ }
+ }
+ },
+ "submitters": {
+ "type": "array",
+ "description": "The list of submitters for the submission.",
+ "items": {
+ "type": "object",
+ "required": [
+ "email"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the submitter."
+ },
+ "role": {
+ "type": "string",
+ "description": "The role name or title of the submitter.",
+ "example": "First Party"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the submitter.",
+ "format": "email",
+ "example": "john.doe@example.com"
+ },
+ "phone": {
+ "type": "string",
+ "description": "The phone number of the submitter, formatted according to the E.164 standard.",
+ "example": "+1234567890"
+ },
+ "values": {
+ "type": "object",
+ "description": "An object with pre-filled values for the submission. Use field names for keys of the object. For more configurations see `fields` param."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this submitter within your app."
+ },
+ "completed": {
+ "type": "boolean",
+ "description": "Pass `true` to mark submitter as completed and auto-signed via API."
+ },
+ "metadata": {
+ "type": "object",
+ "description": "Metadata object with additional submitter information.",
+ "example": "{ \"customField\": \"value\" }"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending only for this submitter.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails for this submitter."
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Submitter specific URL to redirect to after the submission completion."
+ },
+ "order": {
+ "type": "integer",
+ "description": "The order of the submitter in the workflow (e.g., 0 for the first signer, 1 for the second, etc.). Use the same order number to create order groups. By default, submitters are ordered as in the submitters array."
+ },
+ "require_phone_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require phone 2FA verification via a one-time code sent to the phone number in order to access the documents.",
+ "default": false
+ },
+ "require_email_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require email 2FA verification via a one-time code sent to the email address in order to access the documents.",
+ "default": false
+ },
+ "invite_by": {
+ "type": "string",
+ "description": "Set the role name of the previous party that should invite this party via email."
+ },
+ "fields": {
+ "type": "array",
+ "description": "A list of configurations for document form fields.",
+ "items": {
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document field name.",
+ "example": "First Name"
+ },
+ "default_value": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ }
+ ]
+ }
+ }
+ ],
+ "description": "Default value of the field. Use base64 encoded file or a public URL to the image file to set default signature or image fields.",
+ "example": "Acme"
+ },
+ "readonly": {
+ "type": "boolean",
+ "description": "Set `true` to make it impossible for the submitter to edit predefined field value.",
+ "default": false
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Set `true` to make the field required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "roles": {
+ "type": "array",
+ "description": "A list of roles for the submitter. Use this param to merge multiple roles into one submitter.",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body. Can include the following variables: {{submission.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "merge_documents": {
+ "type": "boolean",
+ "description": "Set `true` to merge the documents into a single PDF file.",
+ "default": false
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Archive a submission
+
+The API endpoint allows you to archive a submission.
+
+```nodejs
+const fetch = require("node-fetch");
+
+const resp = await fetch("https://api.wabosign.com/submissions/1001", {
+ method: "DELETE",
+ headers: {
+ "X-Auth-Token": "API_KEY"
+ }
+});
+
+await resp.json();
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Archive a submission",
+ "operationId": "archiveSubmission",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submission.",
+ "example": 1001
+ }
+ ]
+}
+```
+
+### List all submitters
+
+The API endpoint provides the ability to retrieve a list of submitters.
+
+```nodejs
+const fetch = require("node-fetch");
+
+const resp = await fetch("https://api.wabosign.com/submitters", {
+ method: "GET",
+ headers: {
+ "X-Auth-Token": "API_KEY"
+ }
+});
+
+const { data, pagination } = await resp.json();
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submitters"
+ ],
+ "summary": "List all submitters",
+ "operationId": "getSubmitters",
+ "parameters": [
+ {
+ "name": "submission_id",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The submission ID allows you to receive only the submitters related to that specific submission."
+ },
+ {
+ "name": "q",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter submitters on name, email or phone partial match."
+ },
+ {
+ "name": "slug",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter submitters by unique slug.",
+ "example": "zAyL9fH36Havvm"
+ },
+ {
+ "name": "completed_after",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "example": "2024-03-05 9:32:20",
+ "description": "The date and time string value to filter submitters that completed the submission after the specified date and time."
+ },
+ {
+ "name": "completed_before",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "example": "2024-03-06 19:32:20",
+ "description": "The date and time string value to filter submitters that completed the submission before the specified date and time."
+ },
+ {
+ "name": "external_id",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "The unique applications-specific identifier provided for a submitter when initializing a signature request. It allows you to receive only submitters with a specified external id."
+ },
+ {
+ "name": "limit",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The number of submitters to return. Default value is 10. Maximum value is 100."
+ },
+ {
+ "name": "after",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submitter to start the list from. It allows you to receive only submitters with id greater than the specified value. Pass ID value from the `pagination.next` response to load the next batch of submitters."
+ },
+ {
+ "name": "before",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submitter to end the list with. It allows you to receive only submitters with id less than the specified value."
+ }
+ ]
+}
+```
+
+### Get a submitter
+
+The API endpoint provides functionality to retrieve information about a submitter, along with the submitter documents and field values.
+
+```nodejs
+const fetch = require("node-fetch");
+
+const resp = await fetch("https://api.wabosign.com/submitters/500001", {
+ method: "GET",
+ headers: {
+ "X-Auth-Token": "API_KEY"
+ }
+});
+
+const submitter = await resp.json();
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submitters"
+ ],
+ "summary": "Get a submitter",
+ "operationId": "getSubmitter",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submitter.",
+ "example": 500001
+ }
+ ]
+}
+```
+
+### Update a submitter
+
+The API endpoint allows you to update submitter details, pre-fill or update field values and re-send emails. Related Guides Automatically sign documents via API
+
+```nodejs
+const fetch = require("node-fetch");
+
+const resp = await fetch("https://api.wabosign.com/submitters/500001", {
+ method: "PUT",
+ headers: {
+ "X-Auth-Token": "API_KEY"
+ },
+ body: JSON.stringify({
+ email: "john.doe@example.com",
+ fields: [
+ {
+ name: "First Name",
+ default_value: "Acme"
+ }
+ ]
+ })
+});
+
+const submitter = await resp.json();
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submitters"
+ ],
+ "summary": "Update a submitter",
+ "operationId": "updateSubmitter",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submitter.",
+ "example": 500001
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the submitter."
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the submitter.",
+ "format": "email",
+ "example": "john.doe@example.com"
+ },
+ "phone": {
+ "type": "string",
+ "description": "The phone number of the submitter, formatted according to the E.164 standard.",
+ "example": "+1234567890"
+ },
+ "values": {
+ "type": "object",
+ "description": "An object with pre-filled values for the submission. Use field names for keys of the object. For more configurations see `fields` param."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this submitter within your app."
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `true` to re-send signature request emails."
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to re-send signature request via phone number SMS.",
+ "default": false
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails."
+ },
+ "completed": {
+ "type": "boolean",
+ "description": "Pass `true` to mark submitter as completed and auto-signed via API."
+ },
+ "metadata": {
+ "type": "object",
+ "description": "Metadata object with additional submitter information.",
+ "example": "{ \"customField\": \"value\" }"
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Submitter specific URL to redirect to after the submission completion."
+ },
+ "require_phone_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require phone 2FA verification via a one-time code sent to the phone number in order to access the documents.",
+ "default": false
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body. Can include the following variables: {{template.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "fields": {
+ "type": "array",
+ "description": "A list of configurations for template document form fields.",
+ "items": {
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document template field name.",
+ "example": "First Name"
+ },
+ "default_value": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ }
+ ]
+ }
+ }
+ ],
+ "description": "Default value of the field. Use base64 encoded file or a public URL to the image file to set default signature or image fields.",
+ "example": "Acme"
+ },
+ "readonly": {
+ "type": "boolean",
+ "description": "Set `true` to make it impossible for the submitter to edit predefined field value.",
+ "default": false
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Set `true` to make the field required."
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### List all templates
+
+The API endpoint provides the ability to retrieve a list of available document templates.
+
+```nodejs
+const fetch = require("node-fetch");
+
+const resp = await fetch("https://api.wabosign.com/templates", {
+ method: "GET",
+ headers: {
+ "X-Auth-Token": "API_KEY"
+ }
+});
+
+const { data, pagination } = await resp.json();
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "List all templates",
+ "operationId": "getTemplates",
+ "parameters": [
+ {
+ "name": "q",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter templates based on the name partial match."
+ },
+ {
+ "name": "slug",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter templates by unique slug.",
+ "example": "opaKWh8WWTAcVG"
+ },
+ {
+ "name": "external_id",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "The unique applications-specific identifier provided for the template via API or Embedded template form builder. It allows you to receive only templates with your specified external id."
+ },
+ {
+ "name": "folder",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter templates by folder name."
+ },
+ {
+ "name": "archived",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "boolean"
+ },
+ "description": "Get only archived templates instead of active ones."
+ },
+ {
+ "name": "limit",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The number of templates to return. Default value is 10. Maximum value is 100."
+ },
+ {
+ "name": "after",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the template to start the list from. It allows you to receive only templates with id greater than the specified value. Pass ID value from the `pagination.next` response to load the next batch of templates."
+ },
+ {
+ "name": "before",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the template to end the list with. It allows you to receive only templates with id less than the specified value."
+ }
+ ]
+}
+```
+
+### Get a template
+
+The API endpoint provides the functionality to retrieve information about a document template.
+
+```nodejs
+const fetch = require("node-fetch");
+
+const resp = await fetch("https://api.wabosign.com/templates/1000001", {
+ method: "GET",
+ headers: {
+ "X-Auth-Token": "API_KEY"
+ }
+});
+
+const template = await resp.json();
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Get a template",
+ "operationId": "getTemplate",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the document template.",
+ "example": 1000001
+ }
+ ]
+}
+```
+
+### Create a template from PDF
+
+The API endpoint provides the functionality to create a fillable document template for a PDF file. Use {{Field Name;role=Signer1;type=date}} text tags to define fillable fields in the document. See https://www.wabosign.com/examples/fieldtags.pdf for more text tag formats. Or specify the exact pixel coordinates of the document fields using `fields` param. Related Guides Use embedded text field tags to create a fillable form
+
+
+```nodejs
+const fetch = require("node-fetch");
+
+const resp = await fetch("https://api.wabosign.com/templates/pdf", {
+ method: "POST",
+ headers: {
+ "X-Auth-Token": "API_KEY"
+ },
+ body: JSON.stringify({
+ name: "Test PDF",
+ documents: [
+ {
+ name: "string",
+ file: "base64",
+ fields: [
+ {
+ name: "string",
+ areas: [
+ {
+ x: 0,
+ y: 0,
+ w: 0,
+ h: 0,
+ page: 1
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ })
+});
+
+const template = await resp.json();
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Create a template from PDF",
+ "operationId": "createTemplateFromPdf",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "documents"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the template",
+ "example": "Test PDF"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The folder's name to which the template should be created."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this template within your app. Existing template with specified `external_id` will be updated with a new PDF.",
+ "example": "unique-key"
+ },
+ "shared_link": {
+ "type": "boolean",
+ "description": "set to `true` to make the template available via a shared link. This will allow anyone with the link to create a submission from this template.",
+ "default": true
+ },
+ "documents": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "name",
+ "file"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document."
+ },
+ "file": {
+ "example": "base64",
+ "type": "string",
+ "format": "base64",
+ "description": "Base64-encoded content of the PDF file or downloadable file URL."
+ },
+ "fields": {
+ "type": "array",
+ "description": "Fields are optional if you use {{...}} text tags to define fields in the document.",
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the field."
+ },
+ "type": {
+ "type": "string",
+ "description": "Type of the field (e.g., text, signature, date, initials).",
+ "enum": [
+ "heading",
+ "text",
+ "signature",
+ "initials",
+ "date",
+ "number",
+ "image",
+ "checkbox",
+ "multiple",
+ "file",
+ "radio",
+ "select",
+ "cells",
+ "stamp",
+ "payment",
+ "phone",
+ "verification",
+ "strikethrough"
+ ]
+ },
+ "role": {
+ "type": "string",
+ "description": "Role name of the signer."
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Indicates if the field is required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "areas": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "x",
+ "y",
+ "w",
+ "h",
+ "page"
+ ],
+ "properties": {
+ "x": {
+ "type": "number",
+ "description": "X-coordinate of the field area."
+ },
+ "y": {
+ "type": "number",
+ "description": "Y-coordinate of the field area."
+ },
+ "w": {
+ "type": "number",
+ "description": "Width of the field area."
+ },
+ "h": {
+ "type": "number",
+ "description": "Height of the field area."
+ },
+ "page": {
+ "type": "integer",
+ "description": "Page number of the field area. Starts from 1.",
+ "example": 1
+ },
+ "option": {
+ "type": "string",
+ "description": "Option string value for 'radio' and 'multiple' select field types."
+ }
+ }
+ }
+ },
+ "options": {
+ "type": "array",
+ "description": "An array of option values for 'select' field type.",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "Option A",
+ "Option B"
+ ]
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "flatten": {
+ "type": "boolean",
+ "description": "Remove PDF form fields from the documents.",
+ "default": false
+ },
+ "remove_tags": {
+ "type": "boolean",
+ "description": "Pass `false` to disable the removal of {{text}} tags from the PDF. This can be used along with transparent text tags for faster and more robust PDF processing.",
+ "default": true
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Create a template from Word DOCX
+
+The API endpoint provides the functionality to create a fillable document template for existing Microsoft Word document. Use {{Field Name;role=Signer1;type=date}} text tags to define fillable fields in the document. See https://www.wabosign.com/examples/fieldtags.docx for more text tag formats. Or specify the exact pixel coordinates of the document fields using `fields` param. Related Guides Use embedded text field tags to create a fillable form
+
+
+```nodejs
+const fetch = require("node-fetch");
+
+const resp = await fetch("https://api.wabosign.com/templates/docx", {
+ method: "POST",
+ headers: {
+ "X-Auth-Token": "API_KEY"
+ },
+ body: JSON.stringify({
+ name: "Test DOCX",
+ documents: [
+ {
+ name: "string",
+ file: "base64"
+ }
+ ]
+ })
+});
+
+const template = await resp.json();
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Create a template from Word DOCX",
+ "operationId": "createTemplateFromDocx",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "documents"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the template",
+ "example": "Test DOCX"
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this template within your app. Existing template with specified `external_id` will be updated with a new document.",
+ "example": "unique-key"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The folder's name to which the template should be created."
+ },
+ "shared_link": {
+ "type": "boolean",
+ "description": "set to `true` to make the template available via a shared link. This will allow anyone with the link to create a submission from this template.",
+ "default": true
+ },
+ "documents": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "name",
+ "file"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document."
+ },
+ "file": {
+ "type": "string",
+ "example": "base64",
+ "format": "base64",
+ "description": "Base64-encoded content of the DOCX file or downloadable file URL"
+ },
+ "fields": {
+ "description": "Fields are optional if you use {{...}} text tags to define fields in the document.",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the field."
+ },
+ "type": {
+ "type": "string",
+ "description": "Type of the field (e.g., text, signature, date, initials).",
+ "enum": [
+ "heading",
+ "text",
+ "signature",
+ "initials",
+ "date",
+ "number",
+ "image",
+ "checkbox",
+ "multiple",
+ "file",
+ "radio",
+ "select",
+ "cells",
+ "stamp",
+ "payment",
+ "phone",
+ "verification",
+ "strikethrough"
+ ]
+ },
+ "role": {
+ "type": "string",
+ "description": "Role name of the signer."
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Indicates if the field is required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "areas": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "x": {
+ "type": "number",
+ "description": "X-coordinate of the field area."
+ },
+ "y": {
+ "type": "number",
+ "description": "Y-coordinate of the field area."
+ },
+ "w": {
+ "type": "number",
+ "description": "Width of the field area."
+ },
+ "h": {
+ "type": "number",
+ "description": "Height of the field area."
+ },
+ "page": {
+ "type": "integer",
+ "description": "Page number of the field area. Starts from 1."
+ },
+ "option": {
+ "type": "string",
+ "description": "Option string value for 'radio' and 'multiple' select field types."
+ }
+ }
+ }
+ },
+ "options": {
+ "type": "array",
+ "description": "An array of option values for 'select' field type.",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "Option A",
+ "Option B"
+ ]
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Create a template from HTML
+
+The API endpoint provides the functionality to seamlessly generate a PDF document template by utilizing the provided HTML content while incorporating pre-defined fields. Related Guides Create PDF document fillable form with HTML
+
+```nodejs
+const fetch = require("node-fetch");
+
+const resp = await fetch("https://api.wabosign.com/templates/html", {
+ method: "POST",
+ headers: {
+ "X-Auth-Token": "API_KEY"
+ },
+ body: JSON.stringify({
+ html: `
Lorem Ipsum is simply dummy text of the
+
+
+and typesetting industry
Lorem Ipsum is simply dummy text of the\n\n\nand typesetting industry
\n"
+ },
+ "html_header": {
+ "type": "string",
+ "description": "HTML template of the header to be displayed on every page."
+ },
+ "html_footer": {
+ "type": "string",
+ "description": "HTML template of the footer to be displayed on every page."
+ },
+ "name": {
+ "type": "string",
+ "description": "Template name. Random uuid will be assigned when not specified.",
+ "example": "Test Template"
+ },
+ "size": {
+ "type": "string",
+ "default": "Letter",
+ "description": "Page size. Letter 8.5 x 11 will be assigned when not specified.",
+ "enum": [
+ "Letter",
+ "Legal",
+ "Tabloid",
+ "Ledger",
+ "A0",
+ "A1",
+ "A2",
+ "A3",
+ "A4",
+ "A5",
+ "A6"
+ ],
+ "example": "A4"
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this template within your app. Existing template with specified `external_id` will be updated with a new HTML.",
+ "example": "714d974e-83d8-11ee-b962-0242ac120002"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The folder's name to which the template should be created."
+ },
+ "shared_link": {
+ "type": "boolean",
+ "description": "set to `true` to make the template available via a shared link. This will allow anyone with the link to create a submission from this template.",
+ "default": true
+ },
+ "documents": {
+ "type": "array",
+ "description": "The list of documents built from HTML. Can be used to create a template with multiple documents. Leave `documents` param empty when using a top-level `html` param for a template with a single document.",
+ "items": {
+ "type": "object",
+ "required": [
+ "html"
+ ],
+ "properties": {
+ "html": {
+ "type": "string",
+ "description": "HTML template with field tags.",
+ "example": "
Lorem Ipsum is simply dummy text of the\n\n\nand typesetting industry
\n"
+ },
+ "name": {
+ "type": "string",
+ "description": "Document name. Random uuid will be assigned when not specified.",
+ "example": "Test Document"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Clone a template
+
+The API endpoint allows you to clone existing template into a new template.
+
+```nodejs
+const fetch = require("node-fetch");
+
+const resp = await fetch("https://api.wabosign.com/templates/1000001/clone", {
+ method: "POST",
+ headers: {
+ "X-Auth-Token": "API_KEY"
+ },
+ body: JSON.stringify({
+ name: "Cloned Template"
+ })
+});
+
+const template = await resp.json();
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Clone a template",
+ "operationId": "cloneTemplate",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the documents template.",
+ "example": 1000001
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Template name. Existing name with (Clone) suffix will be used if not specified.",
+ "example": "Cloned Template"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The folder's name to which the template should be cloned."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this template within your app."
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Merge templates
+
+The API endpoint allows you to merge multiple templates with documents and fields into a new combined template.
+
+```nodejs
+const fetch = require("node-fetch");
+
+const resp = await fetch("https://api.wabosign.com/templates/merge", {
+ method: "POST",
+ headers: {
+ "X-Auth-Token": "API_KEY"
+ },
+ body: JSON.stringify({
+ template_ids: [
+ 321,
+ 432
+ ],
+ name: "Merged Template"
+ })
+});
+
+const template = await resp.json();
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Merge templates",
+ "operationId": "mergeTemplate",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "template_ids"
+ ],
+ "properties": {
+ "template_ids": {
+ "type": "array",
+ "description": "An array of template ids to merge into a new template.",
+ "items": {
+ "type": "integer"
+ },
+ "example": [
+ 321,
+ 432
+ ]
+ },
+ "name": {
+ "type": "string",
+ "description": "Template name. Existing name with (Merged) suffix will be used if not specified.",
+ "example": "Merged Template"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The name of the folder in which the merged template should be placed."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this template within your app."
+ },
+ "shared_link": {
+ "type": "boolean",
+ "description": "set to `true` to make the template available via a shared link. This will allow anyone with the link to create a submission from this template.",
+ "default": true
+ },
+ "roles": {
+ "type": "array",
+ "description": "An array of submitter role names to be used in the merged template.",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "Agent",
+ "Customer"
+ ]
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Update a template
+
+The API endpoint provides the functionality to move a document template to a different folder and update the name of the template.
+
+```nodejs
+const fetch = require("node-fetch");
+
+const resp = await fetch("https://api.wabosign.com/templates/1000001", {
+ method: "PUT",
+ headers: {
+ "X-Auth-Token": "API_KEY"
+ },
+ body: JSON.stringify({
+ name: "New Document Name",
+ folder_name: "New Folder"
+ })
+});
+
+const template = await resp.json();
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Update a template",
+ "operationId": "updateTemplate",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the document template.",
+ "example": 1000001
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the template",
+ "example": "New Document Name"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The folder's name to which the template should be moved.",
+ "example": "New Folder"
+ },
+ "roles": {
+ "type": "array",
+ "description": "An array of submitter role names to update the template with.",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "Agent",
+ "Customer"
+ ]
+ },
+ "archived": {
+ "type": "boolean",
+ "description": "Set `false` to unarchive template."
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Update template documents
+
+The API endpoint allows you to add, remove or replace documents in the template with provided PDF/DOCX file or HTML content.
+
+```nodejs
+const fetch = require("node-fetch");
+
+const resp = await fetch("https://api.wabosign.com/templates/1000001/documents", {
+ method: "PUT",
+ headers: {
+ "X-Auth-Token": "API_KEY"
+ },
+ body: JSON.stringify({
+ documents: [
+ {
+ file: "string"
+ }
+ ]
+ })
+});
+
+const template = await resp.json();
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Update template documents",
+ "operationId": "addDocumentToTemplate",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the documents template.",
+ "example": 1000001
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "documents": {
+ "type": "array",
+ "description": "The list of documents to add or replace in the template.",
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document name. Random uuid will be assigned when not specified.",
+ "example": "Test Template"
+ },
+ "file": {
+ "type": "string",
+ "format": "base64",
+ "description": "Base64-encoded content of the PDF or DOCX file or downloadable file URL. Leave it empty if you create a new document using HTML param."
+ },
+ "html": {
+ "type": "string",
+ "description": "HTML template with field tags. Leave it empty if you add a document via PDF or DOCX base64 encoded file param or URL."
+ },
+ "position": {
+ "type": "integer",
+ "description": "Position of the document. By default will be added as the last document in the template.",
+ "example": 0
+ },
+ "replace": {
+ "type": "boolean",
+ "default": false,
+ "description": "Set to `true` to replace existing document with a new file at `position`. Existing document fields will be transferred to the new document if it doesn't contain any fields."
+ },
+ "remove": {
+ "type": "boolean",
+ "default": false,
+ "description": "Set to `true` to remove existing document at given `position` or with given `name`."
+ }
+ }
+ }
+ },
+ "merge": {
+ "type": "boolean",
+ "default": false,
+ "description": "Set to `true` to merge all existing and new documents into a single PDF document in the template."
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Archive a template
+
+The API endpoint allows you to archive a document template.
+
+```nodejs
+const fetch = require("node-fetch");
+
+const resp = await fetch("https://api.wabosign.com/templates/1000001", {
+ method: "DELETE",
+ headers: {
+ "X-Auth-Token": "API_KEY"
+ }
+});
+
+await resp.json();
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Archive a template",
+ "operationId": "archiveTemplate",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the document template.",
+ "example": 1000001
+ }
+ ]
+}
+```
+
diff --git a/docs/api/php.md b/docs/api/php.md
new file mode 100644
index 00000000..6ff894b8
--- /dev/null
+++ b/docs/api/php.md
@@ -0,0 +1,3992 @@
+### List all submissions
+
+The API endpoint provides the ability to retrieve a list of available submissions.
+
+```php
+$wabosign = new \Wabosign\Api('API_KEY', 'https://api.wabosign.com');
+
+$wabosign->listSubmissions(['limit' => 10]);
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "List all submissions",
+ "operationId": "getSubmissions",
+ "parameters": [
+ {
+ "name": "template_id",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The template ID allows you to receive only the submissions created from that specific template."
+ },
+ {
+ "name": "status",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string",
+ "enum": [
+ "pending",
+ "completed",
+ "declined",
+ "expired"
+ ]
+ },
+ "description": "Filter submissions by status."
+ },
+ {
+ "name": "q",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter submissions based on submitters name, email or phone partial match."
+ },
+ {
+ "name": "slug",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter submissions by unique slug.",
+ "example": "NtLDQM7eJX2ZMd"
+ },
+ {
+ "name": "template_folder",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter submissions by template folder name."
+ },
+ {
+ "name": "archived",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "boolean"
+ },
+ "description": "Returns only archived submissions when `true` and only active submissions when `false`."
+ },
+ {
+ "name": "limit",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The number of submissions to return. Default value is 10. Maximum value is 100."
+ },
+ {
+ "name": "after",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submission to start the list from. It allows you to receive only submissions with an ID greater than the specified value. Pass ID value from the `pagination.next` response to load the next batch of submissions."
+ },
+ {
+ "name": "before",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submission that marks the end of the list. It allows you to receive only submissions with an ID less than the specified value."
+ }
+ ]
+}
+```
+
+### Get a submission
+
+The API endpoint provides the functionality to retrieve information about a submission.
+
+```php
+$wabosign = new \Wabosign\Api('API_KEY', 'https://api.wabosign.com');
+
+$wabosign->getSubmission(1001);
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Get a submission",
+ "operationId": "getSubmission",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submission.",
+ "example": 1001
+ }
+ ]
+}
+```
+
+### Get submission documents
+
+This endpoint returns a list of partially filled documents for a submission. If the submission has been completed, the final signed documents are returned.
+
+```php
+$wabosign = new \Wabosign\Api('API_KEY', 'https://api.wabosign.com');
+
+$wabosign->getSubmissionDocuments(1001);
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Get submission documents",
+ "operationId": "getSubmissionDocuments",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submission.",
+ "example": 1001
+ }
+ ]
+}
+```
+
+### Create a submission
+
+This API endpoint allows you to create signature requests (submissions) for a document template and send them to the specified submitters (signers). Related Guides Send documents for signature via API Pre-fill PDF document form fields with API
+
+```php
+$wabosign = new \Wabosign\Api('API_KEY', 'https://api.wabosign.com');
+
+$wabosign->createSubmission([
+ 'template_id' => 1000001,
+ 'send_email' => true,
+ 'submitters' => [
+ [
+ 'role' => 'First Party',
+ 'email' => 'john.doe@example.com'
+ ]
+ ]
+]);
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Create a submission",
+ "operationId": "createSubmission",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "template_id",
+ "submitters"
+ ],
+ "properties": {
+ "template_id": {
+ "type": "integer",
+ "description": "The unique identifier of the template. Document template forms can be created via the Web UI, PDF and DOCX API, or HTML API.",
+ "example": 1000001
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "order": {
+ "type": "string",
+ "description": "Pass 'random' to send signature request emails to all parties right away. The order is 'preserved' by default so the second party will receive a signature request email only after the document is signed by the first party.",
+ "default": "preserved",
+ "enum": [
+ "preserved",
+ "random"
+ ]
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Specify URL to redirect to after the submission completion."
+ },
+ "bcc_completed": {
+ "type": "string",
+ "description": "Specify BCC address to send signed documents to after the completion."
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails."
+ },
+ "expire_at": {
+ "type": "string",
+ "description": "Specify the expiration date and time after which the submission becomes unavailable for signature.",
+ "example": "2024-09-01 12:00:00 UTC"
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body. Can include the following variables: {{template.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "submitters": {
+ "type": "array",
+ "description": "The list of submitters for the submission.",
+ "items": {
+ "type": "object",
+ "required": [
+ "email"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the submitter."
+ },
+ "role": {
+ "type": "string",
+ "description": "The role name or title of the submitter.",
+ "example": "First Party"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the submitter.",
+ "format": "email",
+ "example": "john.doe@example.com"
+ },
+ "phone": {
+ "type": "string",
+ "description": "The phone number of the submitter, formatted according to the E.164 standard.",
+ "example": "+1234567890"
+ },
+ "values": {
+ "type": "object",
+ "description": "An object with pre-filled values for the submission. Use field names for keys of the object. For more configurations see `fields` param."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this submitter within your app."
+ },
+ "completed": {
+ "type": "boolean",
+ "description": "Pass `true` to mark submitter as completed and auto-signed via API."
+ },
+ "metadata": {
+ "type": "object",
+ "description": "Metadata object with additional submitter information.",
+ "example": "{ \"customField\": \"value\" }"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending only for this submitter.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails for this submitter."
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Submitter specific URL to redirect to after the submission completion."
+ },
+ "order": {
+ "type": "integer",
+ "description": "The order of the submitter in the workflow (e.g., 0 for the first signer, 1 for the second, etc.). Use the same order number to create order groups. By default, submitters are ordered as in the submitters array."
+ },
+ "require_phone_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require phone 2FA verification via a one-time code sent to the phone number in order to access the documents.",
+ "default": false
+ },
+ "require_email_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require email 2FA verification via a one-time code sent to the email address in order to access the documents.",
+ "default": false
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject for the submitter."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body for the submitter. Can include the following variables: {{template.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "fields": {
+ "type": "array",
+ "description": "A list of configurations for template document form fields.",
+ "items": {
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document template field name.",
+ "example": "First Name"
+ },
+ "default_value": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ }
+ ]
+ }
+ }
+ ],
+ "description": "Default value of the field. Use base64 encoded file or a public URL to the image file to set default signature or image fields.",
+ "example": "Acme"
+ },
+ "readonly": {
+ "type": "boolean",
+ "description": "Set `true` to make it impossible for the submitter to edit predefined field value.",
+ "default": false
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Set `true` to make the field required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "roles": {
+ "type": "array",
+ "description": "A list of roles for the submitter. Use this param to merge multiple roles into one submitter.",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Create a submission from PDF
+
+The API endpoint provides the functionality to create one-off submission request from a PDF. Use {{Field Name;role=Signer1;type=date}} text tags to define fillable fields in the document. See https://www.wabosign.com/examples/fieldtags.pdf for more text tag formats. Or specify the exact pixel coordinates of the document fields using `fields` param. Related Guides Use embedded text field tags to create a fillable form
+
+
+```php
+$wabosign = new \Wabosign\Api('API_KEY', 'https://api.wabosign.com');
+
+$wabosign->createSubmissionFromPdf([
+ 'name' => 'Test Submission Document',
+ 'documents' => [
+ [
+ 'name' => 'string',
+ 'file' => 'base64',
+ 'fields' => [
+ [
+ 'name' => 'string',
+ 'areas' => [
+ [
+ 'x' => 0,
+ 'y' => 0,
+ 'w' => 0,
+ 'h' => 0,
+ 'page' => 1
+ ]
+ ]
+ ]
+ ]
+ ]
+ ],
+ 'submitters' => [
+ [
+ 'role' => 'First Party',
+ 'email' => 'john.doe@example.com'
+ ]
+ ]
+]);
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Create a submission from PDF",
+ "operationId": "createSubmissionFromPdf",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "documents",
+ "submitters"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document submission.",
+ "example": "Test Submission Document"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "order": {
+ "type": "string",
+ "description": "Pass 'random' to send signature request emails to all parties right away. The order is 'preserved' by default so the second party will receive a signature request email only after the document is signed by the first party.",
+ "default": "preserved",
+ "enum": [
+ "preserved",
+ "random"
+ ]
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Specify URL to redirect to after the submission completion."
+ },
+ "bcc_completed": {
+ "type": "string",
+ "description": "Specify BCC address to send signed documents to after the completion."
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails."
+ },
+ "expire_at": {
+ "type": "string",
+ "description": "Specify the expiration date and time after which the submission becomes unavailable for signature.",
+ "example": "2024-09-01 12:00:00 UTC"
+ },
+ "template_ids": {
+ "type": "array",
+ "description": "An optional array of template IDs to use in the submission along with the provided documents. This can be used to create multi-document submissions when some of the required documents exist within templates.",
+ "items": {
+ "type": "integer",
+ "description": "The ID of the template to use for the submission."
+ }
+ },
+ "documents": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "name",
+ "file"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document."
+ },
+ "file": {
+ "example": "base64",
+ "type": "string",
+ "format": "base64",
+ "description": "Base64-encoded content of the PDF file or downloadable file URL."
+ },
+ "fields": {
+ "type": "array",
+ "description": "Fields are optional if you use {{...}} text tags to define fields in the document.",
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the field."
+ },
+ "type": {
+ "type": "string",
+ "description": "Type of the field (e.g., text, signature, date, initials).",
+ "enum": [
+ "heading",
+ "text",
+ "signature",
+ "initials",
+ "date",
+ "number",
+ "image",
+ "checkbox",
+ "multiple",
+ "file",
+ "radio",
+ "select",
+ "cells",
+ "stamp",
+ "payment",
+ "phone",
+ "verification",
+ "strikethrough"
+ ]
+ },
+ "role": {
+ "type": "string",
+ "description": "Role name of the signer."
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Indicates if the field is required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "areas": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "x",
+ "y",
+ "w",
+ "h",
+ "page"
+ ],
+ "properties": {
+ "x": {
+ "type": "number",
+ "description": "X-coordinate of the field area."
+ },
+ "y": {
+ "type": "number",
+ "description": "Y-coordinate of the field area."
+ },
+ "w": {
+ "type": "number",
+ "description": "Width of the field area."
+ },
+ "h": {
+ "type": "number",
+ "description": "Height of the field area."
+ },
+ "page": {
+ "type": "integer",
+ "description": "Page number of the field area. Starts from 1.",
+ "example": 1
+ },
+ "option": {
+ "type": "string",
+ "description": "Option string value for 'radio' and 'multiple' select field types."
+ }
+ }
+ }
+ },
+ "options": {
+ "type": "array",
+ "description": "An array of option values for 'select' field type.",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "Option A",
+ "Option B"
+ ]
+ }
+ }
+ }
+ },
+ "position": {
+ "type": "integer",
+ "description": "Document position in the submission. If not specified, the document will be added in the order it appears in the documents array."
+ }
+ }
+ }
+ },
+ "submitters": {
+ "type": "array",
+ "description": "The list of submitters for the submission.",
+ "items": {
+ "type": "object",
+ "required": [
+ "email"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the submitter."
+ },
+ "role": {
+ "type": "string",
+ "description": "The role name or title of the submitter.",
+ "example": "First Party"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the submitter.",
+ "format": "email",
+ "example": "john.doe@example.com"
+ },
+ "phone": {
+ "type": "string",
+ "description": "The phone number of the submitter, formatted according to the E.164 standard.",
+ "example": "+1234567890"
+ },
+ "values": {
+ "type": "object",
+ "description": "An object with pre-filled values for the submission. Use field names for keys of the object. For more configurations see `fields` param."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this submitter within your app."
+ },
+ "completed": {
+ "type": "boolean",
+ "description": "Pass `true` to mark submitter as completed and auto-signed via API."
+ },
+ "metadata": {
+ "type": "object",
+ "description": "Metadata object with additional submitter information.",
+ "example": "{ \"customField\": \"value\" }"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending only for this submitter.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails for this submitter."
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Submitter specific URL to redirect to after the submission completion."
+ },
+ "order": {
+ "type": "integer",
+ "description": "The order of the submitter in the workflow (e.g., 0 for the first signer, 1 for the second, etc.). Use the same order number to create order groups. By default, submitters are ordered as in the submitters array."
+ },
+ "require_phone_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require phone 2FA verification via a one-time code sent to the phone number in order to access the documents.",
+ "default": false
+ },
+ "require_email_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require email 2FA verification via a one-time code sent to the email address in order to access the documents.",
+ "default": false
+ },
+ "invite_by": {
+ "type": "string",
+ "description": "Set the role name of the previous party that should invite this party via email."
+ },
+ "fields": {
+ "type": "array",
+ "description": "A list of configurations for document form fields.",
+ "items": {
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document field name.",
+ "example": "First Name"
+ },
+ "default_value": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ }
+ ]
+ }
+ }
+ ],
+ "description": "Default value of the field. Use base64 encoded file or a public URL to the image file to set default signature or image fields.",
+ "example": "Acme"
+ },
+ "readonly": {
+ "type": "boolean",
+ "description": "Set `true` to make it impossible for the submitter to edit predefined field value.",
+ "default": false
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Set `true` to make the field required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "roles": {
+ "type": "array",
+ "description": "A list of roles for the submitter. Use this param to merge multiple roles into one submitter.",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body. Can include the following variables: {{submission.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "flatten": {
+ "type": "boolean",
+ "description": "Remove PDF form fields from the documents.",
+ "default": false
+ },
+ "merge_documents": {
+ "type": "boolean",
+ "description": "Set `true` to merge the documents into a single PDF file.",
+ "default": false
+ },
+ "remove_tags": {
+ "type": "boolean",
+ "description": "Pass `false` to disable the removal of {{text}} tags from the PDF. This can be used along with transparent text tags for faster and more robust PDF processing.",
+ "default": true
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Create a submission from DOCX
+
+The API endpoint provides functionality to create a one-off submission request from a DOCX file with dynamic content variables. Use [[variable_name]] text tags to define dynamic content variables in the document. See https://www.wabosign.com/examples/demo_template.docx for the specific text variable syntax, including dynamic content tables and list. You can also use the {{signature}} field syntax to define fillable fields, as in a PDF. Related Guides Use dynamic content variables in DOCX to create personalized documents
+
+```php
+$wabosign = new \Wabosign\Api('API_KEY', 'https://api.wabosign.com');
+
+$wabosign->createSubmissionFromDocx([
+ 'name' => 'Test Submission Document',
+ 'variables' => [
+ 'variable_name' => 'value'
+ ],
+ 'documents' => [
+ [
+ 'name' => 'string',
+ 'file' => 'base64'
+ ]
+ ],
+ 'submitters' => [
+ [
+ 'role' => 'First Party',
+ 'email' => 'john.doe@example.com'
+ ]
+ ]
+]);
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Create a submission from DOCX",
+ "operationId": "createSubmissionFromDocx",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "documents",
+ "submitters"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document submission.",
+ "example": "Test Submission Document"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "variables": {
+ "type": "object",
+ "description": "Dynamic content variables object. Variable values can be strings, numbers, arrays, objects, or HTML content used to generate styled text, paragraphs, and tables in DOCX.",
+ "example": {
+ "variable_name": "value"
+ }
+ },
+ "order": {
+ "type": "string",
+ "description": "Pass 'random' to send signature request emails to all parties right away. The order is 'preserved' by default so the second party will receive a signature request email only after the document is signed by the first party.",
+ "default": "preserved",
+ "enum": [
+ "preserved",
+ "random"
+ ]
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Specify URL to redirect to after the submission completion."
+ },
+ "bcc_completed": {
+ "type": "string",
+ "description": "Specify BCC address to send signed documents to after the completion."
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails."
+ },
+ "expire_at": {
+ "type": "string",
+ "description": "Specify the expiration date and time after which the submission becomes unavailable for signature.",
+ "example": "2024-09-01 12:00:00 UTC"
+ },
+ "template_ids": {
+ "type": "array",
+ "description": "An optional array of template IDs to use in the submission along with the provided documents. This can be used to create multi-document submissions when some of the required documents exist within templates.",
+ "items": {
+ "type": "integer",
+ "description": "The ID of the template to use for the submission."
+ }
+ },
+ "documents": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "name",
+ "file"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document."
+ },
+ "file": {
+ "example": "base64",
+ "type": "string",
+ "format": "base64",
+ "description": "Base64-encoded content of the PDF or DOCX file or downloadable file URL."
+ },
+ "position": {
+ "type": "integer",
+ "description": "Document position in the submission. If not specified, the document will be added in the order it appears in the documents array."
+ }
+ }
+ }
+ },
+ "submitters": {
+ "type": "array",
+ "description": "The list of submitters for the submission.",
+ "items": {
+ "type": "object",
+ "required": [
+ "email"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the submitter."
+ },
+ "role": {
+ "type": "string",
+ "description": "The role name or title of the submitter.",
+ "example": "First Party"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the submitter.",
+ "format": "email",
+ "example": "john.doe@example.com"
+ },
+ "phone": {
+ "type": "string",
+ "description": "The phone number of the submitter, formatted according to the E.164 standard.",
+ "example": "+1234567890"
+ },
+ "values": {
+ "type": "object",
+ "description": "An object with pre-filled values for the submission. Use field names for keys of the object. For more configurations see `fields` param."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this submitter within your app."
+ },
+ "completed": {
+ "type": "boolean",
+ "description": "Pass `true` to mark submitter as completed and auto-signed via API."
+ },
+ "metadata": {
+ "type": "object",
+ "description": "Metadata object with additional submitter information.",
+ "example": "{ \"customField\": \"value\" }"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending only for this submitter.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails for this submitter."
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Submitter specific URL to redirect to after the submission completion."
+ },
+ "order": {
+ "type": "integer",
+ "description": "The order of the submitter in the workflow (e.g., 0 for the first signer, 1 for the second, etc.). Use the same order number to create order groups. By default, submitters are ordered as in the submitters array."
+ },
+ "require_phone_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require phone 2FA verification via a one-time code sent to the phone number in order to access the documents.",
+ "default": false
+ },
+ "require_email_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require email 2FA verification via a one-time code sent to the email address in order to access the documents.",
+ "default": false
+ },
+ "invite_by": {
+ "type": "string",
+ "description": "Set the role name of the previous party that should invite this party via email."
+ },
+ "fields": {
+ "type": "array",
+ "description": "A list of configurations for document form fields.",
+ "items": {
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document field name.",
+ "example": "First Name"
+ },
+ "default_value": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ }
+ ]
+ }
+ }
+ ],
+ "description": "Default value of the field. Use base64 encoded file or a public URL to the image file to set default signature or image fields.",
+ "example": "Acme"
+ },
+ "readonly": {
+ "type": "boolean",
+ "description": "Set `true` to make it impossible for the submitter to edit predefined field value.",
+ "default": false
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Set `true` to make the field required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "roles": {
+ "type": "array",
+ "description": "A list of roles for the submitter. Use this param to merge multiple roles into one submitter.",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body. Can include the following variables: {{submission.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "merge_documents": {
+ "type": "boolean",
+ "description": "Set `true` to merge the documents into a single PDF file.",
+ "default": false
+ },
+ "remove_tags": {
+ "type": "boolean",
+ "description": "Pass `false` to disable the removal of {{text}} tags from the PDF. This can be used along with transparent text tags for faster and more robust PDF processing.",
+ "default": true
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Create a submission from HTML
+
+This API endpoint allows you to create a one-off submission request document using the provided HTML content, with special field tags rendered as a fillable and signable form. Related Guides Create PDF document fillable form with HTML
+
+```php
+$wabosign = new \Wabosign\Api('API_KEY', 'https://api.wabosign.com');
+
+$wabosign->createSubmissionFromHtml([
+ 'name' => 'Test Submission Document',
+ 'documents' => [
+ [
+ 'name' => 'Test Document',
+ 'html' => '
Lorem Ipsum is simply dummy text of the
+
+
+and typesetting industry
+'
+ ]
+ ],
+ 'submitters' => [
+ [
+ 'role' => 'First Party',
+ 'email' => 'john.doe@example.com'
+ ]
+ ]
+]);
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Create a submission from HTML",
+ "operationId": "createSubmissionFromHtml",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "documents",
+ "submitters"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document submission",
+ "example": "Test Submission Document"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "order": {
+ "type": "string",
+ "description": "Pass 'random' to send signature request emails to all parties right away. The order is 'preserved' by default so the second party will receive a signature request email only after the document is signed by the first party.",
+ "default": "preserved",
+ "enum": [
+ "preserved",
+ "random"
+ ]
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Specify URL to redirect to after the submission completion."
+ },
+ "bcc_completed": {
+ "type": "string",
+ "description": "Specify BCC address to send signed documents to after the completion."
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails."
+ },
+ "expire_at": {
+ "type": "string",
+ "description": "Specify the expiration date and time after which the submission becomes unavailable for signature.",
+ "example": "2024-09-01 12:00:00 UTC"
+ },
+ "template_ids": {
+ "type": "array",
+ "description": "An optional array of template IDs to use in the submission along with the provided documents. This can be used to create multi-document submissions when some of the required documents exist within templates.",
+ "items": {
+ "type": "integer",
+ "description": "The ID of the template to use for the submission."
+ }
+ },
+ "documents": {
+ "type": "array",
+ "description": "The list of documents built from HTML. Can be used to create a submission with multiple documents.",
+ "items": {
+ "type": "object",
+ "required": [
+ "html"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document name. Random uuid will be assigned when not specified.",
+ "example": "Test Document"
+ },
+ "html": {
+ "type": "string",
+ "description": "HTML document content with field tags.",
+ "example": "
Lorem Ipsum is simply dummy text of the\n\n\nand typesetting industry
\n"
+ },
+ "html_header": {
+ "type": "string",
+ "description": "HTML document content of the header to be displayed on every page."
+ },
+ "html_footer": {
+ "type": "string",
+ "description": "HTML document content of the footer to be displayed on every page."
+ },
+ "size": {
+ "type": "string",
+ "default": "Letter",
+ "description": "Page size. Letter 8.5 x 11 will be assigned when not specified.",
+ "enum": [
+ "Letter",
+ "Legal",
+ "Tabloid",
+ "Ledger",
+ "A0",
+ "A1",
+ "A2",
+ "A3",
+ "A4",
+ "A5",
+ "A6"
+ ],
+ "example": "A4"
+ },
+ "position": {
+ "type": "integer",
+ "description": "Document position in the submission. If not specified, the document will be added in the order it appears in the documents array."
+ }
+ }
+ }
+ },
+ "submitters": {
+ "type": "array",
+ "description": "The list of submitters for the submission.",
+ "items": {
+ "type": "object",
+ "required": [
+ "email"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the submitter."
+ },
+ "role": {
+ "type": "string",
+ "description": "The role name or title of the submitter.",
+ "example": "First Party"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the submitter.",
+ "format": "email",
+ "example": "john.doe@example.com"
+ },
+ "phone": {
+ "type": "string",
+ "description": "The phone number of the submitter, formatted according to the E.164 standard.",
+ "example": "+1234567890"
+ },
+ "values": {
+ "type": "object",
+ "description": "An object with pre-filled values for the submission. Use field names for keys of the object. For more configurations see `fields` param."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this submitter within your app."
+ },
+ "completed": {
+ "type": "boolean",
+ "description": "Pass `true` to mark submitter as completed and auto-signed via API."
+ },
+ "metadata": {
+ "type": "object",
+ "description": "Metadata object with additional submitter information.",
+ "example": "{ \"customField\": \"value\" }"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending only for this submitter.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails for this submitter."
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Submitter specific URL to redirect to after the submission completion."
+ },
+ "order": {
+ "type": "integer",
+ "description": "The order of the submitter in the workflow (e.g., 0 for the first signer, 1 for the second, etc.). Use the same order number to create order groups. By default, submitters are ordered as in the submitters array."
+ },
+ "require_phone_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require phone 2FA verification via a one-time code sent to the phone number in order to access the documents.",
+ "default": false
+ },
+ "require_email_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require email 2FA verification via a one-time code sent to the email address in order to access the documents.",
+ "default": false
+ },
+ "invite_by": {
+ "type": "string",
+ "description": "Set the role name of the previous party that should invite this party via email."
+ },
+ "fields": {
+ "type": "array",
+ "description": "A list of configurations for document form fields.",
+ "items": {
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document field name.",
+ "example": "First Name"
+ },
+ "default_value": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ }
+ ]
+ }
+ }
+ ],
+ "description": "Default value of the field. Use base64 encoded file or a public URL to the image file to set default signature or image fields.",
+ "example": "Acme"
+ },
+ "readonly": {
+ "type": "boolean",
+ "description": "Set `true` to make it impossible for the submitter to edit predefined field value.",
+ "default": false
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Set `true` to make the field required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "roles": {
+ "type": "array",
+ "description": "A list of roles for the submitter. Use this param to merge multiple roles into one submitter.",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body. Can include the following variables: {{submission.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "merge_documents": {
+ "type": "boolean",
+ "description": "Set `true` to merge the documents into a single PDF file.",
+ "default": false
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Archive a submission
+
+The API endpoint allows you to archive a submission.
+
+```php
+$wabosign = new \Wabosign\Api('API_KEY', 'https://api.wabosign.com');
+
+$wabosign->archiveSubmission(1001);
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Archive a submission",
+ "operationId": "archiveSubmission",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submission.",
+ "example": 1001
+ }
+ ]
+}
+```
+
+### List all submitters
+
+The API endpoint provides the ability to retrieve a list of submitters.
+
+```php
+$wabosign = new \Wabosign\Api('API_KEY', 'https://api.wabosign.com');
+
+$wabosign->listSubmitters(['limit' => 10]);
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submitters"
+ ],
+ "summary": "List all submitters",
+ "operationId": "getSubmitters",
+ "parameters": [
+ {
+ "name": "submission_id",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The submission ID allows you to receive only the submitters related to that specific submission."
+ },
+ {
+ "name": "q",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter submitters on name, email or phone partial match."
+ },
+ {
+ "name": "slug",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter submitters by unique slug.",
+ "example": "zAyL9fH36Havvm"
+ },
+ {
+ "name": "completed_after",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "example": "2024-03-05 9:32:20",
+ "description": "The date and time string value to filter submitters that completed the submission after the specified date and time."
+ },
+ {
+ "name": "completed_before",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "example": "2024-03-06 19:32:20",
+ "description": "The date and time string value to filter submitters that completed the submission before the specified date and time."
+ },
+ {
+ "name": "external_id",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "The unique applications-specific identifier provided for a submitter when initializing a signature request. It allows you to receive only submitters with a specified external id."
+ },
+ {
+ "name": "limit",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The number of submitters to return. Default value is 10. Maximum value is 100."
+ },
+ {
+ "name": "after",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submitter to start the list from. It allows you to receive only submitters with id greater than the specified value. Pass ID value from the `pagination.next` response to load the next batch of submitters."
+ },
+ {
+ "name": "before",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submitter to end the list with. It allows you to receive only submitters with id less than the specified value."
+ }
+ ]
+}
+```
+
+### Get a submitter
+
+The API endpoint provides functionality to retrieve information about a submitter, along with the submitter documents and field values.
+
+```php
+$wabosign = new \Wabosign\Api('API_KEY', 'https://api.wabosign.com');
+
+$wabosign->getSubmitter(500001);
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submitters"
+ ],
+ "summary": "Get a submitter",
+ "operationId": "getSubmitter",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submitter.",
+ "example": 500001
+ }
+ ]
+}
+```
+
+### Update a submitter
+
+The API endpoint allows you to update submitter details, pre-fill or update field values and re-send emails. Related Guides Automatically sign documents via API
+
+```php
+$wabosign = new \Wabosign\Api('API_KEY', 'https://api.wabosign.com');
+
+$wabosign->updateSubmitter(500001, [
+ 'email' => 'john.doe@example.com',
+ 'fields' => [
+ [
+ 'name' => 'First Name',
+ 'default_value' => 'Acme'
+ ]
+ ]
+]);
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submitters"
+ ],
+ "summary": "Update a submitter",
+ "operationId": "updateSubmitter",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submitter.",
+ "example": 500001
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the submitter."
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the submitter.",
+ "format": "email",
+ "example": "john.doe@example.com"
+ },
+ "phone": {
+ "type": "string",
+ "description": "The phone number of the submitter, formatted according to the E.164 standard.",
+ "example": "+1234567890"
+ },
+ "values": {
+ "type": "object",
+ "description": "An object with pre-filled values for the submission. Use field names for keys of the object. For more configurations see `fields` param."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this submitter within your app."
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `true` to re-send signature request emails."
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to re-send signature request via phone number SMS.",
+ "default": false
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails."
+ },
+ "completed": {
+ "type": "boolean",
+ "description": "Pass `true` to mark submitter as completed and auto-signed via API."
+ },
+ "metadata": {
+ "type": "object",
+ "description": "Metadata object with additional submitter information.",
+ "example": "{ \"customField\": \"value\" }"
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Submitter specific URL to redirect to after the submission completion."
+ },
+ "require_phone_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require phone 2FA verification via a one-time code sent to the phone number in order to access the documents.",
+ "default": false
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body. Can include the following variables: {{template.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "fields": {
+ "type": "array",
+ "description": "A list of configurations for template document form fields.",
+ "items": {
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document template field name.",
+ "example": "First Name"
+ },
+ "default_value": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ }
+ ]
+ }
+ }
+ ],
+ "description": "Default value of the field. Use base64 encoded file or a public URL to the image file to set default signature or image fields.",
+ "example": "Acme"
+ },
+ "readonly": {
+ "type": "boolean",
+ "description": "Set `true` to make it impossible for the submitter to edit predefined field value.",
+ "default": false
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Set `true` to make the field required."
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### List all templates
+
+The API endpoint provides the ability to retrieve a list of available document templates.
+
+```php
+$wabosign = new \Wabosign\Api('API_KEY', 'https://api.wabosign.com');
+
+$wabosign->listTemplates(['limit' => 10]);
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "List all templates",
+ "operationId": "getTemplates",
+ "parameters": [
+ {
+ "name": "q",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter templates based on the name partial match."
+ },
+ {
+ "name": "slug",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter templates by unique slug.",
+ "example": "opaKWh8WWTAcVG"
+ },
+ {
+ "name": "external_id",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "The unique applications-specific identifier provided for the template via API or Embedded template form builder. It allows you to receive only templates with your specified external id."
+ },
+ {
+ "name": "folder",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter templates by folder name."
+ },
+ {
+ "name": "archived",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "boolean"
+ },
+ "description": "Get only archived templates instead of active ones."
+ },
+ {
+ "name": "limit",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The number of templates to return. Default value is 10. Maximum value is 100."
+ },
+ {
+ "name": "after",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the template to start the list from. It allows you to receive only templates with id greater than the specified value. Pass ID value from the `pagination.next` response to load the next batch of templates."
+ },
+ {
+ "name": "before",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the template to end the list with. It allows you to receive only templates with id less than the specified value."
+ }
+ ]
+}
+```
+
+### Get a template
+
+The API endpoint provides the functionality to retrieve information about a document template.
+
+```php
+$wabosign = new \Wabosign\Api('API_KEY', 'https://api.wabosign.com');
+
+$wabosign->getTemplate(1000001);
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Get a template",
+ "operationId": "getTemplate",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the document template.",
+ "example": 1000001
+ }
+ ]
+}
+```
+
+### Create a template from PDF
+
+The API endpoint provides the functionality to create a fillable document template for a PDF file. Use {{Field Name;role=Signer1;type=date}} text tags to define fillable fields in the document. See https://www.wabosign.com/examples/fieldtags.pdf for more text tag formats. Or specify the exact pixel coordinates of the document fields using `fields` param. Related Guides Use embedded text field tags to create a fillable form
+
+
+```php
+$wabosign = new \Wabosign\Api('API_KEY', 'https://api.wabosign.com');
+
+$wabosign->createTemplateFromPdf([
+ 'name' => 'Test PDF',
+ 'documents' => [
+ [
+ 'name' => 'string',
+ 'file' => 'base64',
+ 'fields' => [
+ [
+ 'name' => 'string',
+ 'areas' => [
+ [
+ 'x' => 0,
+ 'y' => 0,
+ 'w' => 0,
+ 'h' => 0,
+ 'page' => 1
+ ]
+ ]
+ ]
+ ]
+ ]
+ ]
+]);
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Create a template from PDF",
+ "operationId": "createTemplateFromPdf",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "documents"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the template",
+ "example": "Test PDF"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The folder's name to which the template should be created."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this template within your app. Existing template with specified `external_id` will be updated with a new PDF.",
+ "example": "unique-key"
+ },
+ "shared_link": {
+ "type": "boolean",
+ "description": "set to `true` to make the template available via a shared link. This will allow anyone with the link to create a submission from this template.",
+ "default": true
+ },
+ "documents": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "name",
+ "file"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document."
+ },
+ "file": {
+ "example": "base64",
+ "type": "string",
+ "format": "base64",
+ "description": "Base64-encoded content of the PDF file or downloadable file URL."
+ },
+ "fields": {
+ "type": "array",
+ "description": "Fields are optional if you use {{...}} text tags to define fields in the document.",
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the field."
+ },
+ "type": {
+ "type": "string",
+ "description": "Type of the field (e.g., text, signature, date, initials).",
+ "enum": [
+ "heading",
+ "text",
+ "signature",
+ "initials",
+ "date",
+ "number",
+ "image",
+ "checkbox",
+ "multiple",
+ "file",
+ "radio",
+ "select",
+ "cells",
+ "stamp",
+ "payment",
+ "phone",
+ "verification",
+ "strikethrough"
+ ]
+ },
+ "role": {
+ "type": "string",
+ "description": "Role name of the signer."
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Indicates if the field is required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "areas": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "x",
+ "y",
+ "w",
+ "h",
+ "page"
+ ],
+ "properties": {
+ "x": {
+ "type": "number",
+ "description": "X-coordinate of the field area."
+ },
+ "y": {
+ "type": "number",
+ "description": "Y-coordinate of the field area."
+ },
+ "w": {
+ "type": "number",
+ "description": "Width of the field area."
+ },
+ "h": {
+ "type": "number",
+ "description": "Height of the field area."
+ },
+ "page": {
+ "type": "integer",
+ "description": "Page number of the field area. Starts from 1.",
+ "example": 1
+ },
+ "option": {
+ "type": "string",
+ "description": "Option string value for 'radio' and 'multiple' select field types."
+ }
+ }
+ }
+ },
+ "options": {
+ "type": "array",
+ "description": "An array of option values for 'select' field type.",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "Option A",
+ "Option B"
+ ]
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "flatten": {
+ "type": "boolean",
+ "description": "Remove PDF form fields from the documents.",
+ "default": false
+ },
+ "remove_tags": {
+ "type": "boolean",
+ "description": "Pass `false` to disable the removal of {{text}} tags from the PDF. This can be used along with transparent text tags for faster and more robust PDF processing.",
+ "default": true
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Create a template from Word DOCX
+
+The API endpoint provides the functionality to create a fillable document template for existing Microsoft Word document. Use {{Field Name;role=Signer1;type=date}} text tags to define fillable fields in the document. See https://www.wabosign.com/examples/fieldtags.docx for more text tag formats. Or specify the exact pixel coordinates of the document fields using `fields` param. Related Guides Use embedded text field tags to create a fillable form
+
+
+```php
+$wabosign = new \Wabosign\Api('API_KEY', 'https://api.wabosign.com');
+
+$wabosign->createTemplateFromDocx([
+ 'name' => 'Test DOCX',
+ 'documents' => [
+ [
+ 'name' => 'string',
+ 'file' => 'base64'
+ ]
+ ]
+]);
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Create a template from Word DOCX",
+ "operationId": "createTemplateFromDocx",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "documents"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the template",
+ "example": "Test DOCX"
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this template within your app. Existing template with specified `external_id` will be updated with a new document.",
+ "example": "unique-key"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The folder's name to which the template should be created."
+ },
+ "shared_link": {
+ "type": "boolean",
+ "description": "set to `true` to make the template available via a shared link. This will allow anyone with the link to create a submission from this template.",
+ "default": true
+ },
+ "documents": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "name",
+ "file"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document."
+ },
+ "file": {
+ "type": "string",
+ "example": "base64",
+ "format": "base64",
+ "description": "Base64-encoded content of the DOCX file or downloadable file URL"
+ },
+ "fields": {
+ "description": "Fields are optional if you use {{...}} text tags to define fields in the document.",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the field."
+ },
+ "type": {
+ "type": "string",
+ "description": "Type of the field (e.g., text, signature, date, initials).",
+ "enum": [
+ "heading",
+ "text",
+ "signature",
+ "initials",
+ "date",
+ "number",
+ "image",
+ "checkbox",
+ "multiple",
+ "file",
+ "radio",
+ "select",
+ "cells",
+ "stamp",
+ "payment",
+ "phone",
+ "verification",
+ "strikethrough"
+ ]
+ },
+ "role": {
+ "type": "string",
+ "description": "Role name of the signer."
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Indicates if the field is required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "areas": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "x": {
+ "type": "number",
+ "description": "X-coordinate of the field area."
+ },
+ "y": {
+ "type": "number",
+ "description": "Y-coordinate of the field area."
+ },
+ "w": {
+ "type": "number",
+ "description": "Width of the field area."
+ },
+ "h": {
+ "type": "number",
+ "description": "Height of the field area."
+ },
+ "page": {
+ "type": "integer",
+ "description": "Page number of the field area. Starts from 1."
+ },
+ "option": {
+ "type": "string",
+ "description": "Option string value for 'radio' and 'multiple' select field types."
+ }
+ }
+ }
+ },
+ "options": {
+ "type": "array",
+ "description": "An array of option values for 'select' field type.",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "Option A",
+ "Option B"
+ ]
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Create a template from HTML
+
+The API endpoint provides the functionality to seamlessly generate a PDF document template by utilizing the provided HTML content while incorporating pre-defined fields. Related Guides Create PDF document fillable form with HTML
+
+```php
+$wabosign = new \Wabosign\Api('API_KEY', 'https://api.wabosign.com');
+
+$wabosign->createTemplateFromHtml([
+ 'html' => '
Lorem Ipsum is simply dummy text of the
+
+
+and typesetting industry
Lorem Ipsum is simply dummy text of the\n\n\nand typesetting industry
\n"
+ },
+ "html_header": {
+ "type": "string",
+ "description": "HTML template of the header to be displayed on every page."
+ },
+ "html_footer": {
+ "type": "string",
+ "description": "HTML template of the footer to be displayed on every page."
+ },
+ "name": {
+ "type": "string",
+ "description": "Template name. Random uuid will be assigned when not specified.",
+ "example": "Test Template"
+ },
+ "size": {
+ "type": "string",
+ "default": "Letter",
+ "description": "Page size. Letter 8.5 x 11 will be assigned when not specified.",
+ "enum": [
+ "Letter",
+ "Legal",
+ "Tabloid",
+ "Ledger",
+ "A0",
+ "A1",
+ "A2",
+ "A3",
+ "A4",
+ "A5",
+ "A6"
+ ],
+ "example": "A4"
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this template within your app. Existing template with specified `external_id` will be updated with a new HTML.",
+ "example": "714d974e-83d8-11ee-b962-0242ac120002"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The folder's name to which the template should be created."
+ },
+ "shared_link": {
+ "type": "boolean",
+ "description": "set to `true` to make the template available via a shared link. This will allow anyone with the link to create a submission from this template.",
+ "default": true
+ },
+ "documents": {
+ "type": "array",
+ "description": "The list of documents built from HTML. Can be used to create a template with multiple documents. Leave `documents` param empty when using a top-level `html` param for a template with a single document.",
+ "items": {
+ "type": "object",
+ "required": [
+ "html"
+ ],
+ "properties": {
+ "html": {
+ "type": "string",
+ "description": "HTML template with field tags.",
+ "example": "
Lorem Ipsum is simply dummy text of the\n\n\nand typesetting industry
\n"
+ },
+ "name": {
+ "type": "string",
+ "description": "Document name. Random uuid will be assigned when not specified.",
+ "example": "Test Document"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Clone a template
+
+The API endpoint allows you to clone existing template into a new template.
+
+```php
+$wabosign = new \Wabosign\Api('API_KEY', 'https://api.wabosign.com');
+
+$wabosign->cloneTemplate(1000001, [
+ 'name' => 'Cloned Template'
+]);
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Clone a template",
+ "operationId": "cloneTemplate",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the documents template.",
+ "example": 1000001
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Template name. Existing name with (Clone) suffix will be used if not specified.",
+ "example": "Cloned Template"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The folder's name to which the template should be cloned."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this template within your app."
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Merge templates
+
+The API endpoint allows you to merge multiple templates with documents and fields into a new combined template.
+
+```php
+$wabosign = new \Wabosign\Api('API_KEY', 'https://api.wabosign.com');
+
+$wabosign->mergeTemplates([
+ 'template_ids' => [
+ 321,
+ 432
+ ],
+ 'name' => 'Merged Template'
+]);
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Merge templates",
+ "operationId": "mergeTemplate",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "template_ids"
+ ],
+ "properties": {
+ "template_ids": {
+ "type": "array",
+ "description": "An array of template ids to merge into a new template.",
+ "items": {
+ "type": "integer"
+ },
+ "example": [
+ 321,
+ 432
+ ]
+ },
+ "name": {
+ "type": "string",
+ "description": "Template name. Existing name with (Merged) suffix will be used if not specified.",
+ "example": "Merged Template"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The name of the folder in which the merged template should be placed."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this template within your app."
+ },
+ "shared_link": {
+ "type": "boolean",
+ "description": "set to `true` to make the template available via a shared link. This will allow anyone with the link to create a submission from this template.",
+ "default": true
+ },
+ "roles": {
+ "type": "array",
+ "description": "An array of submitter role names to be used in the merged template.",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "Agent",
+ "Customer"
+ ]
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Update a template
+
+The API endpoint provides the functionality to move a document template to a different folder and update the name of the template.
+
+```php
+$wabosign = new \Wabosign\Api('API_KEY', 'https://api.wabosign.com');
+
+$wabosign->updateTemplate(1000001, [
+ 'name' => 'New Document Name',
+ 'folder_name' => 'New Folder'
+]);
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Update a template",
+ "operationId": "updateTemplate",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the document template.",
+ "example": 1000001
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the template",
+ "example": "New Document Name"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The folder's name to which the template should be moved.",
+ "example": "New Folder"
+ },
+ "roles": {
+ "type": "array",
+ "description": "An array of submitter role names to update the template with.",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "Agent",
+ "Customer"
+ ]
+ },
+ "archived": {
+ "type": "boolean",
+ "description": "Set `false` to unarchive template."
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Update template documents
+
+The API endpoint allows you to add, remove or replace documents in the template with provided PDF/DOCX file or HTML content.
+
+```php
+$wabosign = new \Wabosign\Api('API_KEY', 'https://api.wabosign.com');
+
+$wabosign->updateTemplateDocuments(1000001, [
+ 'documents' => [
+ [
+ 'file' => 'string'
+ ]
+ ]
+]);
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Update template documents",
+ "operationId": "addDocumentToTemplate",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the documents template.",
+ "example": 1000001
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "documents": {
+ "type": "array",
+ "description": "The list of documents to add or replace in the template.",
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document name. Random uuid will be assigned when not specified.",
+ "example": "Test Template"
+ },
+ "file": {
+ "type": "string",
+ "format": "base64",
+ "description": "Base64-encoded content of the PDF or DOCX file or downloadable file URL. Leave it empty if you create a new document using HTML param."
+ },
+ "html": {
+ "type": "string",
+ "description": "HTML template with field tags. Leave it empty if you add a document via PDF or DOCX base64 encoded file param or URL."
+ },
+ "position": {
+ "type": "integer",
+ "description": "Position of the document. By default will be added as the last document in the template.",
+ "example": 0
+ },
+ "replace": {
+ "type": "boolean",
+ "default": false,
+ "description": "Set to `true` to replace existing document with a new file at `position`. Existing document fields will be transferred to the new document if it doesn't contain any fields."
+ },
+ "remove": {
+ "type": "boolean",
+ "default": false,
+ "description": "Set to `true` to remove existing document at given `position` or with given `name`."
+ }
+ }
+ }
+ },
+ "merge": {
+ "type": "boolean",
+ "default": false,
+ "description": "Set to `true` to merge all existing and new documents into a single PDF document in the template."
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Archive a template
+
+The API endpoint allows you to archive a document template.
+
+```php
+$wabosign = new \Wabosign\Api('API_KEY', 'https://api.wabosign.com');
+
+$wabosign->archiveTemplate(1000001);
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Archive a template",
+ "operationId": "archiveTemplate",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the document template.",
+ "example": 1000001
+ }
+ ]
+}
+```
+
diff --git a/docs/api/python.md b/docs/api/python.md
new file mode 100644
index 00000000..2d26f10e
--- /dev/null
+++ b/docs/api/python.md
@@ -0,0 +1,4055 @@
+### List all submissions
+
+The API endpoint provides the ability to retrieve a list of available submissions.
+
+```python
+from wabosign import wabosign
+
+wabosign.key = "API_KEY"
+wabosign.url = "https://api.wabosign.com"
+
+wabosign.list_submissions({ "limit": 10 })
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "List all submissions",
+ "operationId": "getSubmissions",
+ "parameters": [
+ {
+ "name": "template_id",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The template ID allows you to receive only the submissions created from that specific template."
+ },
+ {
+ "name": "status",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string",
+ "enum": [
+ "pending",
+ "completed",
+ "declined",
+ "expired"
+ ]
+ },
+ "description": "Filter submissions by status."
+ },
+ {
+ "name": "q",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter submissions based on submitters name, email or phone partial match."
+ },
+ {
+ "name": "slug",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter submissions by unique slug.",
+ "example": "NtLDQM7eJX2ZMd"
+ },
+ {
+ "name": "template_folder",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter submissions by template folder name."
+ },
+ {
+ "name": "archived",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "boolean"
+ },
+ "description": "Returns only archived submissions when `true` and only active submissions when `false`."
+ },
+ {
+ "name": "limit",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The number of submissions to return. Default value is 10. Maximum value is 100."
+ },
+ {
+ "name": "after",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submission to start the list from. It allows you to receive only submissions with an ID greater than the specified value. Pass ID value from the `pagination.next` response to load the next batch of submissions."
+ },
+ {
+ "name": "before",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submission that marks the end of the list. It allows you to receive only submissions with an ID less than the specified value."
+ }
+ ]
+}
+```
+
+### Get a submission
+
+The API endpoint provides the functionality to retrieve information about a submission.
+
+```python
+from wabosign import wabosign
+
+wabosign.key = "API_KEY"
+wabosign.url = "https://api.wabosign.com"
+
+wabosign.get_submission(1001)
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Get a submission",
+ "operationId": "getSubmission",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submission.",
+ "example": 1001
+ }
+ ]
+}
+```
+
+### Get submission documents
+
+This endpoint returns a list of partially filled documents for a submission. If the submission has been completed, the final signed documents are returned.
+
+```python
+from wabosign import wabosign
+
+wabosign.key = "API_KEY"
+wabosign.url = "https://api.wabosign.com"
+
+wabosign.get_submission_documents(1001)
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Get submission documents",
+ "operationId": "getSubmissionDocuments",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submission.",
+ "example": 1001
+ }
+ ]
+}
+```
+
+### Create a submission
+
+This API endpoint allows you to create signature requests (submissions) for a document template and send them to the specified submitters (signers). Related Guides Send documents for signature via API Pre-fill PDF document form fields with API
+
+```python
+from wabosign import wabosign
+
+wabosign.key = "API_KEY"
+wabosign.url = "https://api.wabosign.com"
+
+wabosign.create_submission({
+ "template_id": 1000001,
+ "send_email": True,
+ "submitters": [
+ {
+ "role": "First Party",
+ "email": "john.doe@example.com"
+ }
+ ]
+})
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Create a submission",
+ "operationId": "createSubmission",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "template_id",
+ "submitters"
+ ],
+ "properties": {
+ "template_id": {
+ "type": "integer",
+ "description": "The unique identifier of the template. Document template forms can be created via the Web UI, PDF and DOCX API, or HTML API.",
+ "example": 1000001
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "order": {
+ "type": "string",
+ "description": "Pass 'random' to send signature request emails to all parties right away. The order is 'preserved' by default so the second party will receive a signature request email only after the document is signed by the first party.",
+ "default": "preserved",
+ "enum": [
+ "preserved",
+ "random"
+ ]
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Specify URL to redirect to after the submission completion."
+ },
+ "bcc_completed": {
+ "type": "string",
+ "description": "Specify BCC address to send signed documents to after the completion."
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails."
+ },
+ "expire_at": {
+ "type": "string",
+ "description": "Specify the expiration date and time after which the submission becomes unavailable for signature.",
+ "example": "2024-09-01 12:00:00 UTC"
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body. Can include the following variables: {{template.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "submitters": {
+ "type": "array",
+ "description": "The list of submitters for the submission.",
+ "items": {
+ "type": "object",
+ "required": [
+ "email"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the submitter."
+ },
+ "role": {
+ "type": "string",
+ "description": "The role name or title of the submitter.",
+ "example": "First Party"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the submitter.",
+ "format": "email",
+ "example": "john.doe@example.com"
+ },
+ "phone": {
+ "type": "string",
+ "description": "The phone number of the submitter, formatted according to the E.164 standard.",
+ "example": "+1234567890"
+ },
+ "values": {
+ "type": "object",
+ "description": "An object with pre-filled values for the submission. Use field names for keys of the object. For more configurations see `fields` param."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this submitter within your app."
+ },
+ "completed": {
+ "type": "boolean",
+ "description": "Pass `true` to mark submitter as completed and auto-signed via API."
+ },
+ "metadata": {
+ "type": "object",
+ "description": "Metadata object with additional submitter information.",
+ "example": "{ \"customField\": \"value\" }"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending only for this submitter.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails for this submitter."
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Submitter specific URL to redirect to after the submission completion."
+ },
+ "order": {
+ "type": "integer",
+ "description": "The order of the submitter in the workflow (e.g., 0 for the first signer, 1 for the second, etc.). Use the same order number to create order groups. By default, submitters are ordered as in the submitters array."
+ },
+ "require_phone_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require phone 2FA verification via a one-time code sent to the phone number in order to access the documents.",
+ "default": false
+ },
+ "require_email_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require email 2FA verification via a one-time code sent to the email address in order to access the documents.",
+ "default": false
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject for the submitter."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body for the submitter. Can include the following variables: {{template.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "fields": {
+ "type": "array",
+ "description": "A list of configurations for template document form fields.",
+ "items": {
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document template field name.",
+ "example": "First Name"
+ },
+ "default_value": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ }
+ ]
+ }
+ }
+ ],
+ "description": "Default value of the field. Use base64 encoded file or a public URL to the image file to set default signature or image fields.",
+ "example": "Acme"
+ },
+ "readonly": {
+ "type": "boolean",
+ "description": "Set `true` to make it impossible for the submitter to edit predefined field value.",
+ "default": false
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Set `true` to make the field required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "roles": {
+ "type": "array",
+ "description": "A list of roles for the submitter. Use this param to merge multiple roles into one submitter.",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Create a submission from PDF
+
+The API endpoint provides the functionality to create one-off submission request from a PDF. Use {{Field Name;role=Signer1;type=date}} text tags to define fillable fields in the document. See https://www.wabosign.com/examples/fieldtags.pdf for more text tag formats. Or specify the exact pixel coordinates of the document fields using `fields` param. Related Guides Use embedded text field tags to create a fillable form
+
+
+```python
+from wabosign import wabosign
+
+wabosign.key = "API_KEY"
+wabosign.url = "https://api.wabosign.com"
+
+wabosign.create_submission_from_pdf({
+ "name": "Test Submission Document",
+ "documents": [
+ {
+ "name": "string",
+ "file": "base64",
+ "fields": [
+ {
+ "name": "string",
+ "areas": [
+ {
+ "x": 0,
+ "y": 0,
+ "w": 0,
+ "h": 0,
+ "page": 1
+ }
+ ]
+ }
+ ]
+ }
+ ],
+ "submitters": [
+ {
+ "role": "First Party",
+ "email": "john.doe@example.com"
+ }
+ ]
+})
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Create a submission from PDF",
+ "operationId": "createSubmissionFromPdf",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "documents",
+ "submitters"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document submission.",
+ "example": "Test Submission Document"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "order": {
+ "type": "string",
+ "description": "Pass 'random' to send signature request emails to all parties right away. The order is 'preserved' by default so the second party will receive a signature request email only after the document is signed by the first party.",
+ "default": "preserved",
+ "enum": [
+ "preserved",
+ "random"
+ ]
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Specify URL to redirect to after the submission completion."
+ },
+ "bcc_completed": {
+ "type": "string",
+ "description": "Specify BCC address to send signed documents to after the completion."
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails."
+ },
+ "expire_at": {
+ "type": "string",
+ "description": "Specify the expiration date and time after which the submission becomes unavailable for signature.",
+ "example": "2024-09-01 12:00:00 UTC"
+ },
+ "template_ids": {
+ "type": "array",
+ "description": "An optional array of template IDs to use in the submission along with the provided documents. This can be used to create multi-document submissions when some of the required documents exist within templates.",
+ "items": {
+ "type": "integer",
+ "description": "The ID of the template to use for the submission."
+ }
+ },
+ "documents": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "name",
+ "file"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document."
+ },
+ "file": {
+ "example": "base64",
+ "type": "string",
+ "format": "base64",
+ "description": "Base64-encoded content of the PDF file or downloadable file URL."
+ },
+ "fields": {
+ "type": "array",
+ "description": "Fields are optional if you use {{...}} text tags to define fields in the document.",
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the field."
+ },
+ "type": {
+ "type": "string",
+ "description": "Type of the field (e.g., text, signature, date, initials).",
+ "enum": [
+ "heading",
+ "text",
+ "signature",
+ "initials",
+ "date",
+ "number",
+ "image",
+ "checkbox",
+ "multiple",
+ "file",
+ "radio",
+ "select",
+ "cells",
+ "stamp",
+ "payment",
+ "phone",
+ "verification",
+ "strikethrough"
+ ]
+ },
+ "role": {
+ "type": "string",
+ "description": "Role name of the signer."
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Indicates if the field is required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "areas": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "x",
+ "y",
+ "w",
+ "h",
+ "page"
+ ],
+ "properties": {
+ "x": {
+ "type": "number",
+ "description": "X-coordinate of the field area."
+ },
+ "y": {
+ "type": "number",
+ "description": "Y-coordinate of the field area."
+ },
+ "w": {
+ "type": "number",
+ "description": "Width of the field area."
+ },
+ "h": {
+ "type": "number",
+ "description": "Height of the field area."
+ },
+ "page": {
+ "type": "integer",
+ "description": "Page number of the field area. Starts from 1.",
+ "example": 1
+ },
+ "option": {
+ "type": "string",
+ "description": "Option string value for 'radio' and 'multiple' select field types."
+ }
+ }
+ }
+ },
+ "options": {
+ "type": "array",
+ "description": "An array of option values for 'select' field type.",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "Option A",
+ "Option B"
+ ]
+ }
+ }
+ }
+ },
+ "position": {
+ "type": "integer",
+ "description": "Document position in the submission. If not specified, the document will be added in the order it appears in the documents array."
+ }
+ }
+ }
+ },
+ "submitters": {
+ "type": "array",
+ "description": "The list of submitters for the submission.",
+ "items": {
+ "type": "object",
+ "required": [
+ "email"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the submitter."
+ },
+ "role": {
+ "type": "string",
+ "description": "The role name or title of the submitter.",
+ "example": "First Party"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the submitter.",
+ "format": "email",
+ "example": "john.doe@example.com"
+ },
+ "phone": {
+ "type": "string",
+ "description": "The phone number of the submitter, formatted according to the E.164 standard.",
+ "example": "+1234567890"
+ },
+ "values": {
+ "type": "object",
+ "description": "An object with pre-filled values for the submission. Use field names for keys of the object. For more configurations see `fields` param."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this submitter within your app."
+ },
+ "completed": {
+ "type": "boolean",
+ "description": "Pass `true` to mark submitter as completed and auto-signed via API."
+ },
+ "metadata": {
+ "type": "object",
+ "description": "Metadata object with additional submitter information.",
+ "example": "{ \"customField\": \"value\" }"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending only for this submitter.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails for this submitter."
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Submitter specific URL to redirect to after the submission completion."
+ },
+ "order": {
+ "type": "integer",
+ "description": "The order of the submitter in the workflow (e.g., 0 for the first signer, 1 for the second, etc.). Use the same order number to create order groups. By default, submitters are ordered as in the submitters array."
+ },
+ "require_phone_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require phone 2FA verification via a one-time code sent to the phone number in order to access the documents.",
+ "default": false
+ },
+ "require_email_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require email 2FA verification via a one-time code sent to the email address in order to access the documents.",
+ "default": false
+ },
+ "invite_by": {
+ "type": "string",
+ "description": "Set the role name of the previous party that should invite this party via email."
+ },
+ "fields": {
+ "type": "array",
+ "description": "A list of configurations for document form fields.",
+ "items": {
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document field name.",
+ "example": "First Name"
+ },
+ "default_value": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ }
+ ]
+ }
+ }
+ ],
+ "description": "Default value of the field. Use base64 encoded file or a public URL to the image file to set default signature or image fields.",
+ "example": "Acme"
+ },
+ "readonly": {
+ "type": "boolean",
+ "description": "Set `true` to make it impossible for the submitter to edit predefined field value.",
+ "default": false
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Set `true` to make the field required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "roles": {
+ "type": "array",
+ "description": "A list of roles for the submitter. Use this param to merge multiple roles into one submitter.",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body. Can include the following variables: {{submission.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "flatten": {
+ "type": "boolean",
+ "description": "Remove PDF form fields from the documents.",
+ "default": false
+ },
+ "merge_documents": {
+ "type": "boolean",
+ "description": "Set `true` to merge the documents into a single PDF file.",
+ "default": false
+ },
+ "remove_tags": {
+ "type": "boolean",
+ "description": "Pass `false` to disable the removal of {{text}} tags from the PDF. This can be used along with transparent text tags for faster and more robust PDF processing.",
+ "default": true
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Create a submission from DOCX
+
+The API endpoint provides functionality to create a one-off submission request from a DOCX file with dynamic content variables. Use [[variable_name]] text tags to define dynamic content variables in the document. See https://www.wabosign.com/examples/demo_template.docx for the specific text variable syntax, including dynamic content tables and list. You can also use the {{signature}} field syntax to define fillable fields, as in a PDF. Related Guides Use dynamic content variables in DOCX to create personalized documents
+
+```python
+from wabosign import wabosign
+
+wabosign.key = "API_KEY"
+wabosign.url = "https://api.wabosign.com"
+
+wabosign.create_submission_from_docx({
+ "name": "Test Submission Document",
+ "variables": {
+ "variable_name": "value"
+ },
+ "documents": [
+ {
+ "name": "string",
+ "file": "base64"
+ }
+ ],
+ "submitters": [
+ {
+ "role": "First Party",
+ "email": "john.doe@example.com"
+ }
+ ]
+})
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Create a submission from DOCX",
+ "operationId": "createSubmissionFromDocx",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "documents",
+ "submitters"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document submission.",
+ "example": "Test Submission Document"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "variables": {
+ "type": "object",
+ "description": "Dynamic content variables object. Variable values can be strings, numbers, arrays, objects, or HTML content used to generate styled text, paragraphs, and tables in DOCX.",
+ "example": {
+ "variable_name": "value"
+ }
+ },
+ "order": {
+ "type": "string",
+ "description": "Pass 'random' to send signature request emails to all parties right away. The order is 'preserved' by default so the second party will receive a signature request email only after the document is signed by the first party.",
+ "default": "preserved",
+ "enum": [
+ "preserved",
+ "random"
+ ]
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Specify URL to redirect to after the submission completion."
+ },
+ "bcc_completed": {
+ "type": "string",
+ "description": "Specify BCC address to send signed documents to after the completion."
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails."
+ },
+ "expire_at": {
+ "type": "string",
+ "description": "Specify the expiration date and time after which the submission becomes unavailable for signature.",
+ "example": "2024-09-01 12:00:00 UTC"
+ },
+ "template_ids": {
+ "type": "array",
+ "description": "An optional array of template IDs to use in the submission along with the provided documents. This can be used to create multi-document submissions when some of the required documents exist within templates.",
+ "items": {
+ "type": "integer",
+ "description": "The ID of the template to use for the submission."
+ }
+ },
+ "documents": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "name",
+ "file"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document."
+ },
+ "file": {
+ "example": "base64",
+ "type": "string",
+ "format": "base64",
+ "description": "Base64-encoded content of the PDF or DOCX file or downloadable file URL."
+ },
+ "position": {
+ "type": "integer",
+ "description": "Document position in the submission. If not specified, the document will be added in the order it appears in the documents array."
+ }
+ }
+ }
+ },
+ "submitters": {
+ "type": "array",
+ "description": "The list of submitters for the submission.",
+ "items": {
+ "type": "object",
+ "required": [
+ "email"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the submitter."
+ },
+ "role": {
+ "type": "string",
+ "description": "The role name or title of the submitter.",
+ "example": "First Party"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the submitter.",
+ "format": "email",
+ "example": "john.doe@example.com"
+ },
+ "phone": {
+ "type": "string",
+ "description": "The phone number of the submitter, formatted according to the E.164 standard.",
+ "example": "+1234567890"
+ },
+ "values": {
+ "type": "object",
+ "description": "An object with pre-filled values for the submission. Use field names for keys of the object. For more configurations see `fields` param."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this submitter within your app."
+ },
+ "completed": {
+ "type": "boolean",
+ "description": "Pass `true` to mark submitter as completed and auto-signed via API."
+ },
+ "metadata": {
+ "type": "object",
+ "description": "Metadata object with additional submitter information.",
+ "example": "{ \"customField\": \"value\" }"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending only for this submitter.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails for this submitter."
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Submitter specific URL to redirect to after the submission completion."
+ },
+ "order": {
+ "type": "integer",
+ "description": "The order of the submitter in the workflow (e.g., 0 for the first signer, 1 for the second, etc.). Use the same order number to create order groups. By default, submitters are ordered as in the submitters array."
+ },
+ "require_phone_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require phone 2FA verification via a one-time code sent to the phone number in order to access the documents.",
+ "default": false
+ },
+ "require_email_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require email 2FA verification via a one-time code sent to the email address in order to access the documents.",
+ "default": false
+ },
+ "invite_by": {
+ "type": "string",
+ "description": "Set the role name of the previous party that should invite this party via email."
+ },
+ "fields": {
+ "type": "array",
+ "description": "A list of configurations for document form fields.",
+ "items": {
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document field name.",
+ "example": "First Name"
+ },
+ "default_value": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ }
+ ]
+ }
+ }
+ ],
+ "description": "Default value of the field. Use base64 encoded file or a public URL to the image file to set default signature or image fields.",
+ "example": "Acme"
+ },
+ "readonly": {
+ "type": "boolean",
+ "description": "Set `true` to make it impossible for the submitter to edit predefined field value.",
+ "default": false
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Set `true` to make the field required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "roles": {
+ "type": "array",
+ "description": "A list of roles for the submitter. Use this param to merge multiple roles into one submitter.",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body. Can include the following variables: {{submission.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "merge_documents": {
+ "type": "boolean",
+ "description": "Set `true` to merge the documents into a single PDF file.",
+ "default": false
+ },
+ "remove_tags": {
+ "type": "boolean",
+ "description": "Pass `false` to disable the removal of {{text}} tags from the PDF. This can be used along with transparent text tags for faster and more robust PDF processing.",
+ "default": true
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Create a submission from HTML
+
+This API endpoint allows you to create a one-off submission request document using the provided HTML content, with special field tags rendered as a fillable and signable form. Related Guides Create PDF document fillable form with HTML
+
+```python
+from wabosign import wabosign
+
+wabosign.key = "API_KEY"
+wabosign.url = "https://api.wabosign.com"
+
+wabosign.create_submission_from_html({
+ "name": "Test Submission Document",
+ "documents": [
+ {
+ "name": "Test Document",
+ "html": """
Lorem Ipsum is simply dummy text of the
+
+
+and typesetting industry
+"""
+ }
+ ],
+ "submitters": [
+ {
+ "role": "First Party",
+ "email": "john.doe@example.com"
+ }
+ ]
+})
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Create a submission from HTML",
+ "operationId": "createSubmissionFromHtml",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "documents",
+ "submitters"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document submission",
+ "example": "Test Submission Document"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "order": {
+ "type": "string",
+ "description": "Pass 'random' to send signature request emails to all parties right away. The order is 'preserved' by default so the second party will receive a signature request email only after the document is signed by the first party.",
+ "default": "preserved",
+ "enum": [
+ "preserved",
+ "random"
+ ]
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Specify URL to redirect to after the submission completion."
+ },
+ "bcc_completed": {
+ "type": "string",
+ "description": "Specify BCC address to send signed documents to after the completion."
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails."
+ },
+ "expire_at": {
+ "type": "string",
+ "description": "Specify the expiration date and time after which the submission becomes unavailable for signature.",
+ "example": "2024-09-01 12:00:00 UTC"
+ },
+ "template_ids": {
+ "type": "array",
+ "description": "An optional array of template IDs to use in the submission along with the provided documents. This can be used to create multi-document submissions when some of the required documents exist within templates.",
+ "items": {
+ "type": "integer",
+ "description": "The ID of the template to use for the submission."
+ }
+ },
+ "documents": {
+ "type": "array",
+ "description": "The list of documents built from HTML. Can be used to create a submission with multiple documents.",
+ "items": {
+ "type": "object",
+ "required": [
+ "html"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document name. Random uuid will be assigned when not specified.",
+ "example": "Test Document"
+ },
+ "html": {
+ "type": "string",
+ "description": "HTML document content with field tags.",
+ "example": "
Lorem Ipsum is simply dummy text of the\n\n\nand typesetting industry
\n"
+ },
+ "html_header": {
+ "type": "string",
+ "description": "HTML document content of the header to be displayed on every page."
+ },
+ "html_footer": {
+ "type": "string",
+ "description": "HTML document content of the footer to be displayed on every page."
+ },
+ "size": {
+ "type": "string",
+ "default": "Letter",
+ "description": "Page size. Letter 8.5 x 11 will be assigned when not specified.",
+ "enum": [
+ "Letter",
+ "Legal",
+ "Tabloid",
+ "Ledger",
+ "A0",
+ "A1",
+ "A2",
+ "A3",
+ "A4",
+ "A5",
+ "A6"
+ ],
+ "example": "A4"
+ },
+ "position": {
+ "type": "integer",
+ "description": "Document position in the submission. If not specified, the document will be added in the order it appears in the documents array."
+ }
+ }
+ }
+ },
+ "submitters": {
+ "type": "array",
+ "description": "The list of submitters for the submission.",
+ "items": {
+ "type": "object",
+ "required": [
+ "email"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the submitter."
+ },
+ "role": {
+ "type": "string",
+ "description": "The role name or title of the submitter.",
+ "example": "First Party"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the submitter.",
+ "format": "email",
+ "example": "john.doe@example.com"
+ },
+ "phone": {
+ "type": "string",
+ "description": "The phone number of the submitter, formatted according to the E.164 standard.",
+ "example": "+1234567890"
+ },
+ "values": {
+ "type": "object",
+ "description": "An object with pre-filled values for the submission. Use field names for keys of the object. For more configurations see `fields` param."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this submitter within your app."
+ },
+ "completed": {
+ "type": "boolean",
+ "description": "Pass `true` to mark submitter as completed and auto-signed via API."
+ },
+ "metadata": {
+ "type": "object",
+ "description": "Metadata object with additional submitter information.",
+ "example": "{ \"customField\": \"value\" }"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending only for this submitter.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails for this submitter."
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Submitter specific URL to redirect to after the submission completion."
+ },
+ "order": {
+ "type": "integer",
+ "description": "The order of the submitter in the workflow (e.g., 0 for the first signer, 1 for the second, etc.). Use the same order number to create order groups. By default, submitters are ordered as in the submitters array."
+ },
+ "require_phone_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require phone 2FA verification via a one-time code sent to the phone number in order to access the documents.",
+ "default": false
+ },
+ "require_email_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require email 2FA verification via a one-time code sent to the email address in order to access the documents.",
+ "default": false
+ },
+ "invite_by": {
+ "type": "string",
+ "description": "Set the role name of the previous party that should invite this party via email."
+ },
+ "fields": {
+ "type": "array",
+ "description": "A list of configurations for document form fields.",
+ "items": {
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document field name.",
+ "example": "First Name"
+ },
+ "default_value": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ }
+ ]
+ }
+ }
+ ],
+ "description": "Default value of the field. Use base64 encoded file or a public URL to the image file to set default signature or image fields.",
+ "example": "Acme"
+ },
+ "readonly": {
+ "type": "boolean",
+ "description": "Set `true` to make it impossible for the submitter to edit predefined field value.",
+ "default": false
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Set `true` to make the field required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "roles": {
+ "type": "array",
+ "description": "A list of roles for the submitter. Use this param to merge multiple roles into one submitter.",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body. Can include the following variables: {{submission.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "merge_documents": {
+ "type": "boolean",
+ "description": "Set `true` to merge the documents into a single PDF file.",
+ "default": false
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Archive a submission
+
+The API endpoint allows you to archive a submission.
+
+```python
+from wabosign import wabosign
+
+wabosign.key = "API_KEY"
+wabosign.url = "https://api.wabosign.com"
+
+wabosign.archive_submission(1001)
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Archive a submission",
+ "operationId": "archiveSubmission",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submission.",
+ "example": 1001
+ }
+ ]
+}
+```
+
+### List all submitters
+
+The API endpoint provides the ability to retrieve a list of submitters.
+
+```python
+from wabosign import wabosign
+
+wabosign.key = "API_KEY"
+wabosign.url = "https://api.wabosign.com"
+
+wabosign.list_submissions({ "limit": 10 })
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submitters"
+ ],
+ "summary": "List all submitters",
+ "operationId": "getSubmitters",
+ "parameters": [
+ {
+ "name": "submission_id",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The submission ID allows you to receive only the submitters related to that specific submission."
+ },
+ {
+ "name": "q",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter submitters on name, email or phone partial match."
+ },
+ {
+ "name": "slug",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter submitters by unique slug.",
+ "example": "zAyL9fH36Havvm"
+ },
+ {
+ "name": "completed_after",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "example": "2024-03-05 9:32:20",
+ "description": "The date and time string value to filter submitters that completed the submission after the specified date and time."
+ },
+ {
+ "name": "completed_before",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "example": "2024-03-06 19:32:20",
+ "description": "The date and time string value to filter submitters that completed the submission before the specified date and time."
+ },
+ {
+ "name": "external_id",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "The unique applications-specific identifier provided for a submitter when initializing a signature request. It allows you to receive only submitters with a specified external id."
+ },
+ {
+ "name": "limit",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The number of submitters to return. Default value is 10. Maximum value is 100."
+ },
+ {
+ "name": "after",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submitter to start the list from. It allows you to receive only submitters with id greater than the specified value. Pass ID value from the `pagination.next` response to load the next batch of submitters."
+ },
+ {
+ "name": "before",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submitter to end the list with. It allows you to receive only submitters with id less than the specified value."
+ }
+ ]
+}
+```
+
+### Get a submitter
+
+The API endpoint provides functionality to retrieve information about a submitter, along with the submitter documents and field values.
+
+```python
+from wabosign import wabosign
+
+wabosign.key = "API_KEY"
+wabosign.url = "https://api.wabosign.com"
+
+wabosign.get_submitter(500001)
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submitters"
+ ],
+ "summary": "Get a submitter",
+ "operationId": "getSubmitter",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submitter.",
+ "example": 500001
+ }
+ ]
+}
+```
+
+### Update a submitter
+
+The API endpoint allows you to update submitter details, pre-fill or update field values and re-send emails. Related Guides Automatically sign documents via API
+
+```python
+from wabosign import wabosign
+
+wabosign.key = "API_KEY"
+wabosign.url = "https://api.wabosign.com"
+
+wabosign.update_submitter(500001, {
+ "email": "john.doe@example.com",
+ "fields": [
+ {
+ "name": "First Name",
+ "default_value": "Acme"
+ }
+ ]
+})
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submitters"
+ ],
+ "summary": "Update a submitter",
+ "operationId": "updateSubmitter",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submitter.",
+ "example": 500001
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the submitter."
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the submitter.",
+ "format": "email",
+ "example": "john.doe@example.com"
+ },
+ "phone": {
+ "type": "string",
+ "description": "The phone number of the submitter, formatted according to the E.164 standard.",
+ "example": "+1234567890"
+ },
+ "values": {
+ "type": "object",
+ "description": "An object with pre-filled values for the submission. Use field names for keys of the object. For more configurations see `fields` param."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this submitter within your app."
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `true` to re-send signature request emails."
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to re-send signature request via phone number SMS.",
+ "default": false
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails."
+ },
+ "completed": {
+ "type": "boolean",
+ "description": "Pass `true` to mark submitter as completed and auto-signed via API."
+ },
+ "metadata": {
+ "type": "object",
+ "description": "Metadata object with additional submitter information.",
+ "example": "{ \"customField\": \"value\" }"
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Submitter specific URL to redirect to after the submission completion."
+ },
+ "require_phone_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require phone 2FA verification via a one-time code sent to the phone number in order to access the documents.",
+ "default": false
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body. Can include the following variables: {{template.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "fields": {
+ "type": "array",
+ "description": "A list of configurations for template document form fields.",
+ "items": {
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document template field name.",
+ "example": "First Name"
+ },
+ "default_value": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ }
+ ]
+ }
+ }
+ ],
+ "description": "Default value of the field. Use base64 encoded file or a public URL to the image file to set default signature or image fields.",
+ "example": "Acme"
+ },
+ "readonly": {
+ "type": "boolean",
+ "description": "Set `true` to make it impossible for the submitter to edit predefined field value.",
+ "default": false
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Set `true` to make the field required."
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### List all templates
+
+The API endpoint provides the ability to retrieve a list of available document templates.
+
+```python
+from wabosign import wabosign
+
+wabosign.key = "API_KEY"
+wabosign.url = "https://api.wabosign.com"
+
+wabosign.list_submissions({ "limit": 10 })
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "List all templates",
+ "operationId": "getTemplates",
+ "parameters": [
+ {
+ "name": "q",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter templates based on the name partial match."
+ },
+ {
+ "name": "slug",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter templates by unique slug.",
+ "example": "opaKWh8WWTAcVG"
+ },
+ {
+ "name": "external_id",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "The unique applications-specific identifier provided for the template via API or Embedded template form builder. It allows you to receive only templates with your specified external id."
+ },
+ {
+ "name": "folder",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter templates by folder name."
+ },
+ {
+ "name": "archived",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "boolean"
+ },
+ "description": "Get only archived templates instead of active ones."
+ },
+ {
+ "name": "limit",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The number of templates to return. Default value is 10. Maximum value is 100."
+ },
+ {
+ "name": "after",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the template to start the list from. It allows you to receive only templates with id greater than the specified value. Pass ID value from the `pagination.next` response to load the next batch of templates."
+ },
+ {
+ "name": "before",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the template to end the list with. It allows you to receive only templates with id less than the specified value."
+ }
+ ]
+}
+```
+
+### Get a template
+
+The API endpoint provides the functionality to retrieve information about a document template.
+
+```python
+from wabosign import wabosign
+
+wabosign.key = "API_KEY"
+wabosign.url = "https://api.wabosign.com"
+
+wabosign.get_template(1000001)
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Get a template",
+ "operationId": "getTemplate",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the document template.",
+ "example": 1000001
+ }
+ ]
+}
+```
+
+### Create a template from PDF
+
+The API endpoint provides the functionality to create a fillable document template for a PDF file. Use {{Field Name;role=Signer1;type=date}} text tags to define fillable fields in the document. See https://www.wabosign.com/examples/fieldtags.pdf for more text tag formats. Or specify the exact pixel coordinates of the document fields using `fields` param. Related Guides Use embedded text field tags to create a fillable form
+
+
+```python
+from wabosign import wabosign
+
+wabosign.key = "API_KEY"
+wabosign.url = "https://api.wabosign.com"
+
+wabosign.create_template_from_pdf({
+ "name": "Test PDF",
+ "documents": [
+ {
+ "name": "string",
+ "file": "base64",
+ "fields": [
+ {
+ "name": "string",
+ "areas": [
+ {
+ "x": 0,
+ "y": 0,
+ "w": 0,
+ "h": 0,
+ "page": 1
+ }
+ ]
+ }
+ ]
+ }
+ ]
+})
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Create a template from PDF",
+ "operationId": "createTemplateFromPdf",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "documents"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the template",
+ "example": "Test PDF"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The folder's name to which the template should be created."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this template within your app. Existing template with specified `external_id` will be updated with a new PDF.",
+ "example": "unique-key"
+ },
+ "shared_link": {
+ "type": "boolean",
+ "description": "set to `true` to make the template available via a shared link. This will allow anyone with the link to create a submission from this template.",
+ "default": true
+ },
+ "documents": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "name",
+ "file"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document."
+ },
+ "file": {
+ "example": "base64",
+ "type": "string",
+ "format": "base64",
+ "description": "Base64-encoded content of the PDF file or downloadable file URL."
+ },
+ "fields": {
+ "type": "array",
+ "description": "Fields are optional if you use {{...}} text tags to define fields in the document.",
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the field."
+ },
+ "type": {
+ "type": "string",
+ "description": "Type of the field (e.g., text, signature, date, initials).",
+ "enum": [
+ "heading",
+ "text",
+ "signature",
+ "initials",
+ "date",
+ "number",
+ "image",
+ "checkbox",
+ "multiple",
+ "file",
+ "radio",
+ "select",
+ "cells",
+ "stamp",
+ "payment",
+ "phone",
+ "verification",
+ "strikethrough"
+ ]
+ },
+ "role": {
+ "type": "string",
+ "description": "Role name of the signer."
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Indicates if the field is required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "areas": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "x",
+ "y",
+ "w",
+ "h",
+ "page"
+ ],
+ "properties": {
+ "x": {
+ "type": "number",
+ "description": "X-coordinate of the field area."
+ },
+ "y": {
+ "type": "number",
+ "description": "Y-coordinate of the field area."
+ },
+ "w": {
+ "type": "number",
+ "description": "Width of the field area."
+ },
+ "h": {
+ "type": "number",
+ "description": "Height of the field area."
+ },
+ "page": {
+ "type": "integer",
+ "description": "Page number of the field area. Starts from 1.",
+ "example": 1
+ },
+ "option": {
+ "type": "string",
+ "description": "Option string value for 'radio' and 'multiple' select field types."
+ }
+ }
+ }
+ },
+ "options": {
+ "type": "array",
+ "description": "An array of option values for 'select' field type.",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "Option A",
+ "Option B"
+ ]
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "flatten": {
+ "type": "boolean",
+ "description": "Remove PDF form fields from the documents.",
+ "default": false
+ },
+ "remove_tags": {
+ "type": "boolean",
+ "description": "Pass `false` to disable the removal of {{text}} tags from the PDF. This can be used along with transparent text tags for faster and more robust PDF processing.",
+ "default": true
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Create a template from Word DOCX
+
+The API endpoint provides the functionality to create a fillable document template for existing Microsoft Word document. Use {{Field Name;role=Signer1;type=date}} text tags to define fillable fields in the document. See https://www.wabosign.com/examples/fieldtags.docx for more text tag formats. Or specify the exact pixel coordinates of the document fields using `fields` param. Related Guides Use embedded text field tags to create a fillable form
+
+
+```python
+from wabosign import wabosign
+
+wabosign.key = "API_KEY"
+wabosign.url = "https://api.wabosign.com"
+
+wabosign.create_template_from_docx({
+ "name": "Test DOCX",
+ "documents": [
+ {
+ "name": "string",
+ "file": "base64"
+ }
+ ]
+})
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Create a template from Word DOCX",
+ "operationId": "createTemplateFromDocx",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "documents"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the template",
+ "example": "Test DOCX"
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this template within your app. Existing template with specified `external_id` will be updated with a new document.",
+ "example": "unique-key"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The folder's name to which the template should be created."
+ },
+ "shared_link": {
+ "type": "boolean",
+ "description": "set to `true` to make the template available via a shared link. This will allow anyone with the link to create a submission from this template.",
+ "default": true
+ },
+ "documents": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "name",
+ "file"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document."
+ },
+ "file": {
+ "type": "string",
+ "example": "base64",
+ "format": "base64",
+ "description": "Base64-encoded content of the DOCX file or downloadable file URL"
+ },
+ "fields": {
+ "description": "Fields are optional if you use {{...}} text tags to define fields in the document.",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the field."
+ },
+ "type": {
+ "type": "string",
+ "description": "Type of the field (e.g., text, signature, date, initials).",
+ "enum": [
+ "heading",
+ "text",
+ "signature",
+ "initials",
+ "date",
+ "number",
+ "image",
+ "checkbox",
+ "multiple",
+ "file",
+ "radio",
+ "select",
+ "cells",
+ "stamp",
+ "payment",
+ "phone",
+ "verification",
+ "strikethrough"
+ ]
+ },
+ "role": {
+ "type": "string",
+ "description": "Role name of the signer."
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Indicates if the field is required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "areas": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "x": {
+ "type": "number",
+ "description": "X-coordinate of the field area."
+ },
+ "y": {
+ "type": "number",
+ "description": "Y-coordinate of the field area."
+ },
+ "w": {
+ "type": "number",
+ "description": "Width of the field area."
+ },
+ "h": {
+ "type": "number",
+ "description": "Height of the field area."
+ },
+ "page": {
+ "type": "integer",
+ "description": "Page number of the field area. Starts from 1."
+ },
+ "option": {
+ "type": "string",
+ "description": "Option string value for 'radio' and 'multiple' select field types."
+ }
+ }
+ }
+ },
+ "options": {
+ "type": "array",
+ "description": "An array of option values for 'select' field type.",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "Option A",
+ "Option B"
+ ]
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Create a template from HTML
+
+The API endpoint provides the functionality to seamlessly generate a PDF document template by utilizing the provided HTML content while incorporating pre-defined fields. Related Guides Create PDF document fillable form with HTML
+
+```python
+from wabosign import wabosign
+
+wabosign.key = "API_KEY"
+wabosign.url = "https://api.wabosign.com"
+
+wabosign.create_template_from_html({
+ "html": """
Lorem Ipsum is simply dummy text of the
+
+
+and typesetting industry
Lorem Ipsum is simply dummy text of the\n\n\nand typesetting industry
\n"
+ },
+ "html_header": {
+ "type": "string",
+ "description": "HTML template of the header to be displayed on every page."
+ },
+ "html_footer": {
+ "type": "string",
+ "description": "HTML template of the footer to be displayed on every page."
+ },
+ "name": {
+ "type": "string",
+ "description": "Template name. Random uuid will be assigned when not specified.",
+ "example": "Test Template"
+ },
+ "size": {
+ "type": "string",
+ "default": "Letter",
+ "description": "Page size. Letter 8.5 x 11 will be assigned when not specified.",
+ "enum": [
+ "Letter",
+ "Legal",
+ "Tabloid",
+ "Ledger",
+ "A0",
+ "A1",
+ "A2",
+ "A3",
+ "A4",
+ "A5",
+ "A6"
+ ],
+ "example": "A4"
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this template within your app. Existing template with specified `external_id` will be updated with a new HTML.",
+ "example": "714d974e-83d8-11ee-b962-0242ac120002"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The folder's name to which the template should be created."
+ },
+ "shared_link": {
+ "type": "boolean",
+ "description": "set to `true` to make the template available via a shared link. This will allow anyone with the link to create a submission from this template.",
+ "default": true
+ },
+ "documents": {
+ "type": "array",
+ "description": "The list of documents built from HTML. Can be used to create a template with multiple documents. Leave `documents` param empty when using a top-level `html` param for a template with a single document.",
+ "items": {
+ "type": "object",
+ "required": [
+ "html"
+ ],
+ "properties": {
+ "html": {
+ "type": "string",
+ "description": "HTML template with field tags.",
+ "example": "
Lorem Ipsum is simply dummy text of the\n\n\nand typesetting industry
\n"
+ },
+ "name": {
+ "type": "string",
+ "description": "Document name. Random uuid will be assigned when not specified.",
+ "example": "Test Document"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Clone a template
+
+The API endpoint allows you to clone existing template into a new template.
+
+```python
+from wabosign import wabosign
+
+wabosign.key = "API_KEY"
+wabosign.url = "https://api.wabosign.com"
+
+wabosign.clone_template(1000001, {
+ "name": "Cloned Template"
+})
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Clone a template",
+ "operationId": "cloneTemplate",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the documents template.",
+ "example": 1000001
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Template name. Existing name with (Clone) suffix will be used if not specified.",
+ "example": "Cloned Template"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The folder's name to which the template should be cloned."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this template within your app."
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Merge templates
+
+The API endpoint allows you to merge multiple templates with documents and fields into a new combined template.
+
+```python
+from wabosign import wabosign
+
+wabosign.key = "API_KEY"
+wabosign.url = "https://api.wabosign.com"
+
+wabosign.merge_templates({
+ "template_ids": [
+ 321,
+ 432
+ ],
+ "name": "Merged Template"
+})
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Merge templates",
+ "operationId": "mergeTemplate",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "template_ids"
+ ],
+ "properties": {
+ "template_ids": {
+ "type": "array",
+ "description": "An array of template ids to merge into a new template.",
+ "items": {
+ "type": "integer"
+ },
+ "example": [
+ 321,
+ 432
+ ]
+ },
+ "name": {
+ "type": "string",
+ "description": "Template name. Existing name with (Merged) suffix will be used if not specified.",
+ "example": "Merged Template"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The name of the folder in which the merged template should be placed."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this template within your app."
+ },
+ "shared_link": {
+ "type": "boolean",
+ "description": "set to `true` to make the template available via a shared link. This will allow anyone with the link to create a submission from this template.",
+ "default": true
+ },
+ "roles": {
+ "type": "array",
+ "description": "An array of submitter role names to be used in the merged template.",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "Agent",
+ "Customer"
+ ]
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Update a template
+
+The API endpoint provides the functionality to move a document template to a different folder and update the name of the template.
+
+```python
+from wabosign import wabosign
+
+wabosign.key = "API_KEY"
+wabosign.url = "https://api.wabosign.com"
+
+wabosign.update_template(1000001, {
+ "name": "New Document Name",
+ "folder_name": "New Folder"
+})
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Update a template",
+ "operationId": "updateTemplate",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the document template.",
+ "example": 1000001
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the template",
+ "example": "New Document Name"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The folder's name to which the template should be moved.",
+ "example": "New Folder"
+ },
+ "roles": {
+ "type": "array",
+ "description": "An array of submitter role names to update the template with.",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "Agent",
+ "Customer"
+ ]
+ },
+ "archived": {
+ "type": "boolean",
+ "description": "Set `false` to unarchive template."
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Update template documents
+
+The API endpoint allows you to add, remove or replace documents in the template with provided PDF/DOCX file or HTML content.
+
+```python
+from wabosign import wabosign
+
+wabosign.key = "API_KEY"
+wabosign.url = "https://api.wabosign.com"
+
+wabosign.update_template_documents(1000001, {
+ "documents": [
+ {
+ "file": "string"
+ }
+ ]
+})
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Update template documents",
+ "operationId": "addDocumentToTemplate",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the documents template.",
+ "example": 1000001
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "documents": {
+ "type": "array",
+ "description": "The list of documents to add or replace in the template.",
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document name. Random uuid will be assigned when not specified.",
+ "example": "Test Template"
+ },
+ "file": {
+ "type": "string",
+ "format": "base64",
+ "description": "Base64-encoded content of the PDF or DOCX file or downloadable file URL. Leave it empty if you create a new document using HTML param."
+ },
+ "html": {
+ "type": "string",
+ "description": "HTML template with field tags. Leave it empty if you add a document via PDF or DOCX base64 encoded file param or URL."
+ },
+ "position": {
+ "type": "integer",
+ "description": "Position of the document. By default will be added as the last document in the template.",
+ "example": 0
+ },
+ "replace": {
+ "type": "boolean",
+ "default": false,
+ "description": "Set to `true` to replace existing document with a new file at `position`. Existing document fields will be transferred to the new document if it doesn't contain any fields."
+ },
+ "remove": {
+ "type": "boolean",
+ "default": false,
+ "description": "Set to `true` to remove existing document at given `position` or with given `name`."
+ }
+ }
+ }
+ },
+ "merge": {
+ "type": "boolean",
+ "default": false,
+ "description": "Set to `true` to merge all existing and new documents into a single PDF document in the template."
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Archive a template
+
+The API endpoint allows you to archive a document template.
+
+```python
+from wabosign import wabosign
+
+wabosign.key = "API_KEY"
+wabosign.url = "https://api.wabosign.com"
+
+wabosign.archive_template(1000001)
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Archive a template",
+ "operationId": "archiveTemplate",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the document template.",
+ "example": 1000001
+ }
+ ]
+}
+```
+
diff --git a/docs/api/ruby.md b/docs/api/ruby.md
new file mode 100644
index 00000000..c47fa6e9
--- /dev/null
+++ b/docs/api/ruby.md
@@ -0,0 +1,4055 @@
+### List all submissions
+
+The API endpoint provides the ability to retrieve a list of available submissions.
+
+```ruby
+require "wabosign"
+
+Wabosign.key = ENV["DOCUSEAL_API_KEY"]
+Wabosign.url = "https://api.wabosign.com"
+
+Wabosign.list_submissions(limit: 10)
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "List all submissions",
+ "operationId": "getSubmissions",
+ "parameters": [
+ {
+ "name": "template_id",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The template ID allows you to receive only the submissions created from that specific template."
+ },
+ {
+ "name": "status",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string",
+ "enum": [
+ "pending",
+ "completed",
+ "declined",
+ "expired"
+ ]
+ },
+ "description": "Filter submissions by status."
+ },
+ {
+ "name": "q",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter submissions based on submitters name, email or phone partial match."
+ },
+ {
+ "name": "slug",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter submissions by unique slug.",
+ "example": "NtLDQM7eJX2ZMd"
+ },
+ {
+ "name": "template_folder",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter submissions by template folder name."
+ },
+ {
+ "name": "archived",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "boolean"
+ },
+ "description": "Returns only archived submissions when `true` and only active submissions when `false`."
+ },
+ {
+ "name": "limit",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The number of submissions to return. Default value is 10. Maximum value is 100."
+ },
+ {
+ "name": "after",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submission to start the list from. It allows you to receive only submissions with an ID greater than the specified value. Pass ID value from the `pagination.next` response to load the next batch of submissions."
+ },
+ {
+ "name": "before",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submission that marks the end of the list. It allows you to receive only submissions with an ID less than the specified value."
+ }
+ ]
+}
+```
+
+### Get a submission
+
+The API endpoint provides the functionality to retrieve information about a submission.
+
+```ruby
+require "wabosign"
+
+Wabosign.key = ENV["DOCUSEAL_API_KEY"]
+Wabosign.url = "https://api.wabosign.com"
+
+Wabosign.get_submission(1001)
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Get a submission",
+ "operationId": "getSubmission",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submission.",
+ "example": 1001
+ }
+ ]
+}
+```
+
+### Get submission documents
+
+This endpoint returns a list of partially filled documents for a submission. If the submission has been completed, the final signed documents are returned.
+
+```ruby
+require "wabosign"
+
+Wabosign.key = ENV["DOCUSEAL_API_KEY"]
+Wabosign.url = "https://api.wabosign.com"
+
+Wabosign.get_submission_documents(1001)
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Get submission documents",
+ "operationId": "getSubmissionDocuments",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submission.",
+ "example": 1001
+ }
+ ]
+}
+```
+
+### Create a submission
+
+This API endpoint allows you to create signature requests (submissions) for a document template and send them to the specified submitters (signers). Related Guides Send documents for signature via API Pre-fill PDF document form fields with API
+
+```ruby
+require "wabosign"
+
+Wabosign.key = ENV["DOCUSEAL_API_KEY"]
+Wabosign.url = "https://api.wabosign.com"
+
+Wabosign.create_submission({
+ template_id: 1000001,
+ send_email: true,
+ submitters: [
+ {
+ role: "First Party",
+ email: "john.doe@example.com"
+ }
+ ]
+})
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Create a submission",
+ "operationId": "createSubmission",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "template_id",
+ "submitters"
+ ],
+ "properties": {
+ "template_id": {
+ "type": "integer",
+ "description": "The unique identifier of the template. Document template forms can be created via the Web UI, PDF and DOCX API, or HTML API.",
+ "example": 1000001
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "order": {
+ "type": "string",
+ "description": "Pass 'random' to send signature request emails to all parties right away. The order is 'preserved' by default so the second party will receive a signature request email only after the document is signed by the first party.",
+ "default": "preserved",
+ "enum": [
+ "preserved",
+ "random"
+ ]
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Specify URL to redirect to after the submission completion."
+ },
+ "bcc_completed": {
+ "type": "string",
+ "description": "Specify BCC address to send signed documents to after the completion."
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails."
+ },
+ "expire_at": {
+ "type": "string",
+ "description": "Specify the expiration date and time after which the submission becomes unavailable for signature.",
+ "example": "2024-09-01 12:00:00 UTC"
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body. Can include the following variables: {{template.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "submitters": {
+ "type": "array",
+ "description": "The list of submitters for the submission.",
+ "items": {
+ "type": "object",
+ "required": [
+ "email"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the submitter."
+ },
+ "role": {
+ "type": "string",
+ "description": "The role name or title of the submitter.",
+ "example": "First Party"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the submitter.",
+ "format": "email",
+ "example": "john.doe@example.com"
+ },
+ "phone": {
+ "type": "string",
+ "description": "The phone number of the submitter, formatted according to the E.164 standard.",
+ "example": "+1234567890"
+ },
+ "values": {
+ "type": "object",
+ "description": "An object with pre-filled values for the submission. Use field names for keys of the object. For more configurations see `fields` param."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this submitter within your app."
+ },
+ "completed": {
+ "type": "boolean",
+ "description": "Pass `true` to mark submitter as completed and auto-signed via API."
+ },
+ "metadata": {
+ "type": "object",
+ "description": "Metadata object with additional submitter information.",
+ "example": "{ \"customField\": \"value\" }"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending only for this submitter.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails for this submitter."
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Submitter specific URL to redirect to after the submission completion."
+ },
+ "order": {
+ "type": "integer",
+ "description": "The order of the submitter in the workflow (e.g., 0 for the first signer, 1 for the second, etc.). Use the same order number to create order groups. By default, submitters are ordered as in the submitters array."
+ },
+ "require_phone_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require phone 2FA verification via a one-time code sent to the phone number in order to access the documents.",
+ "default": false
+ },
+ "require_email_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require email 2FA verification via a one-time code sent to the email address in order to access the documents.",
+ "default": false
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject for the submitter."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body for the submitter. Can include the following variables: {{template.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "fields": {
+ "type": "array",
+ "description": "A list of configurations for template document form fields.",
+ "items": {
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document template field name.",
+ "example": "First Name"
+ },
+ "default_value": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ }
+ ]
+ }
+ }
+ ],
+ "description": "Default value of the field. Use base64 encoded file or a public URL to the image file to set default signature or image fields.",
+ "example": "Acme"
+ },
+ "readonly": {
+ "type": "boolean",
+ "description": "Set `true` to make it impossible for the submitter to edit predefined field value.",
+ "default": false
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Set `true` to make the field required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "roles": {
+ "type": "array",
+ "description": "A list of roles for the submitter. Use this param to merge multiple roles into one submitter.",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Create a submission from PDF
+
+The API endpoint provides the functionality to create one-off submission request from a PDF. Use {{Field Name;role=Signer1;type=date}} text tags to define fillable fields in the document. See https://www.wabosign.com/examples/fieldtags.pdf for more text tag formats. Or specify the exact pixel coordinates of the document fields using `fields` param. Related Guides Use embedded text field tags to create a fillable form
+
+
+```ruby
+require "wabosign"
+
+Wabosign.key = ENV["DOCUSEAL_API_KEY"]
+Wabosign.url = "https://api.wabosign.com"
+
+Wabosign.create_submission_from_pdf({
+ name: "Test Submission Document",
+ documents: [
+ {
+ name: "string",
+ file: "base64",
+ fields: [
+ {
+ name: "string",
+ areas: [
+ {
+ x: 0,
+ y: 0,
+ w: 0,
+ h: 0,
+ page: 1
+ }
+ ]
+ }
+ ]
+ }
+ ],
+ submitters: [
+ {
+ role: "First Party",
+ email: "john.doe@example.com"
+ }
+ ]
+})
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Create a submission from PDF",
+ "operationId": "createSubmissionFromPdf",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "documents",
+ "submitters"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document submission.",
+ "example": "Test Submission Document"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "order": {
+ "type": "string",
+ "description": "Pass 'random' to send signature request emails to all parties right away. The order is 'preserved' by default so the second party will receive a signature request email only after the document is signed by the first party.",
+ "default": "preserved",
+ "enum": [
+ "preserved",
+ "random"
+ ]
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Specify URL to redirect to after the submission completion."
+ },
+ "bcc_completed": {
+ "type": "string",
+ "description": "Specify BCC address to send signed documents to after the completion."
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails."
+ },
+ "expire_at": {
+ "type": "string",
+ "description": "Specify the expiration date and time after which the submission becomes unavailable for signature.",
+ "example": "2024-09-01 12:00:00 UTC"
+ },
+ "template_ids": {
+ "type": "array",
+ "description": "An optional array of template IDs to use in the submission along with the provided documents. This can be used to create multi-document submissions when some of the required documents exist within templates.",
+ "items": {
+ "type": "integer",
+ "description": "The ID of the template to use for the submission."
+ }
+ },
+ "documents": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "name",
+ "file"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document."
+ },
+ "file": {
+ "example": "base64",
+ "type": "string",
+ "format": "base64",
+ "description": "Base64-encoded content of the PDF file or downloadable file URL."
+ },
+ "fields": {
+ "type": "array",
+ "description": "Fields are optional if you use {{...}} text tags to define fields in the document.",
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the field."
+ },
+ "type": {
+ "type": "string",
+ "description": "Type of the field (e.g., text, signature, date, initials).",
+ "enum": [
+ "heading",
+ "text",
+ "signature",
+ "initials",
+ "date",
+ "number",
+ "image",
+ "checkbox",
+ "multiple",
+ "file",
+ "radio",
+ "select",
+ "cells",
+ "stamp",
+ "payment",
+ "phone",
+ "verification",
+ "strikethrough"
+ ]
+ },
+ "role": {
+ "type": "string",
+ "description": "Role name of the signer."
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Indicates if the field is required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "areas": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "x",
+ "y",
+ "w",
+ "h",
+ "page"
+ ],
+ "properties": {
+ "x": {
+ "type": "number",
+ "description": "X-coordinate of the field area."
+ },
+ "y": {
+ "type": "number",
+ "description": "Y-coordinate of the field area."
+ },
+ "w": {
+ "type": "number",
+ "description": "Width of the field area."
+ },
+ "h": {
+ "type": "number",
+ "description": "Height of the field area."
+ },
+ "page": {
+ "type": "integer",
+ "description": "Page number of the field area. Starts from 1.",
+ "example": 1
+ },
+ "option": {
+ "type": "string",
+ "description": "Option string value for 'radio' and 'multiple' select field types."
+ }
+ }
+ }
+ },
+ "options": {
+ "type": "array",
+ "description": "An array of option values for 'select' field type.",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "Option A",
+ "Option B"
+ ]
+ }
+ }
+ }
+ },
+ "position": {
+ "type": "integer",
+ "description": "Document position in the submission. If not specified, the document will be added in the order it appears in the documents array."
+ }
+ }
+ }
+ },
+ "submitters": {
+ "type": "array",
+ "description": "The list of submitters for the submission.",
+ "items": {
+ "type": "object",
+ "required": [
+ "email"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the submitter."
+ },
+ "role": {
+ "type": "string",
+ "description": "The role name or title of the submitter.",
+ "example": "First Party"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the submitter.",
+ "format": "email",
+ "example": "john.doe@example.com"
+ },
+ "phone": {
+ "type": "string",
+ "description": "The phone number of the submitter, formatted according to the E.164 standard.",
+ "example": "+1234567890"
+ },
+ "values": {
+ "type": "object",
+ "description": "An object with pre-filled values for the submission. Use field names for keys of the object. For more configurations see `fields` param."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this submitter within your app."
+ },
+ "completed": {
+ "type": "boolean",
+ "description": "Pass `true` to mark submitter as completed and auto-signed via API."
+ },
+ "metadata": {
+ "type": "object",
+ "description": "Metadata object with additional submitter information.",
+ "example": "{ \"customField\": \"value\" }"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending only for this submitter.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails for this submitter."
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Submitter specific URL to redirect to after the submission completion."
+ },
+ "order": {
+ "type": "integer",
+ "description": "The order of the submitter in the workflow (e.g., 0 for the first signer, 1 for the second, etc.). Use the same order number to create order groups. By default, submitters are ordered as in the submitters array."
+ },
+ "require_phone_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require phone 2FA verification via a one-time code sent to the phone number in order to access the documents.",
+ "default": false
+ },
+ "require_email_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require email 2FA verification via a one-time code sent to the email address in order to access the documents.",
+ "default": false
+ },
+ "invite_by": {
+ "type": "string",
+ "description": "Set the role name of the previous party that should invite this party via email."
+ },
+ "fields": {
+ "type": "array",
+ "description": "A list of configurations for document form fields.",
+ "items": {
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document field name.",
+ "example": "First Name"
+ },
+ "default_value": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ }
+ ]
+ }
+ }
+ ],
+ "description": "Default value of the field. Use base64 encoded file or a public URL to the image file to set default signature or image fields.",
+ "example": "Acme"
+ },
+ "readonly": {
+ "type": "boolean",
+ "description": "Set `true` to make it impossible for the submitter to edit predefined field value.",
+ "default": false
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Set `true` to make the field required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "roles": {
+ "type": "array",
+ "description": "A list of roles for the submitter. Use this param to merge multiple roles into one submitter.",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body. Can include the following variables: {{submission.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "flatten": {
+ "type": "boolean",
+ "description": "Remove PDF form fields from the documents.",
+ "default": false
+ },
+ "merge_documents": {
+ "type": "boolean",
+ "description": "Set `true` to merge the documents into a single PDF file.",
+ "default": false
+ },
+ "remove_tags": {
+ "type": "boolean",
+ "description": "Pass `false` to disable the removal of {{text}} tags from the PDF. This can be used along with transparent text tags for faster and more robust PDF processing.",
+ "default": true
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Create a submission from DOCX
+
+The API endpoint provides functionality to create a one-off submission request from a DOCX file with dynamic content variables. Use [[variable_name]] text tags to define dynamic content variables in the document. See https://www.wabosign.com/examples/demo_template.docx for the specific text variable syntax, including dynamic content tables and list. You can also use the {{signature}} field syntax to define fillable fields, as in a PDF. Related Guides Use dynamic content variables in DOCX to create personalized documents
+
+```ruby
+require "wabosign"
+
+Wabosign.key = ENV["DOCUSEAL_API_KEY"]
+Wabosign.url = "https://api.wabosign.com"
+
+Wabosign.create_submission_from_docx({
+ name: "Test Submission Document",
+ variables: {
+ variable_name: "value"
+ },
+ documents: [
+ {
+ name: "string",
+ file: "base64"
+ }
+ ],
+ submitters: [
+ {
+ role: "First Party",
+ email: "john.doe@example.com"
+ }
+ ]
+})
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Create a submission from DOCX",
+ "operationId": "createSubmissionFromDocx",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "documents",
+ "submitters"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document submission.",
+ "example": "Test Submission Document"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "variables": {
+ "type": "object",
+ "description": "Dynamic content variables object. Variable values can be strings, numbers, arrays, objects, or HTML content used to generate styled text, paragraphs, and tables in DOCX.",
+ "example": {
+ "variable_name": "value"
+ }
+ },
+ "order": {
+ "type": "string",
+ "description": "Pass 'random' to send signature request emails to all parties right away. The order is 'preserved' by default so the second party will receive a signature request email only after the document is signed by the first party.",
+ "default": "preserved",
+ "enum": [
+ "preserved",
+ "random"
+ ]
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Specify URL to redirect to after the submission completion."
+ },
+ "bcc_completed": {
+ "type": "string",
+ "description": "Specify BCC address to send signed documents to after the completion."
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails."
+ },
+ "expire_at": {
+ "type": "string",
+ "description": "Specify the expiration date and time after which the submission becomes unavailable for signature.",
+ "example": "2024-09-01 12:00:00 UTC"
+ },
+ "template_ids": {
+ "type": "array",
+ "description": "An optional array of template IDs to use in the submission along with the provided documents. This can be used to create multi-document submissions when some of the required documents exist within templates.",
+ "items": {
+ "type": "integer",
+ "description": "The ID of the template to use for the submission."
+ }
+ },
+ "documents": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "name",
+ "file"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document."
+ },
+ "file": {
+ "example": "base64",
+ "type": "string",
+ "format": "base64",
+ "description": "Base64-encoded content of the PDF or DOCX file or downloadable file URL."
+ },
+ "position": {
+ "type": "integer",
+ "description": "Document position in the submission. If not specified, the document will be added in the order it appears in the documents array."
+ }
+ }
+ }
+ },
+ "submitters": {
+ "type": "array",
+ "description": "The list of submitters for the submission.",
+ "items": {
+ "type": "object",
+ "required": [
+ "email"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the submitter."
+ },
+ "role": {
+ "type": "string",
+ "description": "The role name or title of the submitter.",
+ "example": "First Party"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the submitter.",
+ "format": "email",
+ "example": "john.doe@example.com"
+ },
+ "phone": {
+ "type": "string",
+ "description": "The phone number of the submitter, formatted according to the E.164 standard.",
+ "example": "+1234567890"
+ },
+ "values": {
+ "type": "object",
+ "description": "An object with pre-filled values for the submission. Use field names for keys of the object. For more configurations see `fields` param."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this submitter within your app."
+ },
+ "completed": {
+ "type": "boolean",
+ "description": "Pass `true` to mark submitter as completed and auto-signed via API."
+ },
+ "metadata": {
+ "type": "object",
+ "description": "Metadata object with additional submitter information.",
+ "example": "{ \"customField\": \"value\" }"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending only for this submitter.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails for this submitter."
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Submitter specific URL to redirect to after the submission completion."
+ },
+ "order": {
+ "type": "integer",
+ "description": "The order of the submitter in the workflow (e.g., 0 for the first signer, 1 for the second, etc.). Use the same order number to create order groups. By default, submitters are ordered as in the submitters array."
+ },
+ "require_phone_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require phone 2FA verification via a one-time code sent to the phone number in order to access the documents.",
+ "default": false
+ },
+ "require_email_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require email 2FA verification via a one-time code sent to the email address in order to access the documents.",
+ "default": false
+ },
+ "invite_by": {
+ "type": "string",
+ "description": "Set the role name of the previous party that should invite this party via email."
+ },
+ "fields": {
+ "type": "array",
+ "description": "A list of configurations for document form fields.",
+ "items": {
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document field name.",
+ "example": "First Name"
+ },
+ "default_value": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ }
+ ]
+ }
+ }
+ ],
+ "description": "Default value of the field. Use base64 encoded file or a public URL to the image file to set default signature or image fields.",
+ "example": "Acme"
+ },
+ "readonly": {
+ "type": "boolean",
+ "description": "Set `true` to make it impossible for the submitter to edit predefined field value.",
+ "default": false
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Set `true` to make the field required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "roles": {
+ "type": "array",
+ "description": "A list of roles for the submitter. Use this param to merge multiple roles into one submitter.",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body. Can include the following variables: {{submission.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "merge_documents": {
+ "type": "boolean",
+ "description": "Set `true` to merge the documents into a single PDF file.",
+ "default": false
+ },
+ "remove_tags": {
+ "type": "boolean",
+ "description": "Pass `false` to disable the removal of {{text}} tags from the PDF. This can be used along with transparent text tags for faster and more robust PDF processing.",
+ "default": true
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Create a submission from HTML
+
+This API endpoint allows you to create a one-off submission request document using the provided HTML content, with special field tags rendered as a fillable and signable form. Related Guides Create PDF document fillable form with HTML
+
+```ruby
+require "wabosign"
+
+Wabosign.key = ENV["DOCUSEAL_API_KEY"]
+Wabosign.url = "https://api.wabosign.com"
+
+Wabosign.create_submission_from_html({
+ name: "Test Submission Document",
+ documents: [
+ {
+ name: "Test Document",
+ html: "
Lorem Ipsum is simply dummy text of the
+
+
+and typesetting industry
+"
+ }
+ ],
+ submitters: [
+ {
+ role: "First Party",
+ email: "john.doe@example.com"
+ }
+ ]
+})
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Create a submission from HTML",
+ "operationId": "createSubmissionFromHtml",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "documents",
+ "submitters"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document submission",
+ "example": "Test Submission Document"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "order": {
+ "type": "string",
+ "description": "Pass 'random' to send signature request emails to all parties right away. The order is 'preserved' by default so the second party will receive a signature request email only after the document is signed by the first party.",
+ "default": "preserved",
+ "enum": [
+ "preserved",
+ "random"
+ ]
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Specify URL to redirect to after the submission completion."
+ },
+ "bcc_completed": {
+ "type": "string",
+ "description": "Specify BCC address to send signed documents to after the completion."
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails."
+ },
+ "expire_at": {
+ "type": "string",
+ "description": "Specify the expiration date and time after which the submission becomes unavailable for signature.",
+ "example": "2024-09-01 12:00:00 UTC"
+ },
+ "template_ids": {
+ "type": "array",
+ "description": "An optional array of template IDs to use in the submission along with the provided documents. This can be used to create multi-document submissions when some of the required documents exist within templates.",
+ "items": {
+ "type": "integer",
+ "description": "The ID of the template to use for the submission."
+ }
+ },
+ "documents": {
+ "type": "array",
+ "description": "The list of documents built from HTML. Can be used to create a submission with multiple documents.",
+ "items": {
+ "type": "object",
+ "required": [
+ "html"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document name. Random uuid will be assigned when not specified.",
+ "example": "Test Document"
+ },
+ "html": {
+ "type": "string",
+ "description": "HTML document content with field tags.",
+ "example": "
Lorem Ipsum is simply dummy text of the\n\n\nand typesetting industry
\n"
+ },
+ "html_header": {
+ "type": "string",
+ "description": "HTML document content of the header to be displayed on every page."
+ },
+ "html_footer": {
+ "type": "string",
+ "description": "HTML document content of the footer to be displayed on every page."
+ },
+ "size": {
+ "type": "string",
+ "default": "Letter",
+ "description": "Page size. Letter 8.5 x 11 will be assigned when not specified.",
+ "enum": [
+ "Letter",
+ "Legal",
+ "Tabloid",
+ "Ledger",
+ "A0",
+ "A1",
+ "A2",
+ "A3",
+ "A4",
+ "A5",
+ "A6"
+ ],
+ "example": "A4"
+ },
+ "position": {
+ "type": "integer",
+ "description": "Document position in the submission. If not specified, the document will be added in the order it appears in the documents array."
+ }
+ }
+ }
+ },
+ "submitters": {
+ "type": "array",
+ "description": "The list of submitters for the submission.",
+ "items": {
+ "type": "object",
+ "required": [
+ "email"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the submitter."
+ },
+ "role": {
+ "type": "string",
+ "description": "The role name or title of the submitter.",
+ "example": "First Party"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the submitter.",
+ "format": "email",
+ "example": "john.doe@example.com"
+ },
+ "phone": {
+ "type": "string",
+ "description": "The phone number of the submitter, formatted according to the E.164 standard.",
+ "example": "+1234567890"
+ },
+ "values": {
+ "type": "object",
+ "description": "An object with pre-filled values for the submission. Use field names for keys of the object. For more configurations see `fields` param."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this submitter within your app."
+ },
+ "completed": {
+ "type": "boolean",
+ "description": "Pass `true` to mark submitter as completed and auto-signed via API."
+ },
+ "metadata": {
+ "type": "object",
+ "description": "Metadata object with additional submitter information.",
+ "example": "{ \"customField\": \"value\" }"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending only for this submitter.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails for this submitter."
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Submitter specific URL to redirect to after the submission completion."
+ },
+ "order": {
+ "type": "integer",
+ "description": "The order of the submitter in the workflow (e.g., 0 for the first signer, 1 for the second, etc.). Use the same order number to create order groups. By default, submitters are ordered as in the submitters array."
+ },
+ "require_phone_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require phone 2FA verification via a one-time code sent to the phone number in order to access the documents.",
+ "default": false
+ },
+ "require_email_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require email 2FA verification via a one-time code sent to the email address in order to access the documents.",
+ "default": false
+ },
+ "invite_by": {
+ "type": "string",
+ "description": "Set the role name of the previous party that should invite this party via email."
+ },
+ "fields": {
+ "type": "array",
+ "description": "A list of configurations for document form fields.",
+ "items": {
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document field name.",
+ "example": "First Name"
+ },
+ "default_value": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ }
+ ]
+ }
+ }
+ ],
+ "description": "Default value of the field. Use base64 encoded file or a public URL to the image file to set default signature or image fields.",
+ "example": "Acme"
+ },
+ "readonly": {
+ "type": "boolean",
+ "description": "Set `true` to make it impossible for the submitter to edit predefined field value.",
+ "default": false
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Set `true` to make the field required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "roles": {
+ "type": "array",
+ "description": "A list of roles for the submitter. Use this param to merge multiple roles into one submitter.",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body. Can include the following variables: {{submission.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "merge_documents": {
+ "type": "boolean",
+ "description": "Set `true` to merge the documents into a single PDF file.",
+ "default": false
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Archive a submission
+
+The API endpoint allows you to archive a submission.
+
+```ruby
+require "wabosign"
+
+Wabosign.key = ENV["DOCUSEAL_API_KEY"]
+Wabosign.url = "https://api.wabosign.com"
+
+Wabosign.archive_submission(1001)
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Archive a submission",
+ "operationId": "archiveSubmission",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submission.",
+ "example": 1001
+ }
+ ]
+}
+```
+
+### List all submitters
+
+The API endpoint provides the ability to retrieve a list of submitters.
+
+```ruby
+require "wabosign"
+
+Wabosign.key = ENV["DOCUSEAL_API_KEY"]
+Wabosign.url = "https://api.wabosign.com"
+
+Wabosign.list_submitters(limit: 10)
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submitters"
+ ],
+ "summary": "List all submitters",
+ "operationId": "getSubmitters",
+ "parameters": [
+ {
+ "name": "submission_id",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The submission ID allows you to receive only the submitters related to that specific submission."
+ },
+ {
+ "name": "q",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter submitters on name, email or phone partial match."
+ },
+ {
+ "name": "slug",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter submitters by unique slug.",
+ "example": "zAyL9fH36Havvm"
+ },
+ {
+ "name": "completed_after",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "example": "2024-03-05 9:32:20",
+ "description": "The date and time string value to filter submitters that completed the submission after the specified date and time."
+ },
+ {
+ "name": "completed_before",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "example": "2024-03-06 19:32:20",
+ "description": "The date and time string value to filter submitters that completed the submission before the specified date and time."
+ },
+ {
+ "name": "external_id",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "The unique applications-specific identifier provided for a submitter when initializing a signature request. It allows you to receive only submitters with a specified external id."
+ },
+ {
+ "name": "limit",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The number of submitters to return. Default value is 10. Maximum value is 100."
+ },
+ {
+ "name": "after",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submitter to start the list from. It allows you to receive only submitters with id greater than the specified value. Pass ID value from the `pagination.next` response to load the next batch of submitters."
+ },
+ {
+ "name": "before",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submitter to end the list with. It allows you to receive only submitters with id less than the specified value."
+ }
+ ]
+}
+```
+
+### Get a submitter
+
+The API endpoint provides functionality to retrieve information about a submitter, along with the submitter documents and field values.
+
+```ruby
+require "wabosign"
+
+Wabosign.key = ENV["DOCUSEAL_API_KEY"]
+Wabosign.url = "https://api.wabosign.com"
+
+Wabosign.get_submitter(500001)
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submitters"
+ ],
+ "summary": "Get a submitter",
+ "operationId": "getSubmitter",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submitter.",
+ "example": 500001
+ }
+ ]
+}
+```
+
+### Update a submitter
+
+The API endpoint allows you to update submitter details, pre-fill or update field values and re-send emails. Related Guides Automatically sign documents via API
+
+```ruby
+require "wabosign"
+
+Wabosign.key = ENV["DOCUSEAL_API_KEY"]
+Wabosign.url = "https://api.wabosign.com"
+
+Wabosign.update_submitter(500001, {
+ email: "john.doe@example.com",
+ fields: [
+ {
+ name: "First Name",
+ default_value: "Acme"
+ }
+ ]
+})
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submitters"
+ ],
+ "summary": "Update a submitter",
+ "operationId": "updateSubmitter",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submitter.",
+ "example": 500001
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the submitter."
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the submitter.",
+ "format": "email",
+ "example": "john.doe@example.com"
+ },
+ "phone": {
+ "type": "string",
+ "description": "The phone number of the submitter, formatted according to the E.164 standard.",
+ "example": "+1234567890"
+ },
+ "values": {
+ "type": "object",
+ "description": "An object with pre-filled values for the submission. Use field names for keys of the object. For more configurations see `fields` param."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this submitter within your app."
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `true` to re-send signature request emails."
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to re-send signature request via phone number SMS.",
+ "default": false
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails."
+ },
+ "completed": {
+ "type": "boolean",
+ "description": "Pass `true` to mark submitter as completed and auto-signed via API."
+ },
+ "metadata": {
+ "type": "object",
+ "description": "Metadata object with additional submitter information.",
+ "example": "{ \"customField\": \"value\" }"
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Submitter specific URL to redirect to after the submission completion."
+ },
+ "require_phone_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require phone 2FA verification via a one-time code sent to the phone number in order to access the documents.",
+ "default": false
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body. Can include the following variables: {{template.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "fields": {
+ "type": "array",
+ "description": "A list of configurations for template document form fields.",
+ "items": {
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document template field name.",
+ "example": "First Name"
+ },
+ "default_value": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ }
+ ]
+ }
+ }
+ ],
+ "description": "Default value of the field. Use base64 encoded file or a public URL to the image file to set default signature or image fields.",
+ "example": "Acme"
+ },
+ "readonly": {
+ "type": "boolean",
+ "description": "Set `true` to make it impossible for the submitter to edit predefined field value.",
+ "default": false
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Set `true` to make the field required."
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### List all templates
+
+The API endpoint provides the ability to retrieve a list of available document templates.
+
+```ruby
+require "wabosign"
+
+Wabosign.key = ENV["DOCUSEAL_API_KEY"]
+Wabosign.url = "https://api.wabosign.com"
+
+Wabosign.list_templates(limit: 10)
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "List all templates",
+ "operationId": "getTemplates",
+ "parameters": [
+ {
+ "name": "q",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter templates based on the name partial match."
+ },
+ {
+ "name": "slug",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter templates by unique slug.",
+ "example": "opaKWh8WWTAcVG"
+ },
+ {
+ "name": "external_id",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "The unique applications-specific identifier provided for the template via API or Embedded template form builder. It allows you to receive only templates with your specified external id."
+ },
+ {
+ "name": "folder",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter templates by folder name."
+ },
+ {
+ "name": "archived",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "boolean"
+ },
+ "description": "Get only archived templates instead of active ones."
+ },
+ {
+ "name": "limit",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The number of templates to return. Default value is 10. Maximum value is 100."
+ },
+ {
+ "name": "after",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the template to start the list from. It allows you to receive only templates with id greater than the specified value. Pass ID value from the `pagination.next` response to load the next batch of templates."
+ },
+ {
+ "name": "before",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the template to end the list with. It allows you to receive only templates with id less than the specified value."
+ }
+ ]
+}
+```
+
+### Get a template
+
+The API endpoint provides the functionality to retrieve information about a document template.
+
+```ruby
+require "wabosign"
+
+Wabosign.key = ENV["DOCUSEAL_API_KEY"]
+Wabosign.url = "https://api.wabosign.com"
+
+Wabosign.get_template(1000001)
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Get a template",
+ "operationId": "getTemplate",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the document template.",
+ "example": 1000001
+ }
+ ]
+}
+```
+
+### Create a template from PDF
+
+The API endpoint provides the functionality to create a fillable document template for a PDF file. Use {{Field Name;role=Signer1;type=date}} text tags to define fillable fields in the document. See https://www.wabosign.com/examples/fieldtags.pdf for more text tag formats. Or specify the exact pixel coordinates of the document fields using `fields` param. Related Guides Use embedded text field tags to create a fillable form
+
+
+```ruby
+require "wabosign"
+
+Wabosign.key = ENV["DOCUSEAL_API_KEY"]
+Wabosign.url = "https://api.wabosign.com"
+
+Wabosign.create_template_from_pdf({
+ name: "Test PDF",
+ documents: [
+ {
+ name: "string",
+ file: "base64",
+ fields: [
+ {
+ name: "string",
+ areas: [
+ {
+ x: 0,
+ y: 0,
+ w: 0,
+ h: 0,
+ page: 1
+ }
+ ]
+ }
+ ]
+ }
+ ]
+})
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Create a template from PDF",
+ "operationId": "createTemplateFromPdf",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "documents"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the template",
+ "example": "Test PDF"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The folder's name to which the template should be created."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this template within your app. Existing template with specified `external_id` will be updated with a new PDF.",
+ "example": "unique-key"
+ },
+ "shared_link": {
+ "type": "boolean",
+ "description": "set to `true` to make the template available via a shared link. This will allow anyone with the link to create a submission from this template.",
+ "default": true
+ },
+ "documents": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "name",
+ "file"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document."
+ },
+ "file": {
+ "example": "base64",
+ "type": "string",
+ "format": "base64",
+ "description": "Base64-encoded content of the PDF file or downloadable file URL."
+ },
+ "fields": {
+ "type": "array",
+ "description": "Fields are optional if you use {{...}} text tags to define fields in the document.",
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the field."
+ },
+ "type": {
+ "type": "string",
+ "description": "Type of the field (e.g., text, signature, date, initials).",
+ "enum": [
+ "heading",
+ "text",
+ "signature",
+ "initials",
+ "date",
+ "number",
+ "image",
+ "checkbox",
+ "multiple",
+ "file",
+ "radio",
+ "select",
+ "cells",
+ "stamp",
+ "payment",
+ "phone",
+ "verification",
+ "strikethrough"
+ ]
+ },
+ "role": {
+ "type": "string",
+ "description": "Role name of the signer."
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Indicates if the field is required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "areas": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "x",
+ "y",
+ "w",
+ "h",
+ "page"
+ ],
+ "properties": {
+ "x": {
+ "type": "number",
+ "description": "X-coordinate of the field area."
+ },
+ "y": {
+ "type": "number",
+ "description": "Y-coordinate of the field area."
+ },
+ "w": {
+ "type": "number",
+ "description": "Width of the field area."
+ },
+ "h": {
+ "type": "number",
+ "description": "Height of the field area."
+ },
+ "page": {
+ "type": "integer",
+ "description": "Page number of the field area. Starts from 1.",
+ "example": 1
+ },
+ "option": {
+ "type": "string",
+ "description": "Option string value for 'radio' and 'multiple' select field types."
+ }
+ }
+ }
+ },
+ "options": {
+ "type": "array",
+ "description": "An array of option values for 'select' field type.",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "Option A",
+ "Option B"
+ ]
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "flatten": {
+ "type": "boolean",
+ "description": "Remove PDF form fields from the documents.",
+ "default": false
+ },
+ "remove_tags": {
+ "type": "boolean",
+ "description": "Pass `false` to disable the removal of {{text}} tags from the PDF. This can be used along with transparent text tags for faster and more robust PDF processing.",
+ "default": true
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Create a template from Word DOCX
+
+The API endpoint provides the functionality to create a fillable document template for existing Microsoft Word document. Use {{Field Name;role=Signer1;type=date}} text tags to define fillable fields in the document. See https://www.wabosign.com/examples/fieldtags.docx for more text tag formats. Or specify the exact pixel coordinates of the document fields using `fields` param. Related Guides Use embedded text field tags to create a fillable form
+
+
+```ruby
+require "wabosign"
+
+Wabosign.key = ENV["DOCUSEAL_API_KEY"]
+Wabosign.url = "https://api.wabosign.com"
+
+Wabosign.create_template_from_docx({
+ name: "Test DOCX",
+ documents: [
+ {
+ name: "string",
+ file: "base64"
+ }
+ ]
+})
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Create a template from Word DOCX",
+ "operationId": "createTemplateFromDocx",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "documents"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the template",
+ "example": "Test DOCX"
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this template within your app. Existing template with specified `external_id` will be updated with a new document.",
+ "example": "unique-key"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The folder's name to which the template should be created."
+ },
+ "shared_link": {
+ "type": "boolean",
+ "description": "set to `true` to make the template available via a shared link. This will allow anyone with the link to create a submission from this template.",
+ "default": true
+ },
+ "documents": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "name",
+ "file"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document."
+ },
+ "file": {
+ "type": "string",
+ "example": "base64",
+ "format": "base64",
+ "description": "Base64-encoded content of the DOCX file or downloadable file URL"
+ },
+ "fields": {
+ "description": "Fields are optional if you use {{...}} text tags to define fields in the document.",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the field."
+ },
+ "type": {
+ "type": "string",
+ "description": "Type of the field (e.g., text, signature, date, initials).",
+ "enum": [
+ "heading",
+ "text",
+ "signature",
+ "initials",
+ "date",
+ "number",
+ "image",
+ "checkbox",
+ "multiple",
+ "file",
+ "radio",
+ "select",
+ "cells",
+ "stamp",
+ "payment",
+ "phone",
+ "verification",
+ "strikethrough"
+ ]
+ },
+ "role": {
+ "type": "string",
+ "description": "Role name of the signer."
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Indicates if the field is required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "areas": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "x": {
+ "type": "number",
+ "description": "X-coordinate of the field area."
+ },
+ "y": {
+ "type": "number",
+ "description": "Y-coordinate of the field area."
+ },
+ "w": {
+ "type": "number",
+ "description": "Width of the field area."
+ },
+ "h": {
+ "type": "number",
+ "description": "Height of the field area."
+ },
+ "page": {
+ "type": "integer",
+ "description": "Page number of the field area. Starts from 1."
+ },
+ "option": {
+ "type": "string",
+ "description": "Option string value for 'radio' and 'multiple' select field types."
+ }
+ }
+ }
+ },
+ "options": {
+ "type": "array",
+ "description": "An array of option values for 'select' field type.",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "Option A",
+ "Option B"
+ ]
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Create a template from HTML
+
+The API endpoint provides the functionality to seamlessly generate a PDF document template by utilizing the provided HTML content while incorporating pre-defined fields. Related Guides Create PDF document fillable form with HTML
+
+```ruby
+require "wabosign"
+
+Wabosign.key = ENV["DOCUSEAL_API_KEY"]
+Wabosign.url = "https://api.wabosign.com"
+
+Wabosign.create_template_from_html({
+ html: "
Lorem Ipsum is simply dummy text of the
+
+
+and typesetting industry
Lorem Ipsum is simply dummy text of the\n\n\nand typesetting industry
\n"
+ },
+ "html_header": {
+ "type": "string",
+ "description": "HTML template of the header to be displayed on every page."
+ },
+ "html_footer": {
+ "type": "string",
+ "description": "HTML template of the footer to be displayed on every page."
+ },
+ "name": {
+ "type": "string",
+ "description": "Template name. Random uuid will be assigned when not specified.",
+ "example": "Test Template"
+ },
+ "size": {
+ "type": "string",
+ "default": "Letter",
+ "description": "Page size. Letter 8.5 x 11 will be assigned when not specified.",
+ "enum": [
+ "Letter",
+ "Legal",
+ "Tabloid",
+ "Ledger",
+ "A0",
+ "A1",
+ "A2",
+ "A3",
+ "A4",
+ "A5",
+ "A6"
+ ],
+ "example": "A4"
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this template within your app. Existing template with specified `external_id` will be updated with a new HTML.",
+ "example": "714d974e-83d8-11ee-b962-0242ac120002"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The folder's name to which the template should be created."
+ },
+ "shared_link": {
+ "type": "boolean",
+ "description": "set to `true` to make the template available via a shared link. This will allow anyone with the link to create a submission from this template.",
+ "default": true
+ },
+ "documents": {
+ "type": "array",
+ "description": "The list of documents built from HTML. Can be used to create a template with multiple documents. Leave `documents` param empty when using a top-level `html` param for a template with a single document.",
+ "items": {
+ "type": "object",
+ "required": [
+ "html"
+ ],
+ "properties": {
+ "html": {
+ "type": "string",
+ "description": "HTML template with field tags.",
+ "example": "
Lorem Ipsum is simply dummy text of the\n\n\nand typesetting industry
\n"
+ },
+ "name": {
+ "type": "string",
+ "description": "Document name. Random uuid will be assigned when not specified.",
+ "example": "Test Document"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Clone a template
+
+The API endpoint allows you to clone existing template into a new template.
+
+```ruby
+require "wabosign"
+
+Wabosign.key = ENV["DOCUSEAL_API_KEY"]
+Wabosign.url = "https://api.wabosign.com"
+
+Wabosign.clone_template(1000001, {
+ name: "Cloned Template"
+})
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Clone a template",
+ "operationId": "cloneTemplate",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the documents template.",
+ "example": 1000001
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Template name. Existing name with (Clone) suffix will be used if not specified.",
+ "example": "Cloned Template"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The folder's name to which the template should be cloned."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this template within your app."
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Merge templates
+
+The API endpoint allows you to merge multiple templates with documents and fields into a new combined template.
+
+```ruby
+require "wabosign"
+
+Wabosign.key = ENV["DOCUSEAL_API_KEY"]
+Wabosign.url = "https://api.wabosign.com"
+
+Wabosign.merge_templates({
+ template_ids: [
+ 321,
+ 432
+ ],
+ name: "Merged Template"
+})
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Merge templates",
+ "operationId": "mergeTemplate",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "template_ids"
+ ],
+ "properties": {
+ "template_ids": {
+ "type": "array",
+ "description": "An array of template ids to merge into a new template.",
+ "items": {
+ "type": "integer"
+ },
+ "example": [
+ 321,
+ 432
+ ]
+ },
+ "name": {
+ "type": "string",
+ "description": "Template name. Existing name with (Merged) suffix will be used if not specified.",
+ "example": "Merged Template"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The name of the folder in which the merged template should be placed."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this template within your app."
+ },
+ "shared_link": {
+ "type": "boolean",
+ "description": "set to `true` to make the template available via a shared link. This will allow anyone with the link to create a submission from this template.",
+ "default": true
+ },
+ "roles": {
+ "type": "array",
+ "description": "An array of submitter role names to be used in the merged template.",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "Agent",
+ "Customer"
+ ]
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Update a template
+
+The API endpoint provides the functionality to move a document template to a different folder and update the name of the template.
+
+```ruby
+require "wabosign"
+
+Wabosign.key = ENV["DOCUSEAL_API_KEY"]
+Wabosign.url = "https://api.wabosign.com"
+
+Wabosign.update_template(1000001, {
+ name: "New Document Name",
+ folder_name: "New Folder"
+})
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Update a template",
+ "operationId": "updateTemplate",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the document template.",
+ "example": 1000001
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the template",
+ "example": "New Document Name"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The folder's name to which the template should be moved.",
+ "example": "New Folder"
+ },
+ "roles": {
+ "type": "array",
+ "description": "An array of submitter role names to update the template with.",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "Agent",
+ "Customer"
+ ]
+ },
+ "archived": {
+ "type": "boolean",
+ "description": "Set `false` to unarchive template."
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Update template documents
+
+The API endpoint allows you to add, remove or replace documents in the template with provided PDF/DOCX file or HTML content.
+
+```ruby
+require "wabosign"
+
+Wabosign.key = ENV["DOCUSEAL_API_KEY"]
+Wabosign.url = "https://api.wabosign.com"
+
+Wabosign.update_template_documents(1000001, {
+ documents: [
+ {
+ file: "string"
+ }
+ ]
+})
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Update template documents",
+ "operationId": "addDocumentToTemplate",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the documents template.",
+ "example": 1000001
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "documents": {
+ "type": "array",
+ "description": "The list of documents to add or replace in the template.",
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document name. Random uuid will be assigned when not specified.",
+ "example": "Test Template"
+ },
+ "file": {
+ "type": "string",
+ "format": "base64",
+ "description": "Base64-encoded content of the PDF or DOCX file or downloadable file URL. Leave it empty if you create a new document using HTML param."
+ },
+ "html": {
+ "type": "string",
+ "description": "HTML template with field tags. Leave it empty if you add a document via PDF or DOCX base64 encoded file param or URL."
+ },
+ "position": {
+ "type": "integer",
+ "description": "Position of the document. By default will be added as the last document in the template.",
+ "example": 0
+ },
+ "replace": {
+ "type": "boolean",
+ "default": false,
+ "description": "Set to `true` to replace existing document with a new file at `position`. Existing document fields will be transferred to the new document if it doesn't contain any fields."
+ },
+ "remove": {
+ "type": "boolean",
+ "default": false,
+ "description": "Set to `true` to remove existing document at given `position` or with given `name`."
+ }
+ }
+ }
+ },
+ "merge": {
+ "type": "boolean",
+ "default": false,
+ "description": "Set to `true` to merge all existing and new documents into a single PDF document in the template."
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Archive a template
+
+The API endpoint allows you to archive a document template.
+
+```ruby
+require "wabosign"
+
+Wabosign.key = ENV["DOCUSEAL_API_KEY"]
+Wabosign.url = "https://api.wabosign.com"
+
+Wabosign.archive_template(1000001)
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Archive a template",
+ "operationId": "archiveTemplate",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the document template.",
+ "example": 1000001
+ }
+ ]
+}
+```
+
diff --git a/docs/api/shell.md b/docs/api/shell.md
new file mode 100644
index 00000000..93fe87f1
--- /dev/null
+++ b/docs/api/shell.md
@@ -0,0 +1,3874 @@
+### List all submissions
+
+The API endpoint provides the ability to retrieve a list of available submissions.
+
+```shell
+curl --request GET \
+ --url https://api.wabosign.com/submissions \
+ --header 'X-Auth-Token: API_KEY'
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "List all submissions",
+ "operationId": "getSubmissions",
+ "parameters": [
+ {
+ "name": "template_id",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The template ID allows you to receive only the submissions created from that specific template."
+ },
+ {
+ "name": "status",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string",
+ "enum": [
+ "pending",
+ "completed",
+ "declined",
+ "expired"
+ ]
+ },
+ "description": "Filter submissions by status."
+ },
+ {
+ "name": "q",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter submissions based on submitters name, email or phone partial match."
+ },
+ {
+ "name": "slug",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter submissions by unique slug.",
+ "example": "NtLDQM7eJX2ZMd"
+ },
+ {
+ "name": "template_folder",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter submissions by template folder name."
+ },
+ {
+ "name": "archived",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "boolean"
+ },
+ "description": "Returns only archived submissions when `true` and only active submissions when `false`."
+ },
+ {
+ "name": "limit",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The number of submissions to return. Default value is 10. Maximum value is 100."
+ },
+ {
+ "name": "after",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submission to start the list from. It allows you to receive only submissions with an ID greater than the specified value. Pass ID value from the `pagination.next` response to load the next batch of submissions."
+ },
+ {
+ "name": "before",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submission that marks the end of the list. It allows you to receive only submissions with an ID less than the specified value."
+ }
+ ]
+}
+```
+
+### Get a submission
+
+The API endpoint provides the functionality to retrieve information about a submission.
+
+```shell
+curl --request GET \
+ --url https://api.wabosign.com/submissions/1001 \
+ --header 'X-Auth-Token: API_KEY'
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Get a submission",
+ "operationId": "getSubmission",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submission.",
+ "example": 1001
+ }
+ ]
+}
+```
+
+### Get submission documents
+
+This endpoint returns a list of partially filled documents for a submission. If the submission has been completed, the final signed documents are returned.
+
+```shell
+curl --request GET \
+ --url https://api.wabosign.com/submissions/1001/documents \
+ --header 'X-Auth-Token: API_KEY'
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Get submission documents",
+ "operationId": "getSubmissionDocuments",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submission.",
+ "example": 1001
+ }
+ ]
+}
+```
+
+### Create a submission
+
+This API endpoint allows you to create signature requests (submissions) for a document template and send them to the specified submitters (signers). Related Guides Send documents for signature via API Pre-fill PDF document form fields with API
+
+```shell
+curl --request POST \
+ --url https://api.wabosign.com/submissions \
+ --header 'X-Auth-Token: API_KEY' \
+ --header 'content-type: application/json' \
+ --data '{"template_id":1000001,"send_email":true,"submitters":[{"role":"First Party","email":"john.doe@example.com"}]}'
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Create a submission",
+ "operationId": "createSubmission",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "template_id",
+ "submitters"
+ ],
+ "properties": {
+ "template_id": {
+ "type": "integer",
+ "description": "The unique identifier of the template. Document template forms can be created via the Web UI, PDF and DOCX API, or HTML API.",
+ "example": 1000001
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "order": {
+ "type": "string",
+ "description": "Pass 'random' to send signature request emails to all parties right away. The order is 'preserved' by default so the second party will receive a signature request email only after the document is signed by the first party.",
+ "default": "preserved",
+ "enum": [
+ "preserved",
+ "random"
+ ]
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Specify URL to redirect to after the submission completion."
+ },
+ "bcc_completed": {
+ "type": "string",
+ "description": "Specify BCC address to send signed documents to after the completion."
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails."
+ },
+ "expire_at": {
+ "type": "string",
+ "description": "Specify the expiration date and time after which the submission becomes unavailable for signature.",
+ "example": "2024-09-01 12:00:00 UTC"
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body. Can include the following variables: {{template.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "submitters": {
+ "type": "array",
+ "description": "The list of submitters for the submission.",
+ "items": {
+ "type": "object",
+ "required": [
+ "email"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the submitter."
+ },
+ "role": {
+ "type": "string",
+ "description": "The role name or title of the submitter.",
+ "example": "First Party"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the submitter.",
+ "format": "email",
+ "example": "john.doe@example.com"
+ },
+ "phone": {
+ "type": "string",
+ "description": "The phone number of the submitter, formatted according to the E.164 standard.",
+ "example": "+1234567890"
+ },
+ "values": {
+ "type": "object",
+ "description": "An object with pre-filled values for the submission. Use field names for keys of the object. For more configurations see `fields` param."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this submitter within your app."
+ },
+ "completed": {
+ "type": "boolean",
+ "description": "Pass `true` to mark submitter as completed and auto-signed via API."
+ },
+ "metadata": {
+ "type": "object",
+ "description": "Metadata object with additional submitter information.",
+ "example": "{ \"customField\": \"value\" }"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending only for this submitter.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails for this submitter."
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Submitter specific URL to redirect to after the submission completion."
+ },
+ "order": {
+ "type": "integer",
+ "description": "The order of the submitter in the workflow (e.g., 0 for the first signer, 1 for the second, etc.). Use the same order number to create order groups. By default, submitters are ordered as in the submitters array."
+ },
+ "require_phone_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require phone 2FA verification via a one-time code sent to the phone number in order to access the documents.",
+ "default": false
+ },
+ "require_email_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require email 2FA verification via a one-time code sent to the email address in order to access the documents.",
+ "default": false
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject for the submitter."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body for the submitter. Can include the following variables: {{template.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "fields": {
+ "type": "array",
+ "description": "A list of configurations for template document form fields.",
+ "items": {
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document template field name.",
+ "example": "First Name"
+ },
+ "default_value": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ }
+ ]
+ }
+ }
+ ],
+ "description": "Default value of the field. Use base64 encoded file or a public URL to the image file to set default signature or image fields.",
+ "example": "Acme"
+ },
+ "readonly": {
+ "type": "boolean",
+ "description": "Set `true` to make it impossible for the submitter to edit predefined field value.",
+ "default": false
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Set `true` to make the field required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "roles": {
+ "type": "array",
+ "description": "A list of roles for the submitter. Use this param to merge multiple roles into one submitter.",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Create a submission from PDF
+
+The API endpoint provides the functionality to create one-off submission request from a PDF. Use {{Field Name;role=Signer1;type=date}} text tags to define fillable fields in the document. See https://www.wabosign.com/examples/fieldtags.pdf for more text tag formats. Or specify the exact pixel coordinates of the document fields using `fields` param. Related Guides Use embedded text field tags to create a fillable form
+
+
+```shell
+curl --request POST \
+ --url https://api.wabosign.com/submissions/pdf \
+ --header 'X-Auth-Token: API_KEY' \
+ --header 'content-type: application/json' \
+ --data '{"name":"Test Submission Document","documents":[{"name":"string","file":"base64","fields":[{"name":"string","areas":[{"x":0,"y":0,"w":0,"h":0,"page":1}]}]}],"submitters":[{"role":"First Party","email":"john.doe@example.com"}]}'
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Create a submission from PDF",
+ "operationId": "createSubmissionFromPdf",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "documents",
+ "submitters"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document submission.",
+ "example": "Test Submission Document"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "order": {
+ "type": "string",
+ "description": "Pass 'random' to send signature request emails to all parties right away. The order is 'preserved' by default so the second party will receive a signature request email only after the document is signed by the first party.",
+ "default": "preserved",
+ "enum": [
+ "preserved",
+ "random"
+ ]
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Specify URL to redirect to after the submission completion."
+ },
+ "bcc_completed": {
+ "type": "string",
+ "description": "Specify BCC address to send signed documents to after the completion."
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails."
+ },
+ "expire_at": {
+ "type": "string",
+ "description": "Specify the expiration date and time after which the submission becomes unavailable for signature.",
+ "example": "2024-09-01 12:00:00 UTC"
+ },
+ "template_ids": {
+ "type": "array",
+ "description": "An optional array of template IDs to use in the submission along with the provided documents. This can be used to create multi-document submissions when some of the required documents exist within templates.",
+ "items": {
+ "type": "integer",
+ "description": "The ID of the template to use for the submission."
+ }
+ },
+ "documents": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "name",
+ "file"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document."
+ },
+ "file": {
+ "example": "base64",
+ "type": "string",
+ "format": "base64",
+ "description": "Base64-encoded content of the PDF file or downloadable file URL."
+ },
+ "fields": {
+ "type": "array",
+ "description": "Fields are optional if you use {{...}} text tags to define fields in the document.",
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the field."
+ },
+ "type": {
+ "type": "string",
+ "description": "Type of the field (e.g., text, signature, date, initials).",
+ "enum": [
+ "heading",
+ "text",
+ "signature",
+ "initials",
+ "date",
+ "number",
+ "image",
+ "checkbox",
+ "multiple",
+ "file",
+ "radio",
+ "select",
+ "cells",
+ "stamp",
+ "payment",
+ "phone",
+ "verification",
+ "strikethrough"
+ ]
+ },
+ "role": {
+ "type": "string",
+ "description": "Role name of the signer."
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Indicates if the field is required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "areas": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "x",
+ "y",
+ "w",
+ "h",
+ "page"
+ ],
+ "properties": {
+ "x": {
+ "type": "number",
+ "description": "X-coordinate of the field area."
+ },
+ "y": {
+ "type": "number",
+ "description": "Y-coordinate of the field area."
+ },
+ "w": {
+ "type": "number",
+ "description": "Width of the field area."
+ },
+ "h": {
+ "type": "number",
+ "description": "Height of the field area."
+ },
+ "page": {
+ "type": "integer",
+ "description": "Page number of the field area. Starts from 1.",
+ "example": 1
+ },
+ "option": {
+ "type": "string",
+ "description": "Option string value for 'radio' and 'multiple' select field types."
+ }
+ }
+ }
+ },
+ "options": {
+ "type": "array",
+ "description": "An array of option values for 'select' field type.",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "Option A",
+ "Option B"
+ ]
+ }
+ }
+ }
+ },
+ "position": {
+ "type": "integer",
+ "description": "Document position in the submission. If not specified, the document will be added in the order it appears in the documents array."
+ }
+ }
+ }
+ },
+ "submitters": {
+ "type": "array",
+ "description": "The list of submitters for the submission.",
+ "items": {
+ "type": "object",
+ "required": [
+ "email"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the submitter."
+ },
+ "role": {
+ "type": "string",
+ "description": "The role name or title of the submitter.",
+ "example": "First Party"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the submitter.",
+ "format": "email",
+ "example": "john.doe@example.com"
+ },
+ "phone": {
+ "type": "string",
+ "description": "The phone number of the submitter, formatted according to the E.164 standard.",
+ "example": "+1234567890"
+ },
+ "values": {
+ "type": "object",
+ "description": "An object with pre-filled values for the submission. Use field names for keys of the object. For more configurations see `fields` param."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this submitter within your app."
+ },
+ "completed": {
+ "type": "boolean",
+ "description": "Pass `true` to mark submitter as completed and auto-signed via API."
+ },
+ "metadata": {
+ "type": "object",
+ "description": "Metadata object with additional submitter information.",
+ "example": "{ \"customField\": \"value\" }"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending only for this submitter.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails for this submitter."
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Submitter specific URL to redirect to after the submission completion."
+ },
+ "order": {
+ "type": "integer",
+ "description": "The order of the submitter in the workflow (e.g., 0 for the first signer, 1 for the second, etc.). Use the same order number to create order groups. By default, submitters are ordered as in the submitters array."
+ },
+ "require_phone_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require phone 2FA verification via a one-time code sent to the phone number in order to access the documents.",
+ "default": false
+ },
+ "require_email_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require email 2FA verification via a one-time code sent to the email address in order to access the documents.",
+ "default": false
+ },
+ "invite_by": {
+ "type": "string",
+ "description": "Set the role name of the previous party that should invite this party via email."
+ },
+ "fields": {
+ "type": "array",
+ "description": "A list of configurations for document form fields.",
+ "items": {
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document field name.",
+ "example": "First Name"
+ },
+ "default_value": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ }
+ ]
+ }
+ }
+ ],
+ "description": "Default value of the field. Use base64 encoded file or a public URL to the image file to set default signature or image fields.",
+ "example": "Acme"
+ },
+ "readonly": {
+ "type": "boolean",
+ "description": "Set `true` to make it impossible for the submitter to edit predefined field value.",
+ "default": false
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Set `true` to make the field required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "roles": {
+ "type": "array",
+ "description": "A list of roles for the submitter. Use this param to merge multiple roles into one submitter.",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body. Can include the following variables: {{submission.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "flatten": {
+ "type": "boolean",
+ "description": "Remove PDF form fields from the documents.",
+ "default": false
+ },
+ "merge_documents": {
+ "type": "boolean",
+ "description": "Set `true` to merge the documents into a single PDF file.",
+ "default": false
+ },
+ "remove_tags": {
+ "type": "boolean",
+ "description": "Pass `false` to disable the removal of {{text}} tags from the PDF. This can be used along with transparent text tags for faster and more robust PDF processing.",
+ "default": true
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Create a submission from DOCX
+
+The API endpoint provides functionality to create a one-off submission request from a DOCX file with dynamic content variables. Use [[variable_name]] text tags to define dynamic content variables in the document. See https://www.wabosign.com/examples/demo_template.docx for the specific text variable syntax, including dynamic content tables and list. You can also use the {{signature}} field syntax to define fillable fields, as in a PDF. Related Guides Use dynamic content variables in DOCX to create personalized documents
+
+```shell
+curl --request POST \
+ --url https://api.wabosign.com/submissions/docx \
+ --header 'X-Auth-Token: API_KEY' \
+ --header 'content-type: application/json' \
+ --data '{"name":"Test Submission Document","variables":{"variable_name":"value"},"documents":[{"name":"string","file":"base64"}],"submitters":[{"role":"First Party","email":"john.doe@example.com"}]}'
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Create a submission from DOCX",
+ "operationId": "createSubmissionFromDocx",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "documents",
+ "submitters"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document submission.",
+ "example": "Test Submission Document"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "variables": {
+ "type": "object",
+ "description": "Dynamic content variables object. Variable values can be strings, numbers, arrays, objects, or HTML content used to generate styled text, paragraphs, and tables in DOCX.",
+ "example": {
+ "variable_name": "value"
+ }
+ },
+ "order": {
+ "type": "string",
+ "description": "Pass 'random' to send signature request emails to all parties right away. The order is 'preserved' by default so the second party will receive a signature request email only after the document is signed by the first party.",
+ "default": "preserved",
+ "enum": [
+ "preserved",
+ "random"
+ ]
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Specify URL to redirect to after the submission completion."
+ },
+ "bcc_completed": {
+ "type": "string",
+ "description": "Specify BCC address to send signed documents to after the completion."
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails."
+ },
+ "expire_at": {
+ "type": "string",
+ "description": "Specify the expiration date and time after which the submission becomes unavailable for signature.",
+ "example": "2024-09-01 12:00:00 UTC"
+ },
+ "template_ids": {
+ "type": "array",
+ "description": "An optional array of template IDs to use in the submission along with the provided documents. This can be used to create multi-document submissions when some of the required documents exist within templates.",
+ "items": {
+ "type": "integer",
+ "description": "The ID of the template to use for the submission."
+ }
+ },
+ "documents": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "name",
+ "file"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document."
+ },
+ "file": {
+ "example": "base64",
+ "type": "string",
+ "format": "base64",
+ "description": "Base64-encoded content of the PDF or DOCX file or downloadable file URL."
+ },
+ "position": {
+ "type": "integer",
+ "description": "Document position in the submission. If not specified, the document will be added in the order it appears in the documents array."
+ }
+ }
+ }
+ },
+ "submitters": {
+ "type": "array",
+ "description": "The list of submitters for the submission.",
+ "items": {
+ "type": "object",
+ "required": [
+ "email"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the submitter."
+ },
+ "role": {
+ "type": "string",
+ "description": "The role name or title of the submitter.",
+ "example": "First Party"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the submitter.",
+ "format": "email",
+ "example": "john.doe@example.com"
+ },
+ "phone": {
+ "type": "string",
+ "description": "The phone number of the submitter, formatted according to the E.164 standard.",
+ "example": "+1234567890"
+ },
+ "values": {
+ "type": "object",
+ "description": "An object with pre-filled values for the submission. Use field names for keys of the object. For more configurations see `fields` param."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this submitter within your app."
+ },
+ "completed": {
+ "type": "boolean",
+ "description": "Pass `true` to mark submitter as completed and auto-signed via API."
+ },
+ "metadata": {
+ "type": "object",
+ "description": "Metadata object with additional submitter information.",
+ "example": "{ \"customField\": \"value\" }"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending only for this submitter.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails for this submitter."
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Submitter specific URL to redirect to after the submission completion."
+ },
+ "order": {
+ "type": "integer",
+ "description": "The order of the submitter in the workflow (e.g., 0 for the first signer, 1 for the second, etc.). Use the same order number to create order groups. By default, submitters are ordered as in the submitters array."
+ },
+ "require_phone_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require phone 2FA verification via a one-time code sent to the phone number in order to access the documents.",
+ "default": false
+ },
+ "require_email_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require email 2FA verification via a one-time code sent to the email address in order to access the documents.",
+ "default": false
+ },
+ "invite_by": {
+ "type": "string",
+ "description": "Set the role name of the previous party that should invite this party via email."
+ },
+ "fields": {
+ "type": "array",
+ "description": "A list of configurations for document form fields.",
+ "items": {
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document field name.",
+ "example": "First Name"
+ },
+ "default_value": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ }
+ ]
+ }
+ }
+ ],
+ "description": "Default value of the field. Use base64 encoded file or a public URL to the image file to set default signature or image fields.",
+ "example": "Acme"
+ },
+ "readonly": {
+ "type": "boolean",
+ "description": "Set `true` to make it impossible for the submitter to edit predefined field value.",
+ "default": false
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Set `true` to make the field required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "roles": {
+ "type": "array",
+ "description": "A list of roles for the submitter. Use this param to merge multiple roles into one submitter.",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body. Can include the following variables: {{submission.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "merge_documents": {
+ "type": "boolean",
+ "description": "Set `true` to merge the documents into a single PDF file.",
+ "default": false
+ },
+ "remove_tags": {
+ "type": "boolean",
+ "description": "Pass `false` to disable the removal of {{text}} tags from the PDF. This can be used along with transparent text tags for faster and more robust PDF processing.",
+ "default": true
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Create a submission from HTML
+
+This API endpoint allows you to create a one-off submission request document using the provided HTML content, with special field tags rendered as a fillable and signable form. Related Guides Create PDF document fillable form with HTML
+
+```shell
+curl --request POST \
+ --url https://api.wabosign.com/submissions/html \
+ --header 'X-Auth-Token: API_KEY' \
+ --header 'content-type: application/json' \
+ --data '{"name":"Test Submission Document","documents":[{"name":"Test Document","html":"
Lorem Ipsum is simply dummy text of the\n\n\nand typesetting industry
\n"}],"submitters":[{"role":"First Party","email":"john.doe@example.com"}]}'
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Create a submission from HTML",
+ "operationId": "createSubmissionFromHtml",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "documents",
+ "submitters"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document submission",
+ "example": "Test Submission Document"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "order": {
+ "type": "string",
+ "description": "Pass 'random' to send signature request emails to all parties right away. The order is 'preserved' by default so the second party will receive a signature request email only after the document is signed by the first party.",
+ "default": "preserved",
+ "enum": [
+ "preserved",
+ "random"
+ ]
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Specify URL to redirect to after the submission completion."
+ },
+ "bcc_completed": {
+ "type": "string",
+ "description": "Specify BCC address to send signed documents to after the completion."
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails."
+ },
+ "expire_at": {
+ "type": "string",
+ "description": "Specify the expiration date and time after which the submission becomes unavailable for signature.",
+ "example": "2024-09-01 12:00:00 UTC"
+ },
+ "template_ids": {
+ "type": "array",
+ "description": "An optional array of template IDs to use in the submission along with the provided documents. This can be used to create multi-document submissions when some of the required documents exist within templates.",
+ "items": {
+ "type": "integer",
+ "description": "The ID of the template to use for the submission."
+ }
+ },
+ "documents": {
+ "type": "array",
+ "description": "The list of documents built from HTML. Can be used to create a submission with multiple documents.",
+ "items": {
+ "type": "object",
+ "required": [
+ "html"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document name. Random uuid will be assigned when not specified.",
+ "example": "Test Document"
+ },
+ "html": {
+ "type": "string",
+ "description": "HTML document content with field tags.",
+ "example": "
Lorem Ipsum is simply dummy text of the\n\n\nand typesetting industry
\n"
+ },
+ "html_header": {
+ "type": "string",
+ "description": "HTML document content of the header to be displayed on every page."
+ },
+ "html_footer": {
+ "type": "string",
+ "description": "HTML document content of the footer to be displayed on every page."
+ },
+ "size": {
+ "type": "string",
+ "default": "Letter",
+ "description": "Page size. Letter 8.5 x 11 will be assigned when not specified.",
+ "enum": [
+ "Letter",
+ "Legal",
+ "Tabloid",
+ "Ledger",
+ "A0",
+ "A1",
+ "A2",
+ "A3",
+ "A4",
+ "A5",
+ "A6"
+ ],
+ "example": "A4"
+ },
+ "position": {
+ "type": "integer",
+ "description": "Document position in the submission. If not specified, the document will be added in the order it appears in the documents array."
+ }
+ }
+ }
+ },
+ "submitters": {
+ "type": "array",
+ "description": "The list of submitters for the submission.",
+ "items": {
+ "type": "object",
+ "required": [
+ "email"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the submitter."
+ },
+ "role": {
+ "type": "string",
+ "description": "The role name or title of the submitter.",
+ "example": "First Party"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the submitter.",
+ "format": "email",
+ "example": "john.doe@example.com"
+ },
+ "phone": {
+ "type": "string",
+ "description": "The phone number of the submitter, formatted according to the E.164 standard.",
+ "example": "+1234567890"
+ },
+ "values": {
+ "type": "object",
+ "description": "An object with pre-filled values for the submission. Use field names for keys of the object. For more configurations see `fields` param."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this submitter within your app."
+ },
+ "completed": {
+ "type": "boolean",
+ "description": "Pass `true` to mark submitter as completed and auto-signed via API."
+ },
+ "metadata": {
+ "type": "object",
+ "description": "Metadata object with additional submitter information.",
+ "example": "{ \"customField\": \"value\" }"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending only for this submitter.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails for this submitter."
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Submitter specific URL to redirect to after the submission completion."
+ },
+ "order": {
+ "type": "integer",
+ "description": "The order of the submitter in the workflow (e.g., 0 for the first signer, 1 for the second, etc.). Use the same order number to create order groups. By default, submitters are ordered as in the submitters array."
+ },
+ "require_phone_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require phone 2FA verification via a one-time code sent to the phone number in order to access the documents.",
+ "default": false
+ },
+ "require_email_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require email 2FA verification via a one-time code sent to the email address in order to access the documents.",
+ "default": false
+ },
+ "invite_by": {
+ "type": "string",
+ "description": "Set the role name of the previous party that should invite this party via email."
+ },
+ "fields": {
+ "type": "array",
+ "description": "A list of configurations for document form fields.",
+ "items": {
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document field name.",
+ "example": "First Name"
+ },
+ "default_value": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ }
+ ]
+ }
+ }
+ ],
+ "description": "Default value of the field. Use base64 encoded file or a public URL to the image file to set default signature or image fields.",
+ "example": "Acme"
+ },
+ "readonly": {
+ "type": "boolean",
+ "description": "Set `true` to make it impossible for the submitter to edit predefined field value.",
+ "default": false
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Set `true` to make the field required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "roles": {
+ "type": "array",
+ "description": "A list of roles for the submitter. Use this param to merge multiple roles into one submitter.",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body. Can include the following variables: {{submission.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "merge_documents": {
+ "type": "boolean",
+ "description": "Set `true` to merge the documents into a single PDF file.",
+ "default": false
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Archive a submission
+
+The API endpoint allows you to archive a submission.
+
+```shell
+curl --request DELETE \
+ --url https://api.wabosign.com/submissions/1001 \
+ --header 'X-Auth-Token: API_KEY'
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Archive a submission",
+ "operationId": "archiveSubmission",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submission.",
+ "example": 1001
+ }
+ ]
+}
+```
+
+### List all submitters
+
+The API endpoint provides the ability to retrieve a list of submitters.
+
+```shell
+curl --request GET \
+ --url https://api.wabosign.com/submitters \
+ --header 'X-Auth-Token: API_KEY'
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submitters"
+ ],
+ "summary": "List all submitters",
+ "operationId": "getSubmitters",
+ "parameters": [
+ {
+ "name": "submission_id",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The submission ID allows you to receive only the submitters related to that specific submission."
+ },
+ {
+ "name": "q",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter submitters on name, email or phone partial match."
+ },
+ {
+ "name": "slug",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter submitters by unique slug.",
+ "example": "zAyL9fH36Havvm"
+ },
+ {
+ "name": "completed_after",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "example": "2024-03-05 9:32:20",
+ "description": "The date and time string value to filter submitters that completed the submission after the specified date and time."
+ },
+ {
+ "name": "completed_before",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "example": "2024-03-06 19:32:20",
+ "description": "The date and time string value to filter submitters that completed the submission before the specified date and time."
+ },
+ {
+ "name": "external_id",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "The unique applications-specific identifier provided for a submitter when initializing a signature request. It allows you to receive only submitters with a specified external id."
+ },
+ {
+ "name": "limit",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The number of submitters to return. Default value is 10. Maximum value is 100."
+ },
+ {
+ "name": "after",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submitter to start the list from. It allows you to receive only submitters with id greater than the specified value. Pass ID value from the `pagination.next` response to load the next batch of submitters."
+ },
+ {
+ "name": "before",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submitter to end the list with. It allows you to receive only submitters with id less than the specified value."
+ }
+ ]
+}
+```
+
+### Get a submitter
+
+The API endpoint provides functionality to retrieve information about a submitter, along with the submitter documents and field values.
+
+```shell
+curl --request GET \
+ --url https://api.wabosign.com/submitters/500001 \
+ --header 'X-Auth-Token: API_KEY'
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submitters"
+ ],
+ "summary": "Get a submitter",
+ "operationId": "getSubmitter",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submitter.",
+ "example": 500001
+ }
+ ]
+}
+```
+
+### Update a submitter
+
+The API endpoint allows you to update submitter details, pre-fill or update field values and re-send emails. Related Guides Automatically sign documents via API
+
+```shell
+curl --request PUT \
+ --url https://api.wabosign.com/submitters/500001 \
+ --header 'X-Auth-Token: API_KEY' \
+ --header 'content-type: application/json' \
+ --data '{"email":"john.doe@example.com","fields":[{"name":"First Name","default_value":"Acme"}]}'
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submitters"
+ ],
+ "summary": "Update a submitter",
+ "operationId": "updateSubmitter",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submitter.",
+ "example": 500001
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the submitter."
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the submitter.",
+ "format": "email",
+ "example": "john.doe@example.com"
+ },
+ "phone": {
+ "type": "string",
+ "description": "The phone number of the submitter, formatted according to the E.164 standard.",
+ "example": "+1234567890"
+ },
+ "values": {
+ "type": "object",
+ "description": "An object with pre-filled values for the submission. Use field names for keys of the object. For more configurations see `fields` param."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this submitter within your app."
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `true` to re-send signature request emails."
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to re-send signature request via phone number SMS.",
+ "default": false
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails."
+ },
+ "completed": {
+ "type": "boolean",
+ "description": "Pass `true` to mark submitter as completed and auto-signed via API."
+ },
+ "metadata": {
+ "type": "object",
+ "description": "Metadata object with additional submitter information.",
+ "example": "{ \"customField\": \"value\" }"
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Submitter specific URL to redirect to after the submission completion."
+ },
+ "require_phone_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require phone 2FA verification via a one-time code sent to the phone number in order to access the documents.",
+ "default": false
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body. Can include the following variables: {{template.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "fields": {
+ "type": "array",
+ "description": "A list of configurations for template document form fields.",
+ "items": {
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document template field name.",
+ "example": "First Name"
+ },
+ "default_value": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ }
+ ]
+ }
+ }
+ ],
+ "description": "Default value of the field. Use base64 encoded file or a public URL to the image file to set default signature or image fields.",
+ "example": "Acme"
+ },
+ "readonly": {
+ "type": "boolean",
+ "description": "Set `true` to make it impossible for the submitter to edit predefined field value.",
+ "default": false
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Set `true` to make the field required."
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### List all templates
+
+The API endpoint provides the ability to retrieve a list of available document templates.
+
+```shell
+curl --request GET \
+ --url https://api.wabosign.com/templates \
+ --header 'X-Auth-Token: API_KEY'
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "List all templates",
+ "operationId": "getTemplates",
+ "parameters": [
+ {
+ "name": "q",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter templates based on the name partial match."
+ },
+ {
+ "name": "slug",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter templates by unique slug.",
+ "example": "opaKWh8WWTAcVG"
+ },
+ {
+ "name": "external_id",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "The unique applications-specific identifier provided for the template via API or Embedded template form builder. It allows you to receive only templates with your specified external id."
+ },
+ {
+ "name": "folder",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter templates by folder name."
+ },
+ {
+ "name": "archived",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "boolean"
+ },
+ "description": "Get only archived templates instead of active ones."
+ },
+ {
+ "name": "limit",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The number of templates to return. Default value is 10. Maximum value is 100."
+ },
+ {
+ "name": "after",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the template to start the list from. It allows you to receive only templates with id greater than the specified value. Pass ID value from the `pagination.next` response to load the next batch of templates."
+ },
+ {
+ "name": "before",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the template to end the list with. It allows you to receive only templates with id less than the specified value."
+ }
+ ]
+}
+```
+
+### Get a template
+
+The API endpoint provides the functionality to retrieve information about a document template.
+
+```shell
+curl --request GET \
+ --url https://api.wabosign.com/templates/1000001 \
+ --header 'X-Auth-Token: API_KEY'
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Get a template",
+ "operationId": "getTemplate",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the document template.",
+ "example": 1000001
+ }
+ ]
+}
+```
+
+### Create a template from PDF
+
+The API endpoint provides the functionality to create a fillable document template for a PDF file. Use {{Field Name;role=Signer1;type=date}} text tags to define fillable fields in the document. See https://www.wabosign.com/examples/fieldtags.pdf for more text tag formats. Or specify the exact pixel coordinates of the document fields using `fields` param. Related Guides Use embedded text field tags to create a fillable form
+
+
+```shell
+curl --request POST \
+ --url https://api.wabosign.com/templates/pdf \
+ --header 'X-Auth-Token: API_KEY' \
+ --header 'content-type: application/json' \
+ --data '{"name":"Test PDF","documents":[{"name":"string","file":"base64","fields":[{"name":"string","areas":[{"x":0,"y":0,"w":0,"h":0,"page":1}]}]}]}'
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Create a template from PDF",
+ "operationId": "createTemplateFromPdf",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "documents"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the template",
+ "example": "Test PDF"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The folder's name to which the template should be created."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this template within your app. Existing template with specified `external_id` will be updated with a new PDF.",
+ "example": "unique-key"
+ },
+ "shared_link": {
+ "type": "boolean",
+ "description": "set to `true` to make the template available via a shared link. This will allow anyone with the link to create a submission from this template.",
+ "default": true
+ },
+ "documents": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "name",
+ "file"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document."
+ },
+ "file": {
+ "example": "base64",
+ "type": "string",
+ "format": "base64",
+ "description": "Base64-encoded content of the PDF file or downloadable file URL."
+ },
+ "fields": {
+ "type": "array",
+ "description": "Fields are optional if you use {{...}} text tags to define fields in the document.",
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the field."
+ },
+ "type": {
+ "type": "string",
+ "description": "Type of the field (e.g., text, signature, date, initials).",
+ "enum": [
+ "heading",
+ "text",
+ "signature",
+ "initials",
+ "date",
+ "number",
+ "image",
+ "checkbox",
+ "multiple",
+ "file",
+ "radio",
+ "select",
+ "cells",
+ "stamp",
+ "payment",
+ "phone",
+ "verification",
+ "strikethrough"
+ ]
+ },
+ "role": {
+ "type": "string",
+ "description": "Role name of the signer."
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Indicates if the field is required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "areas": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "x",
+ "y",
+ "w",
+ "h",
+ "page"
+ ],
+ "properties": {
+ "x": {
+ "type": "number",
+ "description": "X-coordinate of the field area."
+ },
+ "y": {
+ "type": "number",
+ "description": "Y-coordinate of the field area."
+ },
+ "w": {
+ "type": "number",
+ "description": "Width of the field area."
+ },
+ "h": {
+ "type": "number",
+ "description": "Height of the field area."
+ },
+ "page": {
+ "type": "integer",
+ "description": "Page number of the field area. Starts from 1.",
+ "example": 1
+ },
+ "option": {
+ "type": "string",
+ "description": "Option string value for 'radio' and 'multiple' select field types."
+ }
+ }
+ }
+ },
+ "options": {
+ "type": "array",
+ "description": "An array of option values for 'select' field type.",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "Option A",
+ "Option B"
+ ]
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "flatten": {
+ "type": "boolean",
+ "description": "Remove PDF form fields from the documents.",
+ "default": false
+ },
+ "remove_tags": {
+ "type": "boolean",
+ "description": "Pass `false` to disable the removal of {{text}} tags from the PDF. This can be used along with transparent text tags for faster and more robust PDF processing.",
+ "default": true
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Create a template from Word DOCX
+
+The API endpoint provides the functionality to create a fillable document template for existing Microsoft Word document. Use {{Field Name;role=Signer1;type=date}} text tags to define fillable fields in the document. See https://www.wabosign.com/examples/fieldtags.docx for more text tag formats. Or specify the exact pixel coordinates of the document fields using `fields` param. Related Guides Use embedded text field tags to create a fillable form
+
+
+```shell
+curl --request POST \
+ --url https://api.wabosign.com/templates/docx \
+ --header 'X-Auth-Token: API_KEY' \
+ --header 'content-type: application/json' \
+ --data '{"name":"Test DOCX","documents":[{"name":"string","file":"base64"}]}'
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Create a template from Word DOCX",
+ "operationId": "createTemplateFromDocx",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "documents"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the template",
+ "example": "Test DOCX"
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this template within your app. Existing template with specified `external_id` will be updated with a new document.",
+ "example": "unique-key"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The folder's name to which the template should be created."
+ },
+ "shared_link": {
+ "type": "boolean",
+ "description": "set to `true` to make the template available via a shared link. This will allow anyone with the link to create a submission from this template.",
+ "default": true
+ },
+ "documents": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "name",
+ "file"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document."
+ },
+ "file": {
+ "type": "string",
+ "example": "base64",
+ "format": "base64",
+ "description": "Base64-encoded content of the DOCX file or downloadable file URL"
+ },
+ "fields": {
+ "description": "Fields are optional if you use {{...}} text tags to define fields in the document.",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the field."
+ },
+ "type": {
+ "type": "string",
+ "description": "Type of the field (e.g., text, signature, date, initials).",
+ "enum": [
+ "heading",
+ "text",
+ "signature",
+ "initials",
+ "date",
+ "number",
+ "image",
+ "checkbox",
+ "multiple",
+ "file",
+ "radio",
+ "select",
+ "cells",
+ "stamp",
+ "payment",
+ "phone",
+ "verification",
+ "strikethrough"
+ ]
+ },
+ "role": {
+ "type": "string",
+ "description": "Role name of the signer."
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Indicates if the field is required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "areas": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "x": {
+ "type": "number",
+ "description": "X-coordinate of the field area."
+ },
+ "y": {
+ "type": "number",
+ "description": "Y-coordinate of the field area."
+ },
+ "w": {
+ "type": "number",
+ "description": "Width of the field area."
+ },
+ "h": {
+ "type": "number",
+ "description": "Height of the field area."
+ },
+ "page": {
+ "type": "integer",
+ "description": "Page number of the field area. Starts from 1."
+ },
+ "option": {
+ "type": "string",
+ "description": "Option string value for 'radio' and 'multiple' select field types."
+ }
+ }
+ }
+ },
+ "options": {
+ "type": "array",
+ "description": "An array of option values for 'select' field type.",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "Option A",
+ "Option B"
+ ]
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Create a template from HTML
+
+The API endpoint provides the functionality to seamlessly generate a PDF document template by utilizing the provided HTML content while incorporating pre-defined fields. Related Guides Create PDF document fillable form with HTML
+
+```shell
+curl --request POST \
+ --url https://api.wabosign.com/templates/html \
+ --header 'X-Auth-Token: API_KEY' \
+ --header 'content-type: application/json' \
+ --data '{"html":"
Lorem Ipsum is simply dummy text of the\n\n\nand typesetting industry
Lorem Ipsum is simply dummy text of the\n\n\nand typesetting industry
\n"
+ },
+ "html_header": {
+ "type": "string",
+ "description": "HTML template of the header to be displayed on every page."
+ },
+ "html_footer": {
+ "type": "string",
+ "description": "HTML template of the footer to be displayed on every page."
+ },
+ "name": {
+ "type": "string",
+ "description": "Template name. Random uuid will be assigned when not specified.",
+ "example": "Test Template"
+ },
+ "size": {
+ "type": "string",
+ "default": "Letter",
+ "description": "Page size. Letter 8.5 x 11 will be assigned when not specified.",
+ "enum": [
+ "Letter",
+ "Legal",
+ "Tabloid",
+ "Ledger",
+ "A0",
+ "A1",
+ "A2",
+ "A3",
+ "A4",
+ "A5",
+ "A6"
+ ],
+ "example": "A4"
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this template within your app. Existing template with specified `external_id` will be updated with a new HTML.",
+ "example": "714d974e-83d8-11ee-b962-0242ac120002"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The folder's name to which the template should be created."
+ },
+ "shared_link": {
+ "type": "boolean",
+ "description": "set to `true` to make the template available via a shared link. This will allow anyone with the link to create a submission from this template.",
+ "default": true
+ },
+ "documents": {
+ "type": "array",
+ "description": "The list of documents built from HTML. Can be used to create a template with multiple documents. Leave `documents` param empty when using a top-level `html` param for a template with a single document.",
+ "items": {
+ "type": "object",
+ "required": [
+ "html"
+ ],
+ "properties": {
+ "html": {
+ "type": "string",
+ "description": "HTML template with field tags.",
+ "example": "
Lorem Ipsum is simply dummy text of the\n\n\nand typesetting industry
\n"
+ },
+ "name": {
+ "type": "string",
+ "description": "Document name. Random uuid will be assigned when not specified.",
+ "example": "Test Document"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Clone a template
+
+The API endpoint allows you to clone existing template into a new template.
+
+```shell
+curl --request POST \
+ --url https://api.wabosign.com/templates/1000001/clone \
+ --header 'X-Auth-Token: API_KEY' \
+ --header 'content-type: application/json' \
+ --data '{"name":"Cloned Template"}'
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Clone a template",
+ "operationId": "cloneTemplate",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the documents template.",
+ "example": 1000001
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Template name. Existing name with (Clone) suffix will be used if not specified.",
+ "example": "Cloned Template"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The folder's name to which the template should be cloned."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this template within your app."
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Merge templates
+
+The API endpoint allows you to merge multiple templates with documents and fields into a new combined template.
+
+```shell
+curl --request POST \
+ --url https://api.wabosign.com/templates/merge \
+ --header 'X-Auth-Token: API_KEY' \
+ --header 'content-type: application/json' \
+ --data '{"template_ids":[321,432],"name":"Merged Template"}'
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Merge templates",
+ "operationId": "mergeTemplate",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "template_ids"
+ ],
+ "properties": {
+ "template_ids": {
+ "type": "array",
+ "description": "An array of template ids to merge into a new template.",
+ "items": {
+ "type": "integer"
+ },
+ "example": [
+ 321,
+ 432
+ ]
+ },
+ "name": {
+ "type": "string",
+ "description": "Template name. Existing name with (Merged) suffix will be used if not specified.",
+ "example": "Merged Template"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The name of the folder in which the merged template should be placed."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this template within your app."
+ },
+ "shared_link": {
+ "type": "boolean",
+ "description": "set to `true` to make the template available via a shared link. This will allow anyone with the link to create a submission from this template.",
+ "default": true
+ },
+ "roles": {
+ "type": "array",
+ "description": "An array of submitter role names to be used in the merged template.",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "Agent",
+ "Customer"
+ ]
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Update a template
+
+The API endpoint provides the functionality to move a document template to a different folder and update the name of the template.
+
+```shell
+curl --request PUT \
+ --url https://api.wabosign.com/templates/1000001 \
+ --header 'X-Auth-Token: API_KEY' \
+ --header 'content-type: application/json' \
+ --data '{"name":"New Document Name","folder_name":"New Folder"}'
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Update a template",
+ "operationId": "updateTemplate",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the document template.",
+ "example": 1000001
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the template",
+ "example": "New Document Name"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The folder's name to which the template should be moved.",
+ "example": "New Folder"
+ },
+ "roles": {
+ "type": "array",
+ "description": "An array of submitter role names to update the template with.",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "Agent",
+ "Customer"
+ ]
+ },
+ "archived": {
+ "type": "boolean",
+ "description": "Set `false` to unarchive template."
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Update template documents
+
+The API endpoint allows you to add, remove or replace documents in the template with provided PDF/DOCX file or HTML content.
+
+```shell
+curl --request PUT \
+ --url https://api.wabosign.com/templates/1000001/documents \
+ --header 'X-Auth-Token: API_KEY' \
+ --header 'content-type: application/json' \
+ --data '{"documents":[{"file":"string"}]}'
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Update template documents",
+ "operationId": "addDocumentToTemplate",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the documents template.",
+ "example": 1000001
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "documents": {
+ "type": "array",
+ "description": "The list of documents to add or replace in the template.",
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document name. Random uuid will be assigned when not specified.",
+ "example": "Test Template"
+ },
+ "file": {
+ "type": "string",
+ "format": "base64",
+ "description": "Base64-encoded content of the PDF or DOCX file or downloadable file URL. Leave it empty if you create a new document using HTML param."
+ },
+ "html": {
+ "type": "string",
+ "description": "HTML template with field tags. Leave it empty if you add a document via PDF or DOCX base64 encoded file param or URL."
+ },
+ "position": {
+ "type": "integer",
+ "description": "Position of the document. By default will be added as the last document in the template.",
+ "example": 0
+ },
+ "replace": {
+ "type": "boolean",
+ "default": false,
+ "description": "Set to `true` to replace existing document with a new file at `position`. Existing document fields will be transferred to the new document if it doesn't contain any fields."
+ },
+ "remove": {
+ "type": "boolean",
+ "default": false,
+ "description": "Set to `true` to remove existing document at given `position` or with given `name`."
+ }
+ }
+ }
+ },
+ "merge": {
+ "type": "boolean",
+ "default": false,
+ "description": "Set to `true` to merge all existing and new documents into a single PDF document in the template."
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Archive a template
+
+The API endpoint allows you to archive a document template.
+
+```shell
+curl --request DELETE \
+ --url https://api.wabosign.com/templates/1000001 \
+ --header 'X-Auth-Token: API_KEY'
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Archive a template",
+ "operationId": "archiveTemplate",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the document template.",
+ "example": 1000001
+ }
+ ]
+}
+```
+
diff --git a/docs/api/typescript.md b/docs/api/typescript.md
new file mode 100644
index 00000000..4c61e224
--- /dev/null
+++ b/docs/api/typescript.md
@@ -0,0 +1,4034 @@
+### List all submissions
+
+The API endpoint provides the ability to retrieve a list of available submissions.
+
+```typescript
+import wabosign from "@wabosign/api";
+
+wabosign.configure({ key: "API_KEY", url: "https://api.wabosign.com" });
+
+const { data, pagination } = await wabosign.listSubmissions({ limit: 10 });
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "List all submissions",
+ "operationId": "getSubmissions",
+ "parameters": [
+ {
+ "name": "template_id",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The template ID allows you to receive only the submissions created from that specific template."
+ },
+ {
+ "name": "status",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string",
+ "enum": [
+ "pending",
+ "completed",
+ "declined",
+ "expired"
+ ]
+ },
+ "description": "Filter submissions by status."
+ },
+ {
+ "name": "q",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter submissions based on submitters name, email or phone partial match."
+ },
+ {
+ "name": "slug",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter submissions by unique slug.",
+ "example": "NtLDQM7eJX2ZMd"
+ },
+ {
+ "name": "template_folder",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter submissions by template folder name."
+ },
+ {
+ "name": "archived",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "boolean"
+ },
+ "description": "Returns only archived submissions when `true` and only active submissions when `false`."
+ },
+ {
+ "name": "limit",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The number of submissions to return. Default value is 10. Maximum value is 100."
+ },
+ {
+ "name": "after",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submission to start the list from. It allows you to receive only submissions with an ID greater than the specified value. Pass ID value from the `pagination.next` response to load the next batch of submissions."
+ },
+ {
+ "name": "before",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submission that marks the end of the list. It allows you to receive only submissions with an ID less than the specified value."
+ }
+ ]
+}
+```
+
+### Get a submission
+
+The API endpoint provides the functionality to retrieve information about a submission.
+
+```typescript
+import wabosign from "@wabosign/api";
+
+wabosign.configure({ key: "API_KEY", url: "https://api.wabosign.com" });
+
+const submission = await wabosign.getSubmission(1001);
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Get a submission",
+ "operationId": "getSubmission",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submission.",
+ "example": 1001
+ }
+ ]
+}
+```
+
+### Get submission documents
+
+This endpoint returns a list of partially filled documents for a submission. If the submission has been completed, the final signed documents are returned.
+
+```typescript
+import wabosign from "@wabosign/api";
+
+wabosign.configure({ key: "API_KEY", url: "https://api.wabosign.com" });
+
+const submission = await wabosign.getSubmissionDocuments(1001);
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Get submission documents",
+ "operationId": "getSubmissionDocuments",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submission.",
+ "example": 1001
+ }
+ ]
+}
+```
+
+### Create a submission
+
+This API endpoint allows you to create signature requests (submissions) for a document template and send them to the specified submitters (signers). Related Guides Send documents for signature via API Pre-fill PDF document form fields with API
+
+```typescript
+import wabosign from "@wabosign/api";
+
+wabosign.configure({ key: "API_KEY", url: "https://api.wabosign.com" });
+
+const submission = await wabosign.createSubmission({
+ template_id: 1000001,
+ send_email: true,
+ submitters: [
+ {
+ role: "First Party",
+ email: "john.doe@example.com"
+ }
+ ]
+});
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Create a submission",
+ "operationId": "createSubmission",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "template_id",
+ "submitters"
+ ],
+ "properties": {
+ "template_id": {
+ "type": "integer",
+ "description": "The unique identifier of the template. Document template forms can be created via the Web UI, PDF and DOCX API, or HTML API.",
+ "example": 1000001
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "order": {
+ "type": "string",
+ "description": "Pass 'random' to send signature request emails to all parties right away. The order is 'preserved' by default so the second party will receive a signature request email only after the document is signed by the first party.",
+ "default": "preserved",
+ "enum": [
+ "preserved",
+ "random"
+ ]
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Specify URL to redirect to after the submission completion."
+ },
+ "bcc_completed": {
+ "type": "string",
+ "description": "Specify BCC address to send signed documents to after the completion."
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails."
+ },
+ "expire_at": {
+ "type": "string",
+ "description": "Specify the expiration date and time after which the submission becomes unavailable for signature.",
+ "example": "2024-09-01 12:00:00 UTC"
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body. Can include the following variables: {{template.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "submitters": {
+ "type": "array",
+ "description": "The list of submitters for the submission.",
+ "items": {
+ "type": "object",
+ "required": [
+ "email"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the submitter."
+ },
+ "role": {
+ "type": "string",
+ "description": "The role name or title of the submitter.",
+ "example": "First Party"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the submitter.",
+ "format": "email",
+ "example": "john.doe@example.com"
+ },
+ "phone": {
+ "type": "string",
+ "description": "The phone number of the submitter, formatted according to the E.164 standard.",
+ "example": "+1234567890"
+ },
+ "values": {
+ "type": "object",
+ "description": "An object with pre-filled values for the submission. Use field names for keys of the object. For more configurations see `fields` param."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this submitter within your app."
+ },
+ "completed": {
+ "type": "boolean",
+ "description": "Pass `true` to mark submitter as completed and auto-signed via API."
+ },
+ "metadata": {
+ "type": "object",
+ "description": "Metadata object with additional submitter information.",
+ "example": "{ \"customField\": \"value\" }"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending only for this submitter.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails for this submitter."
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Submitter specific URL to redirect to after the submission completion."
+ },
+ "order": {
+ "type": "integer",
+ "description": "The order of the submitter in the workflow (e.g., 0 for the first signer, 1 for the second, etc.). Use the same order number to create order groups. By default, submitters are ordered as in the submitters array."
+ },
+ "require_phone_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require phone 2FA verification via a one-time code sent to the phone number in order to access the documents.",
+ "default": false
+ },
+ "require_email_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require email 2FA verification via a one-time code sent to the email address in order to access the documents.",
+ "default": false
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject for the submitter."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body for the submitter. Can include the following variables: {{template.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "fields": {
+ "type": "array",
+ "description": "A list of configurations for template document form fields.",
+ "items": {
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document template field name.",
+ "example": "First Name"
+ },
+ "default_value": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ }
+ ]
+ }
+ }
+ ],
+ "description": "Default value of the field. Use base64 encoded file or a public URL to the image file to set default signature or image fields.",
+ "example": "Acme"
+ },
+ "readonly": {
+ "type": "boolean",
+ "description": "Set `true` to make it impossible for the submitter to edit predefined field value.",
+ "default": false
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Set `true` to make the field required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "roles": {
+ "type": "array",
+ "description": "A list of roles for the submitter. Use this param to merge multiple roles into one submitter.",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Create a submission from PDF
+
+The API endpoint provides the functionality to create one-off submission request from a PDF. Use {{Field Name;role=Signer1;type=date}} text tags to define fillable fields in the document. See https://www.wabosign.com/examples/fieldtags.pdf for more text tag formats. Or specify the exact pixel coordinates of the document fields using `fields` param. Related Guides Use embedded text field tags to create a fillable form
+
+
+```typescript
+import wabosign from "@wabosign/api";
+
+wabosign.configure({ key: "API_KEY", url: "https://api.wabosign.com" });
+
+const submission = await wabosign.createSubmissionFromPdf({
+ name: "Test Submission Document",
+ documents: [
+ {
+ name: "string",
+ file: "base64",
+ fields: [
+ {
+ name: "string",
+ areas: [
+ {
+ x: 0,
+ y: 0,
+ w: 0,
+ h: 0,
+ page: 1
+ }
+ ]
+ }
+ ]
+ }
+ ],
+ submitters: [
+ {
+ role: "First Party",
+ email: "john.doe@example.com"
+ }
+ ]
+});
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Create a submission from PDF",
+ "operationId": "createSubmissionFromPdf",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "documents",
+ "submitters"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document submission.",
+ "example": "Test Submission Document"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "order": {
+ "type": "string",
+ "description": "Pass 'random' to send signature request emails to all parties right away. The order is 'preserved' by default so the second party will receive a signature request email only after the document is signed by the first party.",
+ "default": "preserved",
+ "enum": [
+ "preserved",
+ "random"
+ ]
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Specify URL to redirect to after the submission completion."
+ },
+ "bcc_completed": {
+ "type": "string",
+ "description": "Specify BCC address to send signed documents to after the completion."
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails."
+ },
+ "expire_at": {
+ "type": "string",
+ "description": "Specify the expiration date and time after which the submission becomes unavailable for signature.",
+ "example": "2024-09-01 12:00:00 UTC"
+ },
+ "template_ids": {
+ "type": "array",
+ "description": "An optional array of template IDs to use in the submission along with the provided documents. This can be used to create multi-document submissions when some of the required documents exist within templates.",
+ "items": {
+ "type": "integer",
+ "description": "The ID of the template to use for the submission."
+ }
+ },
+ "documents": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "name",
+ "file"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document."
+ },
+ "file": {
+ "example": "base64",
+ "type": "string",
+ "format": "base64",
+ "description": "Base64-encoded content of the PDF file or downloadable file URL."
+ },
+ "fields": {
+ "type": "array",
+ "description": "Fields are optional if you use {{...}} text tags to define fields in the document.",
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the field."
+ },
+ "type": {
+ "type": "string",
+ "description": "Type of the field (e.g., text, signature, date, initials).",
+ "enum": [
+ "heading",
+ "text",
+ "signature",
+ "initials",
+ "date",
+ "number",
+ "image",
+ "checkbox",
+ "multiple",
+ "file",
+ "radio",
+ "select",
+ "cells",
+ "stamp",
+ "payment",
+ "phone",
+ "verification",
+ "strikethrough"
+ ]
+ },
+ "role": {
+ "type": "string",
+ "description": "Role name of the signer."
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Indicates if the field is required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "areas": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "x",
+ "y",
+ "w",
+ "h",
+ "page"
+ ],
+ "properties": {
+ "x": {
+ "type": "number",
+ "description": "X-coordinate of the field area."
+ },
+ "y": {
+ "type": "number",
+ "description": "Y-coordinate of the field area."
+ },
+ "w": {
+ "type": "number",
+ "description": "Width of the field area."
+ },
+ "h": {
+ "type": "number",
+ "description": "Height of the field area."
+ },
+ "page": {
+ "type": "integer",
+ "description": "Page number of the field area. Starts from 1.",
+ "example": 1
+ },
+ "option": {
+ "type": "string",
+ "description": "Option string value for 'radio' and 'multiple' select field types."
+ }
+ }
+ }
+ },
+ "options": {
+ "type": "array",
+ "description": "An array of option values for 'select' field type.",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "Option A",
+ "Option B"
+ ]
+ }
+ }
+ }
+ },
+ "position": {
+ "type": "integer",
+ "description": "Document position in the submission. If not specified, the document will be added in the order it appears in the documents array."
+ }
+ }
+ }
+ },
+ "submitters": {
+ "type": "array",
+ "description": "The list of submitters for the submission.",
+ "items": {
+ "type": "object",
+ "required": [
+ "email"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the submitter."
+ },
+ "role": {
+ "type": "string",
+ "description": "The role name or title of the submitter.",
+ "example": "First Party"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the submitter.",
+ "format": "email",
+ "example": "john.doe@example.com"
+ },
+ "phone": {
+ "type": "string",
+ "description": "The phone number of the submitter, formatted according to the E.164 standard.",
+ "example": "+1234567890"
+ },
+ "values": {
+ "type": "object",
+ "description": "An object with pre-filled values for the submission. Use field names for keys of the object. For more configurations see `fields` param."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this submitter within your app."
+ },
+ "completed": {
+ "type": "boolean",
+ "description": "Pass `true` to mark submitter as completed and auto-signed via API."
+ },
+ "metadata": {
+ "type": "object",
+ "description": "Metadata object with additional submitter information.",
+ "example": "{ \"customField\": \"value\" }"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending only for this submitter.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails for this submitter."
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Submitter specific URL to redirect to after the submission completion."
+ },
+ "order": {
+ "type": "integer",
+ "description": "The order of the submitter in the workflow (e.g., 0 for the first signer, 1 for the second, etc.). Use the same order number to create order groups. By default, submitters are ordered as in the submitters array."
+ },
+ "require_phone_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require phone 2FA verification via a one-time code sent to the phone number in order to access the documents.",
+ "default": false
+ },
+ "require_email_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require email 2FA verification via a one-time code sent to the email address in order to access the documents.",
+ "default": false
+ },
+ "invite_by": {
+ "type": "string",
+ "description": "Set the role name of the previous party that should invite this party via email."
+ },
+ "fields": {
+ "type": "array",
+ "description": "A list of configurations for document form fields.",
+ "items": {
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document field name.",
+ "example": "First Name"
+ },
+ "default_value": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ }
+ ]
+ }
+ }
+ ],
+ "description": "Default value of the field. Use base64 encoded file or a public URL to the image file to set default signature or image fields.",
+ "example": "Acme"
+ },
+ "readonly": {
+ "type": "boolean",
+ "description": "Set `true` to make it impossible for the submitter to edit predefined field value.",
+ "default": false
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Set `true` to make the field required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "roles": {
+ "type": "array",
+ "description": "A list of roles for the submitter. Use this param to merge multiple roles into one submitter.",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body. Can include the following variables: {{submission.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "flatten": {
+ "type": "boolean",
+ "description": "Remove PDF form fields from the documents.",
+ "default": false
+ },
+ "merge_documents": {
+ "type": "boolean",
+ "description": "Set `true` to merge the documents into a single PDF file.",
+ "default": false
+ },
+ "remove_tags": {
+ "type": "boolean",
+ "description": "Pass `false` to disable the removal of {{text}} tags from the PDF. This can be used along with transparent text tags for faster and more robust PDF processing.",
+ "default": true
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Create a submission from DOCX
+
+The API endpoint provides functionality to create a one-off submission request from a DOCX file with dynamic content variables. Use [[variable_name]] text tags to define dynamic content variables in the document. See https://www.wabosign.com/examples/demo_template.docx for the specific text variable syntax, including dynamic content tables and list. You can also use the {{signature}} field syntax to define fillable fields, as in a PDF. Related Guides Use dynamic content variables in DOCX to create personalized documents
+
+```typescript
+import wabosign from "@wabosign/api";
+
+wabosign.configure({ key: "API_KEY", url: "https://api.wabosign.com" });
+
+const submission = await wabosign.createSubmissionFromDocx({
+ name: "Test Submission Document",
+ variables: {
+ variable_name: "value"
+ },
+ documents: [
+ {
+ name: "string",
+ file: "base64"
+ }
+ ],
+ submitters: [
+ {
+ role: "First Party",
+ email: "john.doe@example.com"
+ }
+ ]
+});
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Create a submission from DOCX",
+ "operationId": "createSubmissionFromDocx",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "documents",
+ "submitters"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document submission.",
+ "example": "Test Submission Document"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "variables": {
+ "type": "object",
+ "description": "Dynamic content variables object. Variable values can be strings, numbers, arrays, objects, or HTML content used to generate styled text, paragraphs, and tables in DOCX.",
+ "example": {
+ "variable_name": "value"
+ }
+ },
+ "order": {
+ "type": "string",
+ "description": "Pass 'random' to send signature request emails to all parties right away. The order is 'preserved' by default so the second party will receive a signature request email only after the document is signed by the first party.",
+ "default": "preserved",
+ "enum": [
+ "preserved",
+ "random"
+ ]
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Specify URL to redirect to after the submission completion."
+ },
+ "bcc_completed": {
+ "type": "string",
+ "description": "Specify BCC address to send signed documents to after the completion."
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails."
+ },
+ "expire_at": {
+ "type": "string",
+ "description": "Specify the expiration date and time after which the submission becomes unavailable for signature.",
+ "example": "2024-09-01 12:00:00 UTC"
+ },
+ "template_ids": {
+ "type": "array",
+ "description": "An optional array of template IDs to use in the submission along with the provided documents. This can be used to create multi-document submissions when some of the required documents exist within templates.",
+ "items": {
+ "type": "integer",
+ "description": "The ID of the template to use for the submission."
+ }
+ },
+ "documents": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "name",
+ "file"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document."
+ },
+ "file": {
+ "example": "base64",
+ "type": "string",
+ "format": "base64",
+ "description": "Base64-encoded content of the PDF or DOCX file or downloadable file URL."
+ },
+ "position": {
+ "type": "integer",
+ "description": "Document position in the submission. If not specified, the document will be added in the order it appears in the documents array."
+ }
+ }
+ }
+ },
+ "submitters": {
+ "type": "array",
+ "description": "The list of submitters for the submission.",
+ "items": {
+ "type": "object",
+ "required": [
+ "email"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the submitter."
+ },
+ "role": {
+ "type": "string",
+ "description": "The role name or title of the submitter.",
+ "example": "First Party"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the submitter.",
+ "format": "email",
+ "example": "john.doe@example.com"
+ },
+ "phone": {
+ "type": "string",
+ "description": "The phone number of the submitter, formatted according to the E.164 standard.",
+ "example": "+1234567890"
+ },
+ "values": {
+ "type": "object",
+ "description": "An object with pre-filled values for the submission. Use field names for keys of the object. For more configurations see `fields` param."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this submitter within your app."
+ },
+ "completed": {
+ "type": "boolean",
+ "description": "Pass `true` to mark submitter as completed and auto-signed via API."
+ },
+ "metadata": {
+ "type": "object",
+ "description": "Metadata object with additional submitter information.",
+ "example": "{ \"customField\": \"value\" }"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending only for this submitter.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails for this submitter."
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Submitter specific URL to redirect to after the submission completion."
+ },
+ "order": {
+ "type": "integer",
+ "description": "The order of the submitter in the workflow (e.g., 0 for the first signer, 1 for the second, etc.). Use the same order number to create order groups. By default, submitters are ordered as in the submitters array."
+ },
+ "require_phone_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require phone 2FA verification via a one-time code sent to the phone number in order to access the documents.",
+ "default": false
+ },
+ "require_email_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require email 2FA verification via a one-time code sent to the email address in order to access the documents.",
+ "default": false
+ },
+ "invite_by": {
+ "type": "string",
+ "description": "Set the role name of the previous party that should invite this party via email."
+ },
+ "fields": {
+ "type": "array",
+ "description": "A list of configurations for document form fields.",
+ "items": {
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document field name.",
+ "example": "First Name"
+ },
+ "default_value": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ }
+ ]
+ }
+ }
+ ],
+ "description": "Default value of the field. Use base64 encoded file or a public URL to the image file to set default signature or image fields.",
+ "example": "Acme"
+ },
+ "readonly": {
+ "type": "boolean",
+ "description": "Set `true` to make it impossible for the submitter to edit predefined field value.",
+ "default": false
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Set `true` to make the field required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "roles": {
+ "type": "array",
+ "description": "A list of roles for the submitter. Use this param to merge multiple roles into one submitter.",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body. Can include the following variables: {{submission.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "merge_documents": {
+ "type": "boolean",
+ "description": "Set `true` to merge the documents into a single PDF file.",
+ "default": false
+ },
+ "remove_tags": {
+ "type": "boolean",
+ "description": "Pass `false` to disable the removal of {{text}} tags from the PDF. This can be used along with transparent text tags for faster and more robust PDF processing.",
+ "default": true
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Create a submission from HTML
+
+This API endpoint allows you to create a one-off submission request document using the provided HTML content, with special field tags rendered as a fillable and signable form. Related Guides Create PDF document fillable form with HTML
+
+```typescript
+import wabosign from "@wabosign/api";
+
+wabosign.configure({ key: "API_KEY", url: "https://api.wabosign.com" });
+
+const submission = await wabosign.createSubmissionFromHtml({
+ name: "Test Submission Document",
+ documents: [
+ {
+ name: "Test Document",
+ html: `
Lorem Ipsum is simply dummy text of the
+
+
+and typesetting industry
+`
+ }
+ ],
+ submitters: [
+ {
+ role: "First Party",
+ email: "john.doe@example.com"
+ }
+ ]
+});
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Create a submission from HTML",
+ "operationId": "createSubmissionFromHtml",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "documents",
+ "submitters"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document submission",
+ "example": "Test Submission Document"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "order": {
+ "type": "string",
+ "description": "Pass 'random' to send signature request emails to all parties right away. The order is 'preserved' by default so the second party will receive a signature request email only after the document is signed by the first party.",
+ "default": "preserved",
+ "enum": [
+ "preserved",
+ "random"
+ ]
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Specify URL to redirect to after the submission completion."
+ },
+ "bcc_completed": {
+ "type": "string",
+ "description": "Specify BCC address to send signed documents to after the completion."
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails."
+ },
+ "expire_at": {
+ "type": "string",
+ "description": "Specify the expiration date and time after which the submission becomes unavailable for signature.",
+ "example": "2024-09-01 12:00:00 UTC"
+ },
+ "template_ids": {
+ "type": "array",
+ "description": "An optional array of template IDs to use in the submission along with the provided documents. This can be used to create multi-document submissions when some of the required documents exist within templates.",
+ "items": {
+ "type": "integer",
+ "description": "The ID of the template to use for the submission."
+ }
+ },
+ "documents": {
+ "type": "array",
+ "description": "The list of documents built from HTML. Can be used to create a submission with multiple documents.",
+ "items": {
+ "type": "object",
+ "required": [
+ "html"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document name. Random uuid will be assigned when not specified.",
+ "example": "Test Document"
+ },
+ "html": {
+ "type": "string",
+ "description": "HTML document content with field tags.",
+ "example": "
Lorem Ipsum is simply dummy text of the\n\n\nand typesetting industry
\n"
+ },
+ "html_header": {
+ "type": "string",
+ "description": "HTML document content of the header to be displayed on every page."
+ },
+ "html_footer": {
+ "type": "string",
+ "description": "HTML document content of the footer to be displayed on every page."
+ },
+ "size": {
+ "type": "string",
+ "default": "Letter",
+ "description": "Page size. Letter 8.5 x 11 will be assigned when not specified.",
+ "enum": [
+ "Letter",
+ "Legal",
+ "Tabloid",
+ "Ledger",
+ "A0",
+ "A1",
+ "A2",
+ "A3",
+ "A4",
+ "A5",
+ "A6"
+ ],
+ "example": "A4"
+ },
+ "position": {
+ "type": "integer",
+ "description": "Document position in the submission. If not specified, the document will be added in the order it appears in the documents array."
+ }
+ }
+ }
+ },
+ "submitters": {
+ "type": "array",
+ "description": "The list of submitters for the submission.",
+ "items": {
+ "type": "object",
+ "required": [
+ "email"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the submitter."
+ },
+ "role": {
+ "type": "string",
+ "description": "The role name or title of the submitter.",
+ "example": "First Party"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the submitter.",
+ "format": "email",
+ "example": "john.doe@example.com"
+ },
+ "phone": {
+ "type": "string",
+ "description": "The phone number of the submitter, formatted according to the E.164 standard.",
+ "example": "+1234567890"
+ },
+ "values": {
+ "type": "object",
+ "description": "An object with pre-filled values for the submission. Use field names for keys of the object. For more configurations see `fields` param."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this submitter within your app."
+ },
+ "completed": {
+ "type": "boolean",
+ "description": "Pass `true` to mark submitter as completed and auto-signed via API."
+ },
+ "metadata": {
+ "type": "object",
+ "description": "Metadata object with additional submitter information.",
+ "example": "{ \"customField\": \"value\" }"
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `false` to disable signature request emails sending only for this submitter.",
+ "default": true
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to send signature request via phone number and SMS.",
+ "default": false
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails for this submitter."
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Submitter specific URL to redirect to after the submission completion."
+ },
+ "order": {
+ "type": "integer",
+ "description": "The order of the submitter in the workflow (e.g., 0 for the first signer, 1 for the second, etc.). Use the same order number to create order groups. By default, submitters are ordered as in the submitters array."
+ },
+ "require_phone_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require phone 2FA verification via a one-time code sent to the phone number in order to access the documents.",
+ "default": false
+ },
+ "require_email_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require email 2FA verification via a one-time code sent to the email address in order to access the documents.",
+ "default": false
+ },
+ "invite_by": {
+ "type": "string",
+ "description": "Set the role name of the previous party that should invite this party via email."
+ },
+ "fields": {
+ "type": "array",
+ "description": "A list of configurations for document form fields.",
+ "items": {
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document field name.",
+ "example": "First Name"
+ },
+ "default_value": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ }
+ ]
+ }
+ }
+ ],
+ "description": "Default value of the field. Use base64 encoded file or a public URL to the image file to set default signature or image fields.",
+ "example": "Acme"
+ },
+ "readonly": {
+ "type": "boolean",
+ "description": "Set `true` to make it impossible for the submitter to edit predefined field value.",
+ "default": false
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Set `true` to make the field required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "roles": {
+ "type": "array",
+ "description": "A list of roles for the submitter. Use this param to merge multiple roles into one submitter.",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body. Can include the following variables: {{submission.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "merge_documents": {
+ "type": "boolean",
+ "description": "Set `true` to merge the documents into a single PDF file.",
+ "default": false
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Archive a submission
+
+The API endpoint allows you to archive a submission.
+
+```typescript
+import wabosign from "@wabosign/api";
+
+wabosign.configure({ key: "API_KEY", url: "https://api.wabosign.com" });
+
+await wabosign.archiveSubmission(1001);
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submissions"
+ ],
+ "summary": "Archive a submission",
+ "operationId": "archiveSubmission",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submission.",
+ "example": 1001
+ }
+ ]
+}
+```
+
+### List all submitters
+
+The API endpoint provides the ability to retrieve a list of submitters.
+
+```typescript
+import wabosign from "@wabosign/api";
+
+wabosign.configure({ key: "API_KEY", url: "https://api.wabosign.com" });
+
+const { data, pagination } = await wabosign.listSubmitters({ limit: 10 });
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submitters"
+ ],
+ "summary": "List all submitters",
+ "operationId": "getSubmitters",
+ "parameters": [
+ {
+ "name": "submission_id",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The submission ID allows you to receive only the submitters related to that specific submission."
+ },
+ {
+ "name": "q",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter submitters on name, email or phone partial match."
+ },
+ {
+ "name": "slug",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter submitters by unique slug.",
+ "example": "zAyL9fH36Havvm"
+ },
+ {
+ "name": "completed_after",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "example": "2024-03-05 9:32:20",
+ "description": "The date and time string value to filter submitters that completed the submission after the specified date and time."
+ },
+ {
+ "name": "completed_before",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "example": "2024-03-06 19:32:20",
+ "description": "The date and time string value to filter submitters that completed the submission before the specified date and time."
+ },
+ {
+ "name": "external_id",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "The unique applications-specific identifier provided for a submitter when initializing a signature request. It allows you to receive only submitters with a specified external id."
+ },
+ {
+ "name": "limit",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The number of submitters to return. Default value is 10. Maximum value is 100."
+ },
+ {
+ "name": "after",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submitter to start the list from. It allows you to receive only submitters with id greater than the specified value. Pass ID value from the `pagination.next` response to load the next batch of submitters."
+ },
+ {
+ "name": "before",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submitter to end the list with. It allows you to receive only submitters with id less than the specified value."
+ }
+ ]
+}
+```
+
+### Get a submitter
+
+The API endpoint provides functionality to retrieve information about a submitter, along with the submitter documents and field values.
+
+```typescript
+import wabosign from "@wabosign/api";
+
+wabosign.configure({ key: "API_KEY", url: "https://api.wabosign.com" });
+
+const submitter = await wabosign.getSubmitter(500001);
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submitters"
+ ],
+ "summary": "Get a submitter",
+ "operationId": "getSubmitter",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submitter.",
+ "example": 500001
+ }
+ ]
+}
+```
+
+### Update a submitter
+
+The API endpoint allows you to update submitter details, pre-fill or update field values and re-send emails. Related Guides Automatically sign documents via API
+
+```typescript
+import wabosign from "@wabosign/api";
+
+wabosign.configure({ key: "API_KEY", url: "https://api.wabosign.com" });
+
+const submitter = await wabosign.updateSubmitter(500001, {
+ email: "john.doe@example.com",
+ fields: [
+ {
+ name: "First Name",
+ default_value: "Acme"
+ }
+ ]
+});
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Submitters"
+ ],
+ "summary": "Update a submitter",
+ "operationId": "updateSubmitter",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the submitter.",
+ "example": 500001
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the submitter."
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the submitter.",
+ "format": "email",
+ "example": "john.doe@example.com"
+ },
+ "phone": {
+ "type": "string",
+ "description": "The phone number of the submitter, formatted according to the E.164 standard.",
+ "example": "+1234567890"
+ },
+ "values": {
+ "type": "object",
+ "description": "An object with pre-filled values for the submission. Use field names for keys of the object. For more configurations see `fields` param."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this submitter within your app."
+ },
+ "send_email": {
+ "type": "boolean",
+ "description": "Set `true` to re-send signature request emails."
+ },
+ "send_sms": {
+ "type": "boolean",
+ "description": "Set `true` to re-send signature request via phone number SMS.",
+ "default": false
+ },
+ "reply_to": {
+ "type": "string",
+ "description": "Specify Reply-To address to use in the notification emails."
+ },
+ "completed": {
+ "type": "boolean",
+ "description": "Pass `true` to mark submitter as completed and auto-signed via API."
+ },
+ "metadata": {
+ "type": "object",
+ "description": "Metadata object with additional submitter information.",
+ "example": "{ \"customField\": \"value\" }"
+ },
+ "completed_redirect_url": {
+ "type": "string",
+ "description": "Submitter specific URL to redirect to after the submission completion."
+ },
+ "require_phone_2fa": {
+ "type": "boolean",
+ "description": "Set to `true` to require phone 2FA verification via a one-time code sent to the phone number in order to access the documents.",
+ "default": false
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "subject": {
+ "type": "string",
+ "description": "Custom signature request email subject."
+ },
+ "body": {
+ "type": "string",
+ "description": "Custom signature request email body. Can include the following variables: {{template.name}}, {{submitter.link}}, {{account.name}}."
+ }
+ }
+ },
+ "fields": {
+ "type": "array",
+ "description": "A list of configurations for template document form fields.",
+ "items": {
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document template field name.",
+ "example": "First Name"
+ },
+ "default_value": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ }
+ ]
+ }
+ }
+ ],
+ "description": "Default value of the field. Use base64 encoded file or a public URL to the image file to set default signature or image fields.",
+ "example": "Acme"
+ },
+ "readonly": {
+ "type": "boolean",
+ "description": "Set `true` to make it impossible for the submitter to edit predefined field value.",
+ "default": false
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Set `true` to make the field required."
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### List all templates
+
+The API endpoint provides the ability to retrieve a list of available document templates.
+
+```typescript
+import wabosign from "@wabosign/api";
+
+wabosign.configure({ key: "API_KEY", url: "https://api.wabosign.com" });
+
+const { data, pagination } = await wabosign.listTemplates({ limit: 10 });
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "List all templates",
+ "operationId": "getTemplates",
+ "parameters": [
+ {
+ "name": "q",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter templates based on the name partial match."
+ },
+ {
+ "name": "slug",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter templates by unique slug.",
+ "example": "opaKWh8WWTAcVG"
+ },
+ {
+ "name": "external_id",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "The unique applications-specific identifier provided for the template via API or Embedded template form builder. It allows you to receive only templates with your specified external id."
+ },
+ {
+ "name": "folder",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ },
+ "description": "Filter templates by folder name."
+ },
+ {
+ "name": "archived",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "boolean"
+ },
+ "description": "Get only archived templates instead of active ones."
+ },
+ {
+ "name": "limit",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The number of templates to return. Default value is 10. Maximum value is 100."
+ },
+ {
+ "name": "after",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the template to start the list from. It allows you to receive only templates with id greater than the specified value. Pass ID value from the `pagination.next` response to load the next batch of templates."
+ },
+ {
+ "name": "before",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the template to end the list with. It allows you to receive only templates with id less than the specified value."
+ }
+ ]
+}
+```
+
+### Get a template
+
+The API endpoint provides the functionality to retrieve information about a document template.
+
+```typescript
+import wabosign from "@wabosign/api";
+
+wabosign.configure({ key: "API_KEY", url: "https://api.wabosign.com" });
+
+const template = await wabosign.getTemplate(1000001);
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Get a template",
+ "operationId": "getTemplate",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the document template.",
+ "example": 1000001
+ }
+ ]
+}
+```
+
+### Create a template from PDF
+
+The API endpoint provides the functionality to create a fillable document template for a PDF file. Use {{Field Name;role=Signer1;type=date}} text tags to define fillable fields in the document. See https://www.wabosign.com/examples/fieldtags.pdf for more text tag formats. Or specify the exact pixel coordinates of the document fields using `fields` param. Related Guides Use embedded text field tags to create a fillable form
+
+
+```typescript
+import wabosign from "@wabosign/api";
+
+wabosign.configure({ key: "API_KEY", url: "https://api.wabosign.com" });
+
+const template = await wabosign.createTemplateFromPdf({
+ name: "Test PDF",
+ documents: [
+ {
+ name: "string",
+ file: "base64",
+ fields: [
+ {
+ name: "string",
+ areas: [
+ {
+ x: 0,
+ y: 0,
+ w: 0,
+ h: 0,
+ page: 1
+ }
+ ]
+ }
+ ]
+ }
+ ]
+});
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Create a template from PDF",
+ "operationId": "createTemplateFromPdf",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "documents"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the template",
+ "example": "Test PDF"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The folder's name to which the template should be created."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this template within your app. Existing template with specified `external_id` will be updated with a new PDF.",
+ "example": "unique-key"
+ },
+ "shared_link": {
+ "type": "boolean",
+ "description": "set to `true` to make the template available via a shared link. This will allow anyone with the link to create a submission from this template.",
+ "default": true
+ },
+ "documents": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "name",
+ "file"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document."
+ },
+ "file": {
+ "example": "base64",
+ "type": "string",
+ "format": "base64",
+ "description": "Base64-encoded content of the PDF file or downloadable file URL."
+ },
+ "fields": {
+ "type": "array",
+ "description": "Fields are optional if you use {{...}} text tags to define fields in the document.",
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the field."
+ },
+ "type": {
+ "type": "string",
+ "description": "Type of the field (e.g., text, signature, date, initials).",
+ "enum": [
+ "heading",
+ "text",
+ "signature",
+ "initials",
+ "date",
+ "number",
+ "image",
+ "checkbox",
+ "multiple",
+ "file",
+ "radio",
+ "select",
+ "cells",
+ "stamp",
+ "payment",
+ "phone",
+ "verification",
+ "strikethrough"
+ ]
+ },
+ "role": {
+ "type": "string",
+ "description": "Role name of the signer."
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Indicates if the field is required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "areas": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "x",
+ "y",
+ "w",
+ "h",
+ "page"
+ ],
+ "properties": {
+ "x": {
+ "type": "number",
+ "description": "X-coordinate of the field area."
+ },
+ "y": {
+ "type": "number",
+ "description": "Y-coordinate of the field area."
+ },
+ "w": {
+ "type": "number",
+ "description": "Width of the field area."
+ },
+ "h": {
+ "type": "number",
+ "description": "Height of the field area."
+ },
+ "page": {
+ "type": "integer",
+ "description": "Page number of the field area. Starts from 1.",
+ "example": 1
+ },
+ "option": {
+ "type": "string",
+ "description": "Option string value for 'radio' and 'multiple' select field types."
+ }
+ }
+ }
+ },
+ "options": {
+ "type": "array",
+ "description": "An array of option values for 'select' field type.",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "Option A",
+ "Option B"
+ ]
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "flatten": {
+ "type": "boolean",
+ "description": "Remove PDF form fields from the documents.",
+ "default": false
+ },
+ "remove_tags": {
+ "type": "boolean",
+ "description": "Pass `false` to disable the removal of {{text}} tags from the PDF. This can be used along with transparent text tags for faster and more robust PDF processing.",
+ "default": true
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Create a template from Word DOCX
+
+The API endpoint provides the functionality to create a fillable document template for existing Microsoft Word document. Use {{Field Name;role=Signer1;type=date}} text tags to define fillable fields in the document. See https://www.wabosign.com/examples/fieldtags.docx for more text tag formats. Or specify the exact pixel coordinates of the document fields using `fields` param. Related Guides Use embedded text field tags to create a fillable form
+
+
+```typescript
+import wabosign from "@wabosign/api";
+
+wabosign.configure({ key: "API_KEY", url: "https://api.wabosign.com" });
+
+const template = await wabosign.createTemplateFromDocx({
+ name: "Test DOCX",
+ documents: [
+ {
+ name: "string",
+ file: "base64"
+ }
+ ]
+});
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Create a template from Word DOCX",
+ "operationId": "createTemplateFromDocx",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "documents"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the template",
+ "example": "Test DOCX"
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this template within your app. Existing template with specified `external_id` will be updated with a new document.",
+ "example": "unique-key"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The folder's name to which the template should be created."
+ },
+ "shared_link": {
+ "type": "boolean",
+ "description": "set to `true` to make the template available via a shared link. This will allow anyone with the link to create a submission from this template.",
+ "default": true
+ },
+ "documents": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "name",
+ "file"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the document."
+ },
+ "file": {
+ "type": "string",
+ "example": "base64",
+ "format": "base64",
+ "description": "Base64-encoded content of the DOCX file or downloadable file URL"
+ },
+ "fields": {
+ "description": "Fields are optional if you use {{...}} text tags to define fields in the document.",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of the field."
+ },
+ "type": {
+ "type": "string",
+ "description": "Type of the field (e.g., text, signature, date, initials).",
+ "enum": [
+ "heading",
+ "text",
+ "signature",
+ "initials",
+ "date",
+ "number",
+ "image",
+ "checkbox",
+ "multiple",
+ "file",
+ "radio",
+ "select",
+ "cells",
+ "stamp",
+ "payment",
+ "phone",
+ "verification",
+ "strikethrough"
+ ]
+ },
+ "role": {
+ "type": "string",
+ "description": "Role name of the signer."
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Indicates if the field is required."
+ },
+ "title": {
+ "type": "string",
+ "description": "Field title displayed to the user instead of the name, shown on the signing form. Supports Markdown."
+ },
+ "description": {
+ "type": "string",
+ "description": "Field description displayed on the signing form. Supports Markdown."
+ },
+ "areas": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "x": {
+ "type": "number",
+ "description": "X-coordinate of the field area."
+ },
+ "y": {
+ "type": "number",
+ "description": "Y-coordinate of the field area."
+ },
+ "w": {
+ "type": "number",
+ "description": "Width of the field area."
+ },
+ "h": {
+ "type": "number",
+ "description": "Height of the field area."
+ },
+ "page": {
+ "type": "integer",
+ "description": "Page number of the field area. Starts from 1."
+ },
+ "option": {
+ "type": "string",
+ "description": "Option string value for 'radio' and 'multiple' select field types."
+ }
+ }
+ }
+ },
+ "options": {
+ "type": "array",
+ "description": "An array of option values for 'select' field type.",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "Option A",
+ "Option B"
+ ]
+ },
+ "validation": {
+ "type": "object",
+ "properties": {
+ "pattern": {
+ "type": "string",
+ "description": "HTML field validation pattern string based on https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern specification.",
+ "example": "[A-Z]{4}"
+ },
+ "message": {
+ "type": "string",
+ "description": "A custom error message to display on validation failure."
+ },
+ "min": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Minimum allowed number value or date depending on field type."
+ },
+ "max": {
+ "oneOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ }
+ ],
+ "description": "Maximum allowed number value or date depending on field type."
+ },
+ "step": {
+ "type": "number",
+ "description": "Increment step for number field. Pass 1 to accept only integers, or 0.01 to accept decimal currency."
+ }
+ }
+ },
+ "preferences": {
+ "type": "object",
+ "properties": {
+ "font_size": {
+ "type": "integer",
+ "description": "Font size of the field value in pixels.",
+ "example": 12
+ },
+ "font_type": {
+ "type": "string",
+ "description": "Font type of the field value.",
+ "enum": [
+ "bold",
+ "italic",
+ "bold_italic"
+ ]
+ },
+ "font": {
+ "type": "string",
+ "description": "Font family of the field value.",
+ "enum": [
+ "Times",
+ "Helvetica",
+ "Courier"
+ ]
+ },
+ "color": {
+ "type": "string",
+ "description": "Font color of the field value.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ],
+ "default": "black"
+ },
+ "background": {
+ "type": "string",
+ "description": "Field box background color.",
+ "enum": [
+ "black",
+ "white",
+ "blue"
+ ]
+ },
+ "align": {
+ "type": "string",
+ "description": "Horizontal alignment of the field text value.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "default": "left"
+ },
+ "valign": {
+ "type": "string",
+ "description": "Vertical alignment of the field text value.",
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "default": "center"
+ },
+ "format": {
+ "type": "string",
+ "description": "The data format for different field types. - Date field: accepts formats such as DD/MM/YYYY (default: MM/DD/YYYY). - Signature field: accepts drawn, typed, drawn_or_typed (default), or upload. - Number field: accepts currency formats such as usd, eur, gbp.",
+ "example": "DD/MM/YYYY"
+ },
+ "price": {
+ "type": "number",
+ "description": "Price value of the payment field. Only for payment fields.",
+ "example": 99.99
+ },
+ "currency": {
+ "type": "string",
+ "description": "Currency value of the payment field. Only for payment fields.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD"
+ ],
+ "default": "USD"
+ },
+ "mask": {
+ "description": "Set `true` to make sensitive data masked on the document.",
+ "oneOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": false
+ },
+ "reasons": {
+ "description": "An array of signature reasons to choose from.",
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Create a template from HTML
+
+The API endpoint provides the functionality to seamlessly generate a PDF document template by utilizing the provided HTML content while incorporating pre-defined fields. Related Guides Create PDF document fillable form with HTML
+
+```typescript
+import wabosign from "@wabosign/api";
+
+wabosign.configure({ key: "API_KEY", url: "https://api.wabosign.com" });
+
+const template = await wabosign.createTemplateFromHtml({
+ html: `
Lorem Ipsum is simply dummy text of the
+
+
+and typesetting industry
Lorem Ipsum is simply dummy text of the\n\n\nand typesetting industry
\n"
+ },
+ "html_header": {
+ "type": "string",
+ "description": "HTML template of the header to be displayed on every page."
+ },
+ "html_footer": {
+ "type": "string",
+ "description": "HTML template of the footer to be displayed on every page."
+ },
+ "name": {
+ "type": "string",
+ "description": "Template name. Random uuid will be assigned when not specified.",
+ "example": "Test Template"
+ },
+ "size": {
+ "type": "string",
+ "default": "Letter",
+ "description": "Page size. Letter 8.5 x 11 will be assigned when not specified.",
+ "enum": [
+ "Letter",
+ "Legal",
+ "Tabloid",
+ "Ledger",
+ "A0",
+ "A1",
+ "A2",
+ "A3",
+ "A4",
+ "A5",
+ "A6"
+ ],
+ "example": "A4"
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this template within your app. Existing template with specified `external_id` will be updated with a new HTML.",
+ "example": "714d974e-83d8-11ee-b962-0242ac120002"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The folder's name to which the template should be created."
+ },
+ "shared_link": {
+ "type": "boolean",
+ "description": "set to `true` to make the template available via a shared link. This will allow anyone with the link to create a submission from this template.",
+ "default": true
+ },
+ "documents": {
+ "type": "array",
+ "description": "The list of documents built from HTML. Can be used to create a template with multiple documents. Leave `documents` param empty when using a top-level `html` param for a template with a single document.",
+ "items": {
+ "type": "object",
+ "required": [
+ "html"
+ ],
+ "properties": {
+ "html": {
+ "type": "string",
+ "description": "HTML template with field tags.",
+ "example": "
Lorem Ipsum is simply dummy text of the\n\n\nand typesetting industry
\n"
+ },
+ "name": {
+ "type": "string",
+ "description": "Document name. Random uuid will be assigned when not specified.",
+ "example": "Test Document"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Clone a template
+
+The API endpoint allows you to clone existing template into a new template.
+
+```typescript
+import wabosign from "@wabosign/api";
+
+wabosign.configure({ key: "API_KEY", url: "https://api.wabosign.com" });
+
+const template = await wabosign.cloneTemplate(1000001, {
+ name: "Cloned Template"
+});
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Clone a template",
+ "operationId": "cloneTemplate",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the documents template.",
+ "example": 1000001
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Template name. Existing name with (Clone) suffix will be used if not specified.",
+ "example": "Cloned Template"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The folder's name to which the template should be cloned."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this template within your app."
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Merge templates
+
+The API endpoint allows you to merge multiple templates with documents and fields into a new combined template.
+
+```typescript
+import wabosign from "@wabosign/api";
+
+wabosign.configure({ key: "API_KEY", url: "https://api.wabosign.com" });
+
+const template = await wabosign.mergeTemplates({
+ template_ids: [
+ 321,
+ 432
+ ],
+ name: "Merged Template"
+});
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Merge templates",
+ "operationId": "mergeTemplate",
+ "parameters": [],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "template_ids"
+ ],
+ "properties": {
+ "template_ids": {
+ "type": "array",
+ "description": "An array of template ids to merge into a new template.",
+ "items": {
+ "type": "integer"
+ },
+ "example": [
+ 321,
+ 432
+ ]
+ },
+ "name": {
+ "type": "string",
+ "description": "Template name. Existing name with (Merged) suffix will be used if not specified.",
+ "example": "Merged Template"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The name of the folder in which the merged template should be placed."
+ },
+ "external_id": {
+ "type": "string",
+ "description": "Your application-specific unique string key to identify this template within your app."
+ },
+ "shared_link": {
+ "type": "boolean",
+ "description": "set to `true` to make the template available via a shared link. This will allow anyone with the link to create a submission from this template.",
+ "default": true
+ },
+ "roles": {
+ "type": "array",
+ "description": "An array of submitter role names to be used in the merged template.",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "Agent",
+ "Customer"
+ ]
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Update a template
+
+The API endpoint provides the functionality to move a document template to a different folder and update the name of the template.
+
+```typescript
+import wabosign from "@wabosign/api";
+
+wabosign.configure({ key: "API_KEY", url: "https://api.wabosign.com" });
+
+const template = await wabosign.updateTemplate(1000001, {
+ name: "New Document Name",
+ folder_name: "New Folder"
+});
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Update a template",
+ "operationId": "updateTemplate",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the document template.",
+ "example": 1000001
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the template",
+ "example": "New Document Name"
+ },
+ "folder_name": {
+ "type": "string",
+ "description": "The folder's name to which the template should be moved.",
+ "example": "New Folder"
+ },
+ "roles": {
+ "type": "array",
+ "description": "An array of submitter role names to update the template with.",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "Agent",
+ "Customer"
+ ]
+ },
+ "archived": {
+ "type": "boolean",
+ "description": "Set `false` to unarchive template."
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Update template documents
+
+The API endpoint allows you to add, remove or replace documents in the template with provided PDF/DOCX file or HTML content.
+
+```typescript
+import wabosign from "@wabosign/api";
+
+wabosign.configure({ key: "API_KEY", url: "https://api.wabosign.com" });
+
+const template = await wabosign.updateTemplateDocuments(1000001, {
+ documents: [
+ {
+ file: "string"
+ }
+ ]
+});
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Update template documents",
+ "operationId": "addDocumentToTemplate",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the documents template.",
+ "example": 1000001
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "documents": {
+ "type": "array",
+ "description": "The list of documents to add or replace in the template.",
+ "items": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Document name. Random uuid will be assigned when not specified.",
+ "example": "Test Template"
+ },
+ "file": {
+ "type": "string",
+ "format": "base64",
+ "description": "Base64-encoded content of the PDF or DOCX file or downloadable file URL. Leave it empty if you create a new document using HTML param."
+ },
+ "html": {
+ "type": "string",
+ "description": "HTML template with field tags. Leave it empty if you add a document via PDF or DOCX base64 encoded file param or URL."
+ },
+ "position": {
+ "type": "integer",
+ "description": "Position of the document. By default will be added as the last document in the template.",
+ "example": 0
+ },
+ "replace": {
+ "type": "boolean",
+ "default": false,
+ "description": "Set to `true` to replace existing document with a new file at `position`. Existing document fields will be transferred to the new document if it doesn't contain any fields."
+ },
+ "remove": {
+ "type": "boolean",
+ "default": false,
+ "description": "Set to `true` to remove existing document at given `position` or with given `name`."
+ }
+ }
+ }
+ },
+ "merge": {
+ "type": "boolean",
+ "default": false,
+ "description": "Set to `true` to merge all existing and new documents into a single PDF document in the template."
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+### Archive a template
+
+The API endpoint allows you to archive a document template.
+
+```typescript
+import wabosign from "@wabosign/api";
+
+wabosign.configure({ key: "API_KEY", url: "https://api.wabosign.com" });
+
+await wabosign.archiveTemplate(1000001);
+```
+
+```json
+{
+ "security": [
+ {
+ "AuthToken": []
+ }
+ ],
+ "tags": [
+ "Templates"
+ ],
+ "summary": "Archive a template",
+ "operationId": "archiveTemplate",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ },
+ "description": "The unique identifier of the document template.",
+ "example": 1000001
+ }
+ ]
+}
+```
+
diff --git a/docs/embedding/form-builder-javascript.md b/docs/embedding/form-builder-javascript.md
index 9867439d..9d863bd5 100644
--- a/docs/embedding/form-builder-javascript.md
+++ b/docs/embedding/form-builder-javascript.md
@@ -3,7 +3,7 @@
### Example Code
```javascript
-
+
@@ -162,7 +162,7 @@ export class AppComponent {}
"type": "string",
"required": false,
"description": "URL to redirect to after the submission completion.",
- "example": "https://sign.wabo.cc/success"
+ "example": "https://docuseal.com/success"
},
"completedMessage": {
"type": "object",
diff --git a/docs/embedding/signing-form-javascript.md b/docs/embedding/signing-form-javascript.md
index 52b60e32..b0ccf4b9 100644
--- a/docs/embedding/signing-form-javascript.md
+++ b/docs/embedding/signing-form-javascript.md
@@ -3,11 +3,11 @@
### Example Code
```javascript
-
+
@@ -240,7 +240,7 @@
"type": "string",
"required": false,
"description": "URL to redirect to after the submission completion.",
- "example": "https://sign.wabo.cc/success"
+ "example": "https://docuseal.com/success"
},
"data-completed-message-title": {
"type": "string",
diff --git a/docs/embedding/signing-form-react.md b/docs/embedding/signing-form-react.md
index 622dad4f..949adb43 100644
--- a/docs/embedding/signing-form-react.md
+++ b/docs/embedding/signing-form-react.md
@@ -10,7 +10,7 @@ export function App() {
return (
console.log(data)}
/>
@@ -159,7 +159,7 @@ export function App() {
"type": "string",
"required": false,
"description": "URL to redirect to after the submission completion.",
- "example": "https://sign.wabo.cc/success"
+ "example": "https://docuseal.com/success"
},
"completedMessage": {
"type": "object",
diff --git a/docs/embedding/signing-form-vue.md b/docs/embedding/signing-form-vue.md
index 1b10c87d..6014da83 100644
--- a/docs/embedding/signing-form-vue.md
+++ b/docs/embedding/signing-form-vue.md
@@ -5,7 +5,7 @@
```vue
@@ -227,7 +227,7 @@ export default {
"type": "string",
"required": false,
"description": "URL to redirect to after the submission completion.",
- "example": "https://sign.wabo.cc/success"
+ "example": "https://docuseal.com/success"
},
"completed-message": {
"type": "object",
diff --git a/docs/openapi.json b/docs/openapi.json
index f503f9d3..ad6bdc99 100644
--- a/docs/openapi.json
+++ b/docs/openapi.json
@@ -2,22 +2,22 @@
"openapi": "3.0.0",
"servers": [
{
- "url": "https://sign.wabo.cc/api",
- "description": "Production"
+ "url": "https://api.wabosign.com",
+ "description": "Global Server"
},
{
- "url": "https://sign.wabo.cc/api",
+ "url": "https://api.wabosign.eu",
"description": "EU Server"
}
],
"info": {
"version": "1.0.0",
"title": "WaboSign API",
- "description": "WaboSign API specs (forked from DocuSeal, AGPLv3)",
+ "description": "WaboSign API specs",
"contact": {
"name": "WaboSign",
- "email": "wabosign@wabo.cc",
- "url": "https://sign.wabo.cc"
+ "email": "admin@wabosign.com",
+ "url": "https://www.wabosign.com"
}
},
"components": {
@@ -572,8 +572,8 @@
{
"id": 5,
"uuid": "d94e615f-76e3-46d5-8f98-36bdacb8664a",
- "url": "https://sign.wabo.cc/file/hash/sample-document.pdf",
- "preview_image_url": "https://sign.wabo.cc/file/hash/0.jpg",
+ "url": "https://wabosign.com/file/hash/sample-document.pdf",
+ "preview_image_url": "https://wabosign.com/file/hash/0.jpg",
"filename": "example-document.pdf"
}
]
@@ -1018,8 +1018,8 @@
{
"id": 5,
"uuid": "d94e615f-76e3-46d5-8f98-36bdacb8664a",
- "url": "https://sign.wabo.cc/file/hash/sample-document.pdf",
- "preview_image_url": "https://sign.wabo.cc/file/hash/0.jpg",
+ "url": "https://wabosign.com/file/hash/sample-document.pdf",
+ "preview_image_url": "https://wabosign.com/file/hash/0.jpg",
"filename": "example-document.pdf"
}
]
@@ -1600,7 +1600,7 @@
"submitters_order": "random",
"slug": "VyL4szTwYoSvXq",
"status": "completed",
- "audit_log_url": "https://sign.wabo.cc/file/hash/example.pdf",
+ "audit_log_url": "https://wabosign.com/file/hash/example.pdf",
"combined_document_url": null,
"expire_at": null,
"completed_at": "2023-12-10T15:49:21.895Z",
@@ -1665,7 +1665,7 @@
"Submissions"
],
"summary": "Create a submission",
- "description": "This API endpoint allows you to create signature requests (submissions) for a document template and send them to the specified submitters (signers). Related Guides Send documents for signature via API Pre-fill PDF document form fields with API",
+ "description": "This API endpoint allows you to create signature requests (submissions) for a document template and send them to the specified submitters (signers). Related Guides Send documents for signature via API Pre-fill PDF document form fields with API",
"operationId": "createSubmission",
"parameters": [],
"requestBody": {
@@ -1681,7 +1681,7 @@
"properties": {
"template_id": {
"type": "integer",
- "description": "The unique identifier of the template. Document template forms can be created via the Web UI, PDF and DOCX API, or HTML API.",
+ "description": "The unique identifier of the template. Document template forms can be created via the Web UI, PDF and DOCX API, or HTML API.",
"example": 1000001
},
"send_email": {
@@ -2264,7 +2264,7 @@
"send_sms": false
},
"role": "First Party",
- "embed_src": "https://sign.wabo.cc/s/pAMimKcyrLjqVt"
+ "embed_src": "https://wabosign.com/s/pAMimKcyrLjqVt"
}
]
}
@@ -2723,7 +2723,7 @@
"source": "link",
"submitters_order": "random",
"slug": "VyL4szTwYoSvXq",
- "audit_log_url": "https://sign.wabo.cc/blobs/proxy/hash/example.pdf",
+ "audit_log_url": "https://wabosign.com/blobs/proxy/hash/example.pdf",
"combined_document_url": null,
"completed_at": "2023-12-14T15:49:21.701Z",
"expire_at": null,
@@ -2757,7 +2757,7 @@
"documents": [
{
"name": "example",
- "url": "https://sign.wabo.cc/blobs/proxy/hash/example.pdf"
+ "url": "https://wabosign.com/blobs/proxy/hash/example.pdf"
}
],
"role": "First Party"
@@ -2789,7 +2789,7 @@
"documents": [
{
"name": "example",
- "url": "https://sign.wabo.cc/file/hash/example.pdf"
+ "url": "https://wabosign.com/file/hash/example.pdf"
}
],
"status": "completed"
@@ -2924,7 +2924,7 @@
"documents": [
{
"name": "example",
- "url": "https://sign.wabo.cc/file/hash/example.pdf"
+ "url": "https://wabosign.com/file/hash/example.pdf"
}
]
}
@@ -3204,7 +3204,7 @@
"send_sms": false
},
"role": "First Party",
- "embed_src": "https://sign.wabo.cc/s/pAMimKcyrLjqVt"
+ "embed_src": "https://wabosign.com/s/pAMimKcyrLjqVt"
},
{
"id": 2,
@@ -3256,7 +3256,7 @@
"Submissions"
],
"summary": "Create a submission from PDF",
- "description": "The API endpoint provides the functionality to create one-off submission request from a PDF. Use {{Field Name;role=Signer1;type=date}} text tags to define fillable fields in the document. See https://sign.wabo.cc/examples/fieldtags.pdf for more text tag formats. Or specify the exact pixel coordinates of the document fields using `fields` param. Related Guides Use embedded text field tags to create a fillable form\n",
+ "description": "The API endpoint provides the functionality to create one-off submission request from a PDF. Use {{Field Name;role=Signer1;type=date}} text tags to define fillable fields in the document. See https://www.wabosign.com/examples/fieldtags.pdf for more text tag formats. Or specify the exact pixel coordinates of the document fields using `fields` param. Related Guides Use embedded text field tags to create a fillable form\n",
"operationId": "createSubmissionFromPdf",
"parameters": [],
"requestBody": {
@@ -4220,7 +4220,7 @@
"completed_redirect_url": "https://example.com/"
},
"role": "First Party",
- "embed_src": "https://sign.wabo.cc/s/pAMimKcyrLjqVt"
+ "embed_src": "https://wabosign.com/s/pAMimKcyrLjqVt"
}
],
"source": "api",
@@ -4271,7 +4271,7 @@
"Submissions"
],
"summary": "Create a submission from DOCX",
- "description": "The API endpoint provides functionality to create a one-off submission request from a DOCX file with dynamic content variables. Use [[variable_name]] text tags to define dynamic content variables in the document. See https://sign.wabo.cc/examples/demo_template.docx for the specific text variable syntax, including dynamic content tables and list. You can also use the {{signature}} field syntax to define fillable fields, as in a PDF. Related Guides Use dynamic content variables in DOCX to create personalized documents",
+ "description": "The API endpoint provides functionality to create a one-off submission request from a DOCX file with dynamic content variables. Use [[variable_name]] text tags to define dynamic content variables in the document. See https://www.wabosign.com/examples/demo_template.docx for the specific text variable syntax, including dynamic content tables and list. You can also use the {{signature}} field syntax to define fillable fields, as in a PDF. Related Guides Use dynamic content variables in DOCX to create personalized documents",
"operationId": "createSubmissionFromDocx",
"parameters": [],
"requestBody": {
@@ -5133,7 +5133,7 @@
"completed_redirect_url": "https://example.com/"
},
"role": "First Party",
- "embed_src": "https://sign.wabo.cc/s/pAMimKcyrLjqVt"
+ "embed_src": "https://wabosign.com/s/pAMimKcyrLjqVt"
}
],
"source": "api",
@@ -5184,7 +5184,7 @@
"Submissions"
],
"summary": "Create a submission from HTML",
- "description": "This API endpoint allows you to create a one-off submission request document using the provided HTML content, with special field tags rendered as a fillable and signable form. Related Guides Create PDF document fillable form with HTML",
+ "description": "This API endpoint allows you to create a one-off submission request document using the provided HTML content, with special field tags rendered as a fillable and signable form. Related Guides Create PDF document fillable form with HTML",
"operationId": "createSubmissionFromHtml",
"parameters": [],
"requestBody": {
@@ -6061,7 +6061,7 @@
"completed_redirect_url": "https://example.com/"
},
"role": "First Party",
- "embed_src": "https://sign.wabo.cc/s/pAMimKcyrLjqVt"
+ "embed_src": "https://wabosign.com/s/pAMimKcyrLjqVt"
}
],
"source": "api",
@@ -6439,7 +6439,7 @@
"documents": [
{
"name": "sample-document",
- "url": "https://sign.wabo.cc/file/hash/sample-document.pdf"
+ "url": "https://wabosign.com/file/hash/sample-document.pdf"
}
],
"role": "First Party"
@@ -6459,7 +6459,7 @@
"Submitters"
],
"summary": "Update a submitter",
- "description": "The API endpoint allows you to update submitter details, pre-fill or update field values and re-send emails. Related Guides Automatically sign documents via API",
+ "description": "The API endpoint allows you to update submitter details, pre-fill or update field values and re-send emails. Related Guides Automatically sign documents via API",
"operationId": "updateSubmitter",
"parameters": [
{
@@ -6975,7 +6975,7 @@
],
"documents": [],
"role": "First Party",
- "embed_src": "https://sign.wabo.cc/s/pAMimKcyrLjqVt"
+ "embed_src": "https://wabosign.com/s/pAMimKcyrLjqVt"
}
}
}
@@ -7401,7 +7401,7 @@
"documents": [
{
"name": "sample-document",
- "url": "https://sign.wabo.cc/file/eyJfcmFpbHMiOnsiIiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--f9758362acced0f3c86cdffad02800e/sample-document.pdf"
+ "url": "https://wabosign.com/file/eyJfcmFpbHMiOnsiIiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--f9758362acced0f3c86cdffad02800e/sample-document.pdf"
}
],
"role": "First Party"
@@ -7898,7 +7898,7 @@
{
"id": 3,
"uuid": "09a8bc73-a7a9-4fd9-8173-95752bdf0af5",
- "url": "https://sign.wabo.cc/file/hash/Test%20Template.pdf"
+ "url": "https://wabosign.com/file/hash/Test%20Template.pdf"
}
]
}
@@ -8358,7 +8358,7 @@
{
"id": 9,
"uuid": "ded62277-9705-4fac-b5dc-58325d4102eb",
- "url": "https://sign.wabo.cc/file/hash/sample-document.pdf",
+ "url": "https://wabosign.com/file/hash/sample-document.pdf",
"filename": "sample-document.pdf"
}
]
@@ -8380,7 +8380,7 @@
"Templates"
],
"summary": "Create a template from HTML",
- "description": "The API endpoint provides the functionality to seamlessly generate a PDF document template by utilizing the provided HTML content while incorporating pre-defined fields. Related Guides Create PDF document fillable form with HTML",
+ "description": "The API endpoint provides the functionality to seamlessly generate a PDF document template by utilizing the provided HTML content while incorporating pre-defined fields. Related Guides Create PDF document fillable form with HTML",
"operationId": "createTemplateFromHtml",
"parameters": [],
"requestBody": {
@@ -8871,7 +8871,7 @@
{
"id": 3,
"uuid": "09a8bc73-a7a9-4fd9-8173-95752bdf0af5",
- "url": "https://sign.wabo.cc/file/hash/Test%20Template.pdf"
+ "url": "https://wabosign.com/file/hash/Test%20Template.pdf"
}
]
}
@@ -8892,7 +8892,7 @@
"Templates"
],
"summary": "Create a template from Word DOCX",
- "description": "The API endpoint provides the functionality to create a fillable document template for existing Microsoft Word document. Use {{Field Name;role=Signer1;type=date}} text tags to define fillable fields in the document. See https://sign.wabo.cc/examples/fieldtags.docx for more text tag formats. Or specify the exact pixel coordinates of the document fields using `fields` param. Related Guides Use embedded text field tags to create a fillable form\n",
+ "description": "The API endpoint provides the functionality to create a fillable document template for existing Microsoft Word document. Use {{Field Name;role=Signer1;type=date}} text tags to define fillable fields in the document. See https://www.wabosign.com/examples/fieldtags.docx for more text tag formats. Or specify the exact pixel coordinates of the document fields using `fields` param. Related Guides Use embedded text field tags to create a fillable form\n",
"operationId": "createTemplateFromDocx",
"parameters": [],
"requestBody": {
@@ -9595,7 +9595,7 @@
{
"id": 7,
"uuid": "48d2998f-266b-47e4-beb2-250ab7ccebdf",
- "url": "https://sign.wabo.cc/hash/DemoPDF.pdf"
+ "url": "https://wabosign.com/hash/DemoPDF.pdf"
}
]
}
@@ -9616,7 +9616,7 @@
"Templates"
],
"summary": "Create a template from PDF",
- "description": "The API endpoint provides the functionality to create a fillable document template for a PDF file. Use {{Field Name;role=Signer1;type=date}} text tags to define fillable fields in the document. See https://sign.wabo.cc/examples/fieldtags.pdf for more text tag formats. Or specify the exact pixel coordinates of the document fields using `fields` param. Related Guides Use embedded text field tags to create a fillable form\n",
+ "description": "The API endpoint provides the functionality to create a fillable document template for a PDF file. Use {{Field Name;role=Signer1;type=date}} text tags to define fillable fields in the document. See https://www.wabosign.com/examples/fieldtags.pdf for more text tag formats. Or specify the exact pixel coordinates of the document fields using `fields` param. Related Guides Use embedded text field tags to create a fillable form\n",
"operationId": "createTemplateFromPdf",
"parameters": [],
"requestBody": {
@@ -10337,7 +10337,7 @@
{
"id": 7,
"uuid": "48d2998f-266b-47e4-beb2-250ab7ccebdf",
- "url": "https://sign.wabo.cc/file/hash/Demo%20PDF.pdf"
+ "url": "https://wabosign.com/file/hash/Demo%20PDF.pdf"
}
]
}
@@ -10816,7 +10816,7 @@
{
"id": 9,
"uuid": "ded62277-9705-4fac-b5dc-58325d4102eb",
- "url": "https://sign.wabo.cc/file/hash/sample-document.pdf",
+ "url": "https://wabosign.com/file/hash/sample-document.pdf",
"filename": "sample-document.pdf"
}
]
diff --git a/docs/webhooks/form-webhook.md b/docs/webhooks/form-webhook.md
index 430d3349..1287e303 100644
--- a/docs/webhooks/form-webhook.md
+++ b/docs/webhooks/form-webhook.md
@@ -9,7 +9,7 @@ During the form filling and signing process, 3 types of events may occur and are
It's important to note that each of these events contain information available at the time of dispatch, so some data may be missing or incomplete depending on the specific event. Failed webhook requests (4xx, 5xx) are automatically retried multiple times within 48 hours (every 2^attempt minutes) for all production accounts.
**Related Guides**
-[Download Signed Documents](https://sign.wabo.cc/guides/download-signed-documents)
+[Download Signed Documents](https://www.wabosign.com/guides/download-signed-documents)
```json
{
@@ -130,7 +130,7 @@ During the form filling and signing process, 3 types of events may occur and are
},
"combined_document_url": {
"type": "string",
- "description": "The URL of the combined documents with audit log. Combined documents can be enabled via /settings/accounts."
+ "description": "The URL of the combined documents with audit log. Combined documents can be enabled via /settings/accounts."
},
"status": {
"type": "string",
diff --git a/lib/ability.rb b/lib/ability.rb
index b9b2639b..da472f58 100644
--- a/lib/ability.rb
+++ b/lib/ability.rb
@@ -4,69 +4,25 @@ class Ability
include CanCan::Ability
def initialize(user)
- return if user.blank?
-
- grant_personal_abilities(user)
-
- case user.role
- when User::ADMIN_ROLE then grant_admin_abilities(user)
- when User::EDITOR_ROLE then grant_editor_abilities(user)
- when User::VIEWER_ROLE then grant_viewer_abilities(user)
- end
- end
-
- private
-
- def grant_personal_abilities(user)
- can :read, Account, id: user.account_id
- can :manage, User, id: user.id
- can :manage, UserConfig, user_id: user.id
- can :manage, EncryptedUserConfig, user_id: user.id
- can :manage, AccessToken, user_id: user.id
- end
-
- def grant_admin_abilities(user)
can %i[read create update], Template, Abilities::TemplateConditions.collection(user) do |template|
Abilities::TemplateConditions.entity(template, user:, ability: 'manage')
end
- can :destroy, Template, account_id: user.account_id
- can :manage, TemplateFolder, account_id: user.account_id
- can :manage, TemplateSharing, template: { account_id: user.account_id }
- can :manage, Submission, account_id: user.account_id
- can :manage, Submitter, account_id: user.account_id
- can :manage, User, account_id: user.account_id
- can :manage, EncryptedConfig, account_id: user.account_id
- can :manage, AccountConfig, account_id: user.account_id
- can :manage, Account, id: user.account_id
- can :manage, McpToken, user_id: user.id
- can :manage, WebhookUrl, account_id: user.account_id
+ can :destroy, Template, account_id: user.account_id
+ can :manage, TemplateFolder, account_id: user.account_id
+ can :manage, TemplateSharing, template: { account_id: user.account_id }
+ can :manage, Submission, account_id: user.account_id
+ can :manage, Submitter, account_id: user.account_id
+ can :manage, User, account_id: user.account_id
+ can :manage, EncryptedConfig, account_id: user.account_id
+ can :manage, EncryptedUserConfig, user_id: user.id
+ can :manage, AccountConfig, account_id: user.account_id
+ can :manage, UserConfig, user_id: user.id
+ can :manage, Account, id: user.account_id
+ can :manage, AccessToken, user_id: user.id
+ can :manage, McpToken, user_id: user.id
+ can :manage, WebhookUrl, account_id: user.account_id
can :manage, :mcp
end
-
- def grant_editor_abilities(user)
- can %i[read create update], Template, Abilities::TemplateConditions.collection(user) do |template|
- Abilities::TemplateConditions.entity(template, user:, ability: 'manage')
- end
-
- can :destroy, Template, account_id: user.account_id
- can :manage, TemplateFolder, account_id: user.account_id
- can :manage, TemplateSharing, template: { account_id: user.account_id }
- can :manage, Submission, account_id: user.account_id
- can :manage, Submitter, account_id: user.account_id
- can :read, AccountConfig, account_id: user.account_id
- end
-
- def grant_viewer_abilities(user)
- can :read, Template, Abilities::TemplateConditions.collection(user, ability: :read) do |template|
- Abilities::TemplateConditions.entity(template, user:, ability: 'read')
- end
-
- can :read, TemplateFolder, account_id: user.account_id
- can :read, TemplateSharing, template: { account_id: user.account_id }
- can :read, Submission, account_id: user.account_id
- can :read, Submitter, account_id: user.account_id
- can :read, AccountConfig, account_id: user.account_id
- end
end
diff --git a/lib/accounts.rb b/lib/accounts.rb
index 2dd99849..6efdea2c 100644
--- a/lib/accounts.rb
+++ b/lib/accounts.rb
@@ -1,7 +1,7 @@
# frozen_string_literal: true
module Accounts
- LINK_EXPIRES_AT = 40.minutes
+ LINK_EXPIRES_AT = ENV.fetch('FILE_URLS_EXPIRE_MINUTES', '40').to_i.minutes
module_function
@@ -13,7 +13,7 @@ module Accounts
new_user.uuid = SecureRandom.uuid
new_user.account = new_account
new_user.encrypted_password = SecureRandom.hex
- new_user.email = "#{SecureRandom.hex}@#{Wabosign::HOST}"
+ new_user.email = "#{SecureRandom.hex}@wabosign.com"
account.templates.each do |template|
new_template = template.dup
diff --git a/lib/docuseal.rb b/lib/docuseal.rb
new file mode 100644
index 00000000..a2e97d7e
--- /dev/null
+++ b/lib/docuseal.rb
@@ -0,0 +1,125 @@
+# frozen_string_literal: true
+
+module Wabosign
+ PRODUCT_URL = 'https://www.wabosign.com'
+ PRODUCT_EMAIL_URL = ENV.fetch('PRODUCT_EMAIL_URL', PRODUCT_URL)
+ NEWSLETTER_URL = "#{PRODUCT_URL}/newsletters".freeze
+ ENQUIRIES_URL = "#{PRODUCT_URL}/enquiries".freeze
+ PRODUCT_NAME = 'WaboSign'
+ DEFAULT_APP_URL = ENV.fetch('APP_URL', 'http://localhost:3000')
+ GITHUB_URL = 'https://github.com/wabolabs/wabosign'
+ DISCORD_URL = 'https://discord.gg/qygYCDGck9'
+ TWITTER_URL = 'https://twitter.com/docusealco'
+ TWITTER_HANDLE = '@docusealco'
+ CHATGPT_URL = "#{PRODUCT_URL}/chat".freeze
+ SUPPORT_EMAIL = 'support@wabosign.com'
+ HOST = ENV.fetch('HOST', 'localhost')
+ AATL_CERT_NAME = 'wabosign_aatl'
+ CONSOLE_URL = if Rails.env.development?
+ 'http://console.localhost.io:3001'
+ elsif ENV['MULTITENANT'] == 'true'
+ "https://console.#{HOST}"
+ else
+ 'https://console.wabosign.com'
+ end
+ CLOUD_URL = if Rails.env.development?
+ 'http://localhost:3000'
+ else
+ 'https://wabosign.com'
+ end
+ CDN_URL = if Rails.env.development?
+ 'http://localhost:3000'
+ elsif ENV['MULTITENANT'] == 'true'
+ "https://cdn.#{HOST}"
+ else
+ 'https://cdn.wabosign.com'
+ end
+
+ CERTS = JSON.parse(ENV.fetch('CERTS', '{}'))
+ TIMESERVER_URL = ENV.fetch('TIMESERVER_URL', nil)
+ VERSION_FILE_PATH = Rails.root.join('.version')
+ VERSION_FILE2_PATH = Rails.public_path.join('version')
+
+ DEFAULT_URL_OPTIONS = {
+ host: HOST,
+ protocol: ENV['FORCE_SSL'].present? ? 'https' : 'http'
+ }.freeze
+
+ module_function
+
+ def version
+ @version ||=
+ if VERSION_FILE_PATH.exist?
+ VERSION_FILE_PATH.read.strip
+ elsif VERSION_FILE2_PATH.exist?
+ VERSION_FILE2_PATH.each_line.first.to_s.strip
+ end
+ end
+
+ def multitenant?
+ ENV['MULTITENANT'] == 'true'
+ end
+
+ def advanced_formats?
+ multitenant?
+ end
+
+ def demo?
+ ENV['DEMO'] == 'true'
+ end
+
+ def active_storage_public?
+ ENV['ACTIVE_STORAGE_PUBLIC'] == 'true'
+ end
+
+ def default_pkcs
+ return if Wabosign::CERTS['enabled'] == false
+
+ @default_pkcs ||= GenerateCertificate.load_pkcs(Wabosign::CERTS)
+ end
+
+ def fulltext_search?
+ return @fulltext_search unless @fulltext_search.nil?
+
+ @fulltext_search =
+ if SearchEntry.table_exists?
+ Wabosign.multitenant? || AccountConfig.exists?(key: :fulltext_search, value: true)
+ else
+ false
+ end
+ end
+
+ def enable_pwa?
+ true
+ end
+
+ def pdf_format
+ @pdf_format ||= ENV['PDF_FORMAT'].to_s.downcase
+ end
+
+ def trusted_certs
+ @trusted_certs ||=
+ ENV['TRUSTED_CERTS'].to_s.gsub('\\n', "\n").split("\n\n").map do |base64|
+ OpenSSL::X509::Certificate.new(base64)
+ end
+ end
+
+ def default_url_options
+ return DEFAULT_URL_OPTIONS if multitenant?
+
+ @default_url_options ||= begin
+ value = EncryptedConfig.find_by(key: EncryptedConfig::APP_URL_KEY)&.value if ENV['APP_URL'].blank?
+ value ||= DEFAULT_APP_URL
+ url = Addressable::URI.parse(value)
+ { host: url.host, port: url.port, protocol: url.scheme }
+ end
+ end
+
+ def product_name
+ PRODUCT_NAME
+ end
+
+ def refresh_default_url_options!
+ @default_url_options = nil
+ end
+end
diff --git a/lib/load_bmp.rb b/lib/load_bmp.rb
index 9b99d964..48320fdb 100644
--- a/lib/load_bmp.rb
+++ b/lib/load_bmp.rb
@@ -39,7 +39,7 @@ module LoadBmp
bands = header_data[:bpp] / 8
end
- image = Vips::Image.new_from_memory(final_pixel_data, header_data[:width], header_data[:height], bands, :uchar)
+ image = Vips::Image.new_from_memory_copy(final_pixel_data, header_data[:width], header_data[:height], bands, :uchar)
image = image.flip(:vertical) if header_data[:orientation] == -1
diff --git a/lib/load_ico.rb b/lib/load_ico.rb
index a8c3061d..1eeb5ea9 100644
--- a/lib/load_ico.rb
+++ b/lib/load_ico.rb
@@ -43,7 +43,9 @@ module LoadIco
raise ArgumentError, 'Unable to load' unless image_data_bytes && image_data_bytes.bytesize == best_entry[:size]
- return Vips::Image.new_from_buffer(image_data_bytes, '') if image_data_bytes.start_with?(PNG_SIGNATURE)
+ if image_data_bytes.start_with?(PNG_SIGNATURE)
+ return ImageUtils.load_vips(image_data_bytes, content_type: 'image/png')
+ end
image = load_image_entry(image_data_bytes, best_entry[:width], best_entry[:height])
@@ -200,13 +202,13 @@ module LoadIco
return nil unless pixel_data_string.bytesize == expected_bytes && expected_bytes.positive?
- Vips::Image.new_from_memory(
+ Vips::Image.new_from_memory_copy(
pixel_data_string,
dib_width,
image_pixel_height,
4,
:uchar
- )
+ ).copy(interpretation: :srgb)
end
# rubocop:enable Metrics
end
diff --git a/lib/mcp/handle_request.rb b/lib/mcp/handle_request.rb
index 3a7b66c9..71a98645 100644
--- a/lib/mcp/handle_request.rb
+++ b/lib/mcp/handle_request.rb
@@ -26,7 +26,7 @@ module Mcp
result: {
protocolVersion: '2025-11-25',
serverInfo: {
- name: Wabosign.branded_product_name(current_user&.account),
+ name: 'WaboSign',
version: Wabosign.version.to_s
},
capabilities: {
diff --git a/lib/pdf_icons.rb b/lib/pdf_icons.rb
index 34a39b72..d9beab6e 100644
--- a/lib/pdf_icons.rb
+++ b/lib/pdf_icons.rb
@@ -20,26 +20,6 @@ module PdfIcons
StringIO.new(logo_data)
end
- # Returns binary IO for the account's uploaded logo when attached,
- # otherwise the default WaboSign mark. SVG uploads are rasterised via
- # ActiveStorage variants (libvips + librsvg ship in the production image
- # via the `vips` Alpine package). On any failure path we fall back to the
- # default mark so audit-trail generation never crashes on a bad logo.
- def account_logo_io(account)
- return logo_io if account.nil? || !account.logo.attached?
-
- blob = account.logo
- if blob.content_type == 'image/svg+xml'
- variant = blob.variant(resize_to_limit: [WIDTH, HEIGHT], format: :png).processed
- StringIO.new(variant.download)
- else
- StringIO.new(blob.download)
- end
- rescue StandardError => e
- Rails.logger.warn("[PdfIcons] account_logo_io fallback for account=#{account&.id}: #{e.class}: #{e.message}")
- logo_io
- end
-
def stamp_logo_io
StringIO.new(stamp_logo_data)
end
diff --git a/lib/puma/plugin/sidekiq_embed.rb b/lib/puma/plugin/sidekiq_embed.rb
index 42ea96db..921be32c 100644
--- a/lib/puma/plugin/sidekiq_embed.rb
+++ b/lib/puma/plugin/sidekiq_embed.rb
@@ -1,6 +1,7 @@
# frozen_string_literal: true
require 'puma/plugin'
+require 'redis_client'
# rubocop:disable Metrics
Puma::Plugin.create do
@@ -68,7 +69,7 @@ Puma::Plugin.create do
break
rescue RedisClient::CannotConnectError
- raise('Unable to connect to redis') if attempt > 10
+ raise('Unable to connect to redis') if attempt > 30
end
end
end
diff --git a/lib/send_webhook_request.rb b/lib/send_webhook_request.rb
index 43c93adc..23b756d2 100644
--- a/lib/send_webhook_request.rb
+++ b/lib/send_webhook_request.rb
@@ -1,7 +1,7 @@
# frozen_string_literal: true
module SendWebhookRequest
- USER_AGENT = 'WaboSign Webhook'
+ USER_AGENT = 'WaboSign.com Webhook'
LOCALHOSTS = DownloadUtils::LOCALHOSTS
diff --git a/lib/submissions.rb b/lib/submissions.rb
index 8c7df844..030b925d 100644
--- a/lib/submissions.rb
+++ b/lib/submissions.rb
@@ -162,7 +162,7 @@ module Submissions
return email.downcase.sub(/@gmail?\z/i, '@gmail.com') if email.match?(/@gmail?\z/i)
return email.downcase if email.include?(',') ||
- email.match?(/\.(?:gob|om|mm|cm|et|mo|nz|za|ie|ed\.jp)\z/i) ||
+ email.match?(/\.(?:gob(?:\.\w+)?|om|mm|cm|et|mo|nz|za|ie|ed\.jp)\z/i) ||
email.exclude?('.')
fixed_email = EmailTypo.call(email.delete_prefix('<'))
@@ -175,7 +175,9 @@ module Submissions
return email.downcase if domain == fixed_domain
return email.downcase if fixed_domain.match?(/\Agmail\.(?!com\z)/i)
- if DidYouMean::Levenshtein.distance(domain, fixed_domain) > 3
+ threshold = fixed_domain.start_with?('hotmail.') ? 2 : 3
+
+ if DidYouMean::Levenshtein.distance(domain, fixed_domain) > threshold
Rails.logger.info("Skipped email fix #{domain}")
return email.downcase
diff --git a/lib/submissions/generate_audit_trail.rb b/lib/submissions/generate_audit_trail.rb
index 1e45535f..c273b726 100644
--- a/lib/submissions/generate_audit_trail.rb
+++ b/lib/submissions/generate_audit_trail.rb
@@ -43,11 +43,11 @@ module Submissions
io = StringIO.new
- document.trailer.info[:Creator] = "#{Wabosign.branded_product_name(account)} (#{Wabosign::PRODUCT_URL})"
+ document.trailer.info[:Creator] = "#{Wabosign.product_name} (#{Wabosign::PRODUCT_URL})"
if pkcs
sign_params = {
- reason: sign_reason(account),
+ reason: sign_reason,
**Submissions::GenerateResultAttachments.build_signing_params(last_submitter, pkcs, tsa_url)
}
@@ -129,6 +129,8 @@ module Submissions
with_submitter_timezone = configs.find { |c| c.key == AccountConfig::WITH_SUBMITTER_TIMEZONE_KEY }&.value == true
with_timestamp_seconds = configs.find { |c| c.key == AccountConfig::WITH_TIMESTAMP_SECONDS_KEY }&.value == true
+ file_links_expire_at = Accounts.link_expires_at(submission.account) if with_file_links
+
timezone = account.timezone
timezone = last_submitter.timezone || account.timezone if with_submitter_timezone
@@ -408,7 +410,7 @@ module Submissions
link =
if with_file_links
- ActiveStorage::Blob.proxy_url(attachment.blob)
+ ActiveStorage::Blob.proxy_url(attachment.blob, expires_at: file_links_expire_at)
else
r.submissions_preview_url(submission.slug, **Wabosign.default_url_options)
end
@@ -516,8 +518,8 @@ module Submissions
composer.document
end
- def sign_reason(account = nil)
- "Signed with #{Wabosign.branded_product_name(account)}"
+ def sign_reason
+ 'Signed with WaboSign.com'
end
def select_attachments(submitter)
@@ -536,11 +538,10 @@ module Submissions
!submission.source.in?(%w[embed api])
end
- def add_logo(column, submission = nil)
- column.image(PdfIcons.account_logo_io(submission&.account),
- width: 40, height: 40, position: :float)
+ def add_logo(column, _submission = nil)
+ column.image(PdfIcons.logo_io, width: 40, height: 40, position: :float)
- column.formatted_text([{ text: Wabosign.branded_product_name(submission&.account),
+ column.formatted_text([{ text: 'WaboSign',
link: Wabosign::PRODUCT_EMAIL_URL }],
font_size: 20,
font: [FONT_NAME, { variant: :bold }],
diff --git a/lib/submissions/generate_combined_attachment.rb b/lib/submissions/generate_combined_attachment.rb
index 9b728211..3320e2b6 100644
--- a/lib/submissions/generate_combined_attachment.rb
+++ b/lib/submissions/generate_combined_attachment.rb
@@ -15,7 +15,7 @@ module Submissions
io = StringIO.new
- pdf.trailer.info[:Creator] = "#{Wabosign.branded_product_name(account)} (#{Wabosign::PRODUCT_URL})"
+ pdf.trailer.info[:Creator] = "#{Wabosign.product_name} (#{Wabosign::PRODUCT_URL})"
if Wabosign.pdf_format == 'pdf/a-3b'
pdf.task(:pdfa, level: '3b')
diff --git a/lib/submissions/generate_preview_attachments.rb b/lib/submissions/generate_preview_attachments.rb
index cbfa373d..9b712733 100644
--- a/lib/submissions/generate_preview_attachments.rb
+++ b/lib/submissions/generate_preview_attachments.rb
@@ -29,6 +29,8 @@ module Submissions
with_signature_id_reason =
configs.find { |c| c.key == AccountConfig::WITH_SIGNATURE_ID_REASON_KEY }&.value != false
+ file_links_expire_at = Accounts.link_expires_at(submission.account) if with_file_links
+
pdfs_index = GenerateResultAttachments.build_pdfs_index(submission, flatten: is_flatten,
incremental: is_rotate_incremental)
@@ -42,7 +44,8 @@ module Submissions
GenerateResultAttachments.fill_submitter_fields(s, submission.account, pdfs_index,
with_signature_id:, is_flatten:, with_headings: index.zero?,
with_submitter_timezone:, with_file_links:,
- with_signature_id_reason:, with_timestamp_seconds:)
+ file_links_expire_at:, with_signature_id_reason:,
+ with_timestamp_seconds:)
end
template = submission.template
diff --git a/lib/submissions/generate_result_attachments.rb b/lib/submissions/generate_result_attachments.rb
index 0b8fed67..14cb3cff 100644
--- a/lib/submissions/generate_result_attachments.rb
+++ b/lib/submissions/generate_result_attachments.rb
@@ -34,11 +34,7 @@ module Submissions
bold_italic: FONT_BOLD_NAME
}.freeze
- # PDF signature "reason" template. Per-account branded — the actual
- # template is computed by `sign_reason_template(account)` below; this
- # constant is the format placeholder. Historically the format kwarg
- # `name:` was unused.
- SIGN_REASON_FORMAT = 'Signed with %s'
+ SIGN_REASON = 'Signed with WaboSign.com'
RTL_REGEXP = TextUtils::RTL_REGEXP
@@ -155,6 +151,8 @@ module Submissions
with_signature_id_reason =
configs.find { |c| c.key == AccountConfig::WITH_SIGNATURE_ID_REASON_KEY }&.value != false
+ file_links_expire_at = Accounts.link_expires_at(submitter.account) if with_file_links
+
pdfs_index = build_pdfs_index(submitter.submission, submitter:, flatten: is_flatten,
incremental: is_rotate_incremental)
@@ -202,12 +200,14 @@ module Submissions
with_submitter_timezone:,
with_file_links:,
with_timestamp_seconds:,
- with_signature_id_reason:)
+ with_signature_id_reason:,
+ file_links_expire_at:)
end
def fill_submitter_fields(submitter, account, pdfs_index, with_signature_id:, is_flatten:, with_headings: nil,
with_submitter_timezone: false, with_signature_id_reason: true,
- with_timestamp_seconds: false, with_file_links: nil)
+ with_timestamp_seconds: false, with_file_links: nil,
+ file_links_expire_at: Accounts.link_expires_at(account))
cell_layouters = Hash.new do |hash, valign|
hash[valign] = HexaPDF::Layout::TextLayouter.new(text_valign: valign.to_sym, text_align: :center)
end
@@ -520,7 +520,7 @@ module Submissions
url =
if with_file_links
- ActiveStorage::Blob.proxy_url(attachment.blob)
+ ActiveStorage::Blob.proxy_url(attachment.blob, expires_at: file_links_expire_at)
else
r.submissions_preview_url(submission.slug, **Wabosign.default_url_options)
end
@@ -744,10 +744,10 @@ module Submissions
def build_pdf_attachment(pdf:, submitter:, pkcs:, tsa_url:, uuid:, name:)
io = StringIO.new
- pdf.trailer.info[:Creator] = info_creator(submitter&.account)
+ pdf.trailer.info[:Creator] = info_creator
if Wabosign.pdf_format == 'pdf/a-3b'
- pdf.task(:pdfa, level: '3b')
+ pdfa_listener = pdf.task(:pdfa, level: '3b')
pdf.config['font.map'] = PDFA_FONT_MAP
end
@@ -763,12 +763,14 @@ module Submissions
begin
pdf.sign(io, write_options: { validate: false }, **sign_params)
- rescue HexaPDF::Error, NoMethodError => e
+ rescue HexaPDF::Error, NoMethodError, TypeError => e
Rollbar.error(e) if defined?(Rollbar)
+ pdf.instance_variable_get(:@listeners)[:complete_objects].delete(pdfa_listener) if pdfa_listener
+
begin
pdf.sign(io, write_options: { validate: false, incremental: false }, **sign_params)
- rescue HexaPDF::Error
+ rescue HexaPDF::Error, TypeError
pdf.validate(auto_correct: true)
pdf.sign(io, write_options: { validate: false, incremental: false }, **sign_params)
end
@@ -986,14 +988,14 @@ module Submissions
HexaPDF::Document.new(io:)
end
- def sign_reason(_name, account: nil)
- format(SIGN_REASON_FORMAT, brand: Wabosign.branded_product_name(account))
+ def sign_reason(name)
+ format(SIGN_REASON, name:)
end
def single_sign_reason(submitter)
- submitter.submission.submitters.sort_by(&:completed_at).map { |s| s.email || s.name || s.phone }
+ signers = submitter.submission.submitters.sort_by(&:completed_at).map { |s| s.email || s.name || s.phone }
- format(SIGN_REASON_FORMAT, brand: Wabosign.branded_product_name(submitter&.account))
+ format(SIGN_REASON, name: signers.reverse.join(', '))
end
def fetch_sign_reason(submitter)
@@ -1008,7 +1010,7 @@ module Submissions
.first_or_initialize(value: 'single')
end
- return sign_reason(reason_name, account: submitter.account) if config.value == 'multiple'
+ return sign_reason(reason_name) if config.value == 'multiple'
if !submitter.submission.submitters.exists?(completed_at: nil) &&
submitter.completed_at == submitter.submission.submitters.maximum(:completed_at)
@@ -1018,8 +1020,8 @@ module Submissions
nil
end
- def info_creator(account = nil)
- "#{Wabosign.branded_product_name(account)} (#{Wabosign::PRODUCT_URL})"
+ def info_creator
+ "#{Wabosign.product_name} (#{Wabosign::PRODUCT_URL})"
end
def detached_signature?(_submitter)
diff --git a/lib/submitters.rb b/lib/submitters.rb
index b0bb04f8..6e0ea782 100644
--- a/lib/submitters.rb
+++ b/lib/submitters.rb
@@ -122,7 +122,7 @@ module Submitters
end
end
- def create_attachment!(submitter, file)
+ def create_attachment!(submitter, file, metadata: {})
raise ParamsError, 'file param is missing' if file.blank?
extension = File.extname(file.original_filename).delete_prefix('.').downcase
@@ -133,7 +133,8 @@ module Submitters
blob = ActiveStorage::Blob.create_and_upload!(io: file.tap(&:rewind).open,
filename: file.original_filename,
- content_type: file.content_type)
+ content_type: file.content_type,
+ metadata:)
ActiveStorage::Attachment.create!(blob:, name: 'attachments', record: submitter)
end
diff --git a/lib/submitters/create_stamp_attachment.rb b/lib/submitters/create_stamp_attachment.rb
index d1e14088..9b922e35 100644
--- a/lib/submitters/create_stamp_attachment.rb
+++ b/lib/submitters/create_stamp_attachment.rb
@@ -6,12 +6,6 @@ module Submitters
HEIGHT = 200
LRM = "\u200E"
- TRANSPARENT_PIXEL = "\x89PNG\r\n\u001A\n\u0000\u0000\u0000\rIHDR\u0000" \
- "\u0000\u0000\u0001\u0000\u0000\u0000\u0001\b\u0004" \
- "\u0000\u0000\u0000\xB5\u001C\f\u0002\u0000\u0000\u0000" \
- "\vIDATx\xDAc\xFC_\u000F\u0000\u0002\x83\u0001\x804\xC3ڨ" \
- "\u0000\u0000\u0000\u0000IEND\xAEB`\x82"
-
module_function
def call(submitter, with_logo: true)
@@ -42,14 +36,15 @@ module Submitters
if with_logo
ImageUtils.load_vips(load_logo(submitter).read)
else
- Vips::Image.new_from_buffer(TRANSPARENT_PIXEL, '').resize(WIDTH)
+ Vips::Image.black(WIDTH, WIDTH, bands: 4).copy(interpretation: :srgb)
end
logo = logo.resize([WIDTH / logo.width.to_f, HEIGHT / logo.height.to_f].min)
+ logo = logo.copy(interpretation: :srgb) if logo.interpretation == :multiband
- base_layer = Vips::Image.black(WIDTH, HEIGHT).new_from_image([255, 255, 255]).copy(interpretation: :srgb)
+ base_layer = Vips::Image.black(WIDTH, HEIGHT).new_from_image([255, 255, 255, 255]).copy(interpretation: :srgb)
- opacity_layer = Vips::Image.new_from_buffer(TRANSPARENT_PIXEL, '').resize(WIDTH)
+ opacity_layer = Vips::Image.black(WIDTH, HEIGHT).new_from_image([255, 255, 255, 127]).copy(interpretation: :srgb)
text = build_text_image(submitter)
diff --git a/lib/submitters/generate_font_image.rb b/lib/submitters/generate_font_image.rb
index b70d7450..0413355f 100644
--- a/lib/submitters/generate_font_image.rb
+++ b/lib/submitters/generate_font_image.rb
@@ -27,7 +27,9 @@ module Submitters
text_mask = Vips::Image.black(text_image.width, text_image.height)
- text_mask.bandjoin(text_image).copy(interpretation: :b_w).write_to_buffer('.png')
+ image = text_mask.bandjoin(text_image).copy(interpretation: :b_w)
+
+ [image.write_to_buffer('.png'), image.width, image.height]
end
end
end
diff --git a/lib/submitters/normalize_values.rb b/lib/submitters/normalize_values.rb
index fe9f2d02..54149f72 100644
--- a/lib/submitters/normalize_values.rb
+++ b/lib/submitters/normalize_values.rb
@@ -260,7 +260,7 @@ module Submitters
end
def find_or_create_blob_from_text(account, text, type)
- data = Submitters::GenerateFontImage.call(text, font: type)
+ data, width, height = Submitters::GenerateFontImage.call(text, font: type)
checksum = Digest::MD5.base64digest(data)
@@ -268,7 +268,9 @@ module Submitters
blob || ActiveStorage::Blob.create_and_upload!(
io: StringIO.new(data),
- filename: "#{type}.png"
+ filename: "#{type}.png",
+ content_type: 'image/png',
+ metadata: { analyzed: true, identified: true, width:, height: }
)
end
diff --git a/lib/templates.rb b/lib/templates.rb
index 21445766..9e5c0912 100644
--- a/lib/templates.rb
+++ b/lib/templates.rb
@@ -3,6 +3,10 @@
module Templates
COLOR_REGEXP = /\A(#(?:[0-9a-f]{3}|[0-9a-f]{6})|[a-z]+)\z/i
+ TEMPLATE_BUILDER_FIELDS = %i[id author_id folder_id external_id name slug
+ schema fields submitters variables_schema preferences
+ shared_link source archived_at created_at updated_at].freeze
+
EXPIRATION_DURATIONS = {
one_day: 1.day,
two_days: 2.days,
@@ -91,4 +95,16 @@ module Templates
Time.current + EXPIRATION_DURATIONS[default_expire_at_duration]
end
end
+
+ def serialize_for_builder(template)
+ data = template.as_json(only: TEMPLATE_BUILDER_FIELDS)
+
+ data['documents'] = template.schema_documents.preload(:blob, { preview_images_attachments: :blob }).as_json(
+ only: %i[id uuid],
+ methods: %i[metadata signed_key],
+ include: { preview_images: { only: %i[id], methods: %i[url metadata filename] } }
+ )
+
+ data
+ end
end
diff --git a/lib/templates/detect_fields.rb b/lib/templates/detect_fields.rb
index 4a620d1b..db61bc35 100755
--- a/lib/templates/detect_fields.rb
+++ b/lib/templates/detect_fields.rb
@@ -77,7 +77,7 @@ module Templates
split_page: false, aspect_ratio: false, padding: nil, page_number: nil)
return [[], nil] if page_number && page_number != 0
- image = ImageUtils.load_vips(io.read, content_type: attachment.content_type)
+ image = ImageUtils.load_vips(io.read)
fields = inference.call(image, confidence:, nms:, nmm:, split_page:,
temperature:, aspect_ratio:, padding:)
@@ -193,7 +193,7 @@ module Templates
data, width, height = page.render_to_bitmap(size_key => size)
- Vips::Image.new_from_memory(data, width, height, 4, :uchar)
+ Vips::Image.new_from_memory_copy(data, width, height, 4, :uchar)
end
def sort_fields(fields, y_threshold: 0.01)
diff --git a/lib/templates/process_document.rb b/lib/templates/process_document.rb
index 6e1963cc..9db405f6 100644
--- a/lib/templates/process_document.rb
+++ b/lib/templates/process_document.rb
@@ -107,7 +107,7 @@ module Templates
bytes, width, height = doc_page.render_to_bitmap(width: MAX_WIDTH)
- image = Vips::Image.new_from_memory(bytes, width, height, 4, :uchar)
+ image = Vips::Image.new_from_memory_copy(bytes, width, height, 4, :uchar)
Concurrent::Promise.execute(executor: pool) { build_and_upload_blob(image, page_number) }
ensure
@@ -201,7 +201,7 @@ module Templates
doc_page.close
- image = Vips::Image.new_from_memory(bytes, width, height, 4, :uchar)
+ image = Vips::Image.new_from_memory_copy(bytes, width, height, 4, :uchar)
blob = build_and_upload_blob(image, page_number, PREVIEW_FORMAT)
diff --git a/lib/templates/serialize_for_api.rb b/lib/templates/serialize_for_api.rb
index ec9cb628..64907f50 100644
--- a/lib/templates/serialize_for_api.rb
+++ b/lib/templates/serialize_for_api.rb
@@ -14,27 +14,25 @@ module Templates
module_function
- def call(template, schema_documents: template.schema_documents.preload(:blob), preview_image_attachments: nil,
- expires_at: Accounts.link_expires_at(Account.new(id: template.account_id)))
+ def call(template, schema_documents: template.schema_documents.preload(:blob), dynamic_documents: nil,
+ preview_image_attachments: nil, expires_at: Accounts.link_expires_at(Account.new(id: template.account_id)))
json = template.as_json(SERIALIZE_PARAMS)
- preview_image_attachments ||=
- ActiveStorage::Attachment.joins(:blob)
- .where(blob: { filename: ['0.jpg', '0.png'] })
- .where(record_id: schema_documents.map(&:id),
- record_type: 'ActiveStorage::Attachment',
- name: :preview_images)
- .preload(:blob)
+ dynamic_documents ||= preload_dynamic_documents(template)
- json['documents'] = template.schema.filter_map do |item|
- attachment = schema_documents.find { |e| e.uuid == item['attachment_uuid'] }
+ preview_image_attachments ||= preload_preview_image_attachments(schema_documents, dynamic_documents)
- unless attachment
- Rollbar.error("Documents missing: #{template.id}") if defined?(Rollbar)
+ json['documents'] = template.schema.filter_map do |item|
+ if item['dynamic']
+ dynamic_document = dynamic_documents.find { |e| e.uuid == item['attachment_uuid'] }
- next
+ attachment = dynamic_document.current_version&.document_attachment
end
+ attachment ||= schema_documents.find { |e| e.uuid == item['attachment_uuid'] }
+
+ next unless attachment
+
first_page_blob = preview_image_attachments.find { |e| e.record_id == attachment.id }&.blob
first_page_blob ||= attachment.preview_images.joins(:blob).find_by(blob: { filename: ['0.jpg', '0.png'] })&.blob
@@ -49,5 +47,26 @@ module Templates
json
end
+
+ def preload_dynamic_documents(template)
+ return DynamicDocument.none if template.schema.none? { |item| item['dynamic'] }
+
+ template.schema_dynamic_documents
+ .preload(current_version: { document_attachment: :blob })
+ .select(:id, :uuid, :template_id, :sha1, :created_at, :updated_at)
+ end
+
+ def preload_preview_image_attachments(schema_documents, dynamic_documents)
+ record_ids =
+ schema_documents.map(&:id) +
+ dynamic_documents.filter_map { |d| d.current_version&.document_attachment&.id }
+
+ ActiveStorage::Attachment.joins(:blob)
+ .where(blob: { filename: ['0.jpg', '0.png'] })
+ .where(record_id: record_ids,
+ record_type: 'ActiveStorage::Attachment',
+ name: :preview_images)
+ .preload(:blob)
+ end
end
end
diff --git a/package.json b/package.json
index c247280e..91163ec1 100644
--- a/package.json
+++ b/package.json
@@ -1,11 +1,6 @@
{
"name": "wabosign",
"private": true,
- "license": "AGPL-3.0-or-later",
- "repository": {
- "type": "git",
- "url": "git+https://github.com/wabolabs/wabosign.git"
- },
"dependencies": {
"@babel/core": "7.21.8",
"@babel/plugin-transform-runtime": "7.21.4",
@@ -48,7 +43,7 @@
"daisyui": "^3.9.4",
"driver.js": "^1.3.5",
"mini-css-extract-plugin": "^2.10.0",
- "postcss": "^8.5.10",
+ "postcss": "^8.4.31",
"postcss-import": "^15.1.0",
"postcss-loader": "^7.3.0",
"qr-creator": "^1.0.0",
@@ -85,20 +80,6 @@
"browserslist": [
"last 5 years"
],
- "resolutions": {
- "cross-spawn": "7.0.6",
- "flatted": "3.4.2",
- "glob": "10.5.0",
- "immutable": "4.3.8",
- "js-yaml": "4.1.1",
- "lodash": "4.18.1",
- "markdown-it": "14.1.1",
- "micromatch": "4.0.8",
- "nanoid": "3.3.12",
- "picomatch": "2.3.2",
- "postcss": "8.5.15",
- "svgo": "3.3.3"
- },
"devDependencies": {
"@babel/eslint-parser": "^7.21.8",
"babel-eslint": "^10.1.0",
diff --git a/public/apple-icon-180x180.png b/public/apple-icon-180x180.png
index 478de00a23c5657a440eef2e294dbb77f6443b33..919ad8c76d98ab7d62d5b4ad6a2f768619b8830b 100644
GIT binary patch
literal 10714
zcmXY11yEbv5>6mE!6iU(hvM!~q_|T`f#Oo2K#RLWp;(Jk+}&M+yA-FmyA&<{?mzP;
zliZo)+&Qx+clVRsaCOzUP;^ps5C{ZSkeAT}u66&tQIUa9u`y(B;DT(b^i~G+^4}|~
zy)X_0q5>(%NNKyLouqqsYwujYNbIeO*uJa5yCIh$pkw-;6F?O~W-a?6iAX>HzV>^A
z4z)UY2cdd({p_EX*_K&oKB^`WwakrdtRep*wK-!7UG3__<1?(m-129N$7#Aq-1d{_
zwa(YQ)yr4g+bMhE6GEBN*0grx3;mWqlupsAK2lvl-XjN0kw_Dvl7R5Qbl_OfH_%V8
zJ9q*76=4({NbXOJUW$M=+q-}!3+K{Y_!5G~D5EF-gRgNv(${a~U+|SHRU)(3;UBt6
za|#+x1E{Gq=nz_!agJom>j+-JHYNiv!OWJD2ddhiltzwnczu_D6HO+mbGs;GY
z*d9>1ac{?0SbSycQbd}kNFH%HdlqXZMcgKCyofwpEOJ8*#L(`enc_)9z}>&AAa@z)
zy!4Z_ojih}oF;2A-az`3@75726r0x+jMtADpNeNG=RZI@Llih|O6q4o{*f7pNl3eIXy+a#)qMvB6#dy2qz0ODW+xd5{O}(
zXkT`{UUh$45V4naZ<$U@AoLW$XZeClFlvdfD7GdFk@E}X_*)pYuhA#TQyWEV6cu*u
zGK%6nG@Xn5Q{I7V-KO2=(~h10D8-ns$t+eo`KO3vsI}!toTAv(Th3HucvhptXAo%F
z_-f$w^k9;yOGEUKKYK>%yb8`fqJPEoQWF0owQ<6}jxXtVJ>Tj?((tLk-*HG%3yVaf
z)fk9!9`q(&Lvu+<6>7v3bH
z+K$VGV)q^>^zcN9?1$u13f1cDbMwwy=UW*El<`rRSSo=xI+e78(Vz7k1Ki+np^0*)
zscAIB`AMsSDBom)*RuMYjSy~#tlm3K&ci}a;p`<$LvFSg5}aSf^Z)j!bCEP%1yB_}
z;gm7^cR{$5;RaZoZ=nQU^lcUc*)#7BPHfuXphu&*OOTx3HNGlwMaM5Z_CtR55ed!?|mdYh~yWoI%nacQG+ls`oj;gK8^@
z*CFH8?3Y}jh31~0ja~azze%;^$Ndj3j!Zfpg<&lQSl{p(Rr)@L-(P3;RDZ%vF8zqa
zq0i8}P?$ock#cBig=}ok1XbFh{D^Gg9{)x$XO^J3n+t|I}V=T|(NXKc#b|}Ce
zY_^5Kbkj7n7R~~BUBbh1D^rRm#`6DLt#QBgTMI?U#-fj$qg7#&V|S&N?WjYIYlthv
zN;m#Aqn}FacZpUMMUgXlpSTM4zcs7;aOrQU^%ZJC!feF3?pofDgSXV>+0$NS;KMqY
zd$@5Ev$))@mCpgpEBvbj_`^p!tGTKuF61ESR*+S9KOOuyFzV?-GL>M)Z!!m3~
z#CL14fp8FuOXXeRyDqzquLO7lV(8RDh8UNQ_J-(t(Fy+M{w@m;*n_p!D>D*bVuJ^P
zE}wIKmE!>zzT)yG8K%2@DVvxEMlR^wTI$&j!OP%ttEmmY=4pMG@K?M+bDbqo5WM;m
z^)bdXLURf1Yag?q8&UV93#hm5l}bPD5M=(;fw!967ROQNY4CJvneQ!neO2XIMCJtFvV>ah+Akid;MNZpGN`VyQPL2l{kio~bJUsob
zy3<8A)7_tzPTu|2YNWtKoUQqE=*RYxk;p&NvR*k9+04;iA9?SFkk|O
zHajLO^dAQ9&ofW-#8QVHenJQL?@I`zl7Zd(5_XF0N#;npl1UZ?qKJ|SDjRuAzDSqr
z)i%iyA_ge@2Pbdr;IaCtDWX9GGQD8KcbuM_X34`m|2**eMNvmM$7&VL@R}d#+6uAu
zPvnl_)*tk`_P;R>eM3lHyr4t6;wY+8G97OxLCZbe>yi=;k#o@x3Q&@w;hB#H12!`aFrU|}RIx@p~Bsh4Q&7-|M
z^&@Mc4{)OP6;w(o$&0)L9IaYX1J%@X5u@f`o^&20&v>WOCP>bUGaAjtO&rToq;atl
zB%u|E?qj`d*QF9tPpN9xuCz3-r5Pcku5=o2E_`^XEsN&GV*I@n3uDlfwm8fDErXM~
zeG0hxDS~1hgBXNfs$-5rd^Xn9TaU||L=TBxE65LGSJ2YF{~3Eftyf|x!(GtU+dU|R
zE+jaiOv#slyCb_jD>P{QW-7hYf$!~~q)nk_?1UG0f@l?tYgc;H*U}DQ#tJqU6kP4J
zKhGZ9Q+u%3m2IgN`6CiBDMDo3nLX?jy37?OI&k$o6t)Z@j_
zp#~Y#4Y}F0YN5eSw4EspXQ+}0X^A49Qn4Tz!uGFqNu8vdYmgzo{>qxl>Za!`z?YU)fnpOk1O)p1{jZXp~OE4K{aEe2H
z&@cd^-o2XD8SpVj8SfAwOsIUq8&3~mqe%u!9xii~Jq#JYxmZy{3>3B~#ni?be!X%G
z&9C5d!=Y~LRG}T!-M%w#`oOtbvsGkxfxP@6aCj2IAfIB`;K8QhW+GvkPuC1Y~TI8gWyZm=B7ue?g3EFEV^29e;jc9@MeAa%E)U
zwEEmTLF%>B?Jb+3n1QOsd-tgdThVHH;TNn)F@3Cgiz-dz%;CS)jyGd#|15U|MPG#z
zw-6agA}IPzo`X>r8sR7@ZjMUVq{ESp1Q^BwrlmG(l=lX0Gb*0`WtK
zfZengFCOs@pXR73G$^puxBocHa2g5;Zw{CRI?d9Je;&EIp)(DRSB42+g~qQyP35d&
z>Cpn|(dbCB1#P=T?U`=Ax+_IXv5TQk4Ec=lOJ2OXCyMA9Z^vrDY)8Ca^TynDxlHD2
zHQ0;+JswSc_XUrAW56A-kFQ=zAXaqRO!z}z*;9ST3e*ZR>7-{)XcM?Vd|q<&7;mmt
z`KH^+9L3;)A6}n}quBn!PafC)AB3>(3BQ+@5Am3U3A)oqptdQ)aBM~m0BIjOoki~+#{Nf?12X_p{c)5~B=c&_RLLr$qL%|N!
zQ}}H&{#YCRTlKqPX#;*x6Qq)r=d#a*xFLhooxXM1tP6LPDzJF%+u+JH$^7k+$;+Aq
zP@#Cg8F$#cp2~2?R@kD{WlIJd6{G>X8S;JAjJ7^-QzQ4lVy?b=C?Y5f%GxP3%bLB
zM*E62k=Yrw{L`HQ>RkLjwrVf{HnLOy7(saIy8pyG6>^aZd<}-usMPnSdHM~kHJzxl
zkOID3dsD>`hDI;j6ln}p@30DXK74QxNR=Hu4vfzfE%h?f7~yNAzRN&px^W1;CGb=I
zt`PECRHFmdn#3;Dw7QF#e&1&po^X35HPb&79cti_Le%)}w%O>@wgV(ELPy1ak(ScjIlQ*`_%dMI``2!rdakN?B
zs0LE~(M!OlbYxwqnKD%MhaXRzd2scEWYf*(_481}Z-xMUM8Bv7Uu{>RN+owE|<=8mJU&)2ERJ^J*`^>0G}KuyM4i4&K<
zlnkLlq?OP1-BMxfnwGk#3J2=Pgt$w_Szr(m28hc4OF3~~*}2m4b&l`s!dX`mdiV@Q2f47pxUQuyaJpnLdV#FUGLGSKk}erF2W{ng?%t
zcp7*hQ4(IfF*9;S>dC%+6ERF~^=p+x1W6j>Ge%(U_n9e;9`^4k#{Rw9h9E-KcPt}wpNm(8qvbI+Tybj~cs=7pi-@J#ge
zPN99J85Oq|b-SNk_Gi330_+QlbD6D!;M_!*!I$9|L@8~ZG?9$+w1w}(^S%eR9|&mg
zX*BtbBzgK<&}7!}DDcaeTlR=~Lp0rpTx0{TpUQg9ASwT9+BZpdUAv!mj5MA$B9mjS
zVrv8ih?6H(K(VvOQ7TkDl(wJJ9|I6RXo<&euU+
zjgjx8L8?#CuFd|4jPr6~7JnCcet-APpd2k6(P4@7F%c;QXBOz|6w{ZAA>e
zhwk4;VIU-GqbYm>>U>Gp#OHro|6Ic>U$YHgSiRv^ldN?`kTkGGrbf0B+;xRl`})Es
zUe7Q8&LXc(rtqXqn+rX9a4EXmR@0ch!pCc7fYpLl`3Leo^Xt+HHnN9k8g03y)6u?`
zCTk$mDmQ$C(O2)rRwD6>uzm-n@HAZk6oZ8V&!s9SiDvtb_)!2ldV9pdUcV=f|+Cs$!PST1UY^*XjTuv0Wx34-=
z`SONrOB6ij&Erfs@h>1c@mi8y0{6;da;EnyB8ci6=SSCaYn!QXTbfJ6X;c3>Q)Y6;6SHzyNh-oN7f16a;eP
z{Q#%iL;raw`9r94n$7+)rRFP}%Y$&Ic^3ERlXtTWx{^HF=y{wKBp-^mJPio9OL)$S
zP{wzlZxaUo>=RT+SsG*38+GQED1_u9@%Xa@;Qk$(Ok;DJh1a`%o@_jI9Ntnvyrk}R
z_c1Tq5UP=$?FRLY6GrbKfGQHiO3SC(8ODHx@FO}B<9)oAZ*&TBblWS1iTdTC_t3+1
zDwg^mD7=WO=pd2NEl^y0i;Wl%#VY<9%H!x{v){sX^e%N{T~XrrZ+N{EA&@X73z{}G
zNr<$eTL?b}2`By4JQX>B@(vkW@>k{G>&lO3V_zt8?|u!#{}@f5eCgP}$`
z?iYC^sjM4~kknM;ROw>&EzNUc|Id5Rl$;8~{2+ru+6*)AqeA)EU+SB>7NO!{02