Skip to content

Commit bdf2024

Browse files
committed
Update to version 4.4.0 on 2026-11-01
- New: list_email_actions, create_email_action, get_email_action, update_email_action and delete_email_action manage a template's email actions (`EmailAction`), which email each processed submission's files as attachments or a download link. `to`, `cc` and `bcc` take addresses, and tags for an address in the submission's fields (`{{ data.client_email }}`) or metadata (`{{ metadata.agent_email }}`). `send_when` sends only for the submissions that meet its conditions. `file_name` names the attached files, and `file_formats` chooses them: a Word template's Word document (`docx`), OpenDocument file (`odt`) or PDF (`pdf`), or every file the submission made (`all`). Attached files over `max_attachment_mb` together (7 MB unless you raise it, up to 25) go as a link instead. send_email_action_test_email sends one to you to check how it looks (`EmailActionTestEmail`). Without a paid plan (Starter or higher), email actions only email your team: test emails, and test submissions' emails. - New: list_account_email_actions, create_account_email_action, get_account_email_action, update_account_email_action and delete_account_email_action manage your account's email actions, which send for every template, or for the templates and folders they list (`template_ids`, `folder_ids`). send_account_email_action_test_email sends one to you for one of its templates. - New: list_email_actions also lists your account's email actions that send for the template, with the template's changes in `customization` (`EmailActionCustomization`). update_email_action_customization changes one for that template only, or turns it off there (`enabled`), and delete_email_action_customization removes the template's changes. - New: list_email_domains, create_email_domain, get_email_domain, verify_email_domain and delete_email_domain manage the domains your email actions send from (`EmailDomain`), with the DNS records to add to each one (`EmailDomainDnsRecord`). - A submission's `actions` include the emails its email actions sent (its template's and your account's), with each recipient and what happened to their email, and a new `email_action_id`. - New: a field's `string_condition_type` can be `not_equals`, `not_contains`, `not_starts_with`, `not_ends_with`, `not_regex`, `blank` or `not_blank`, and a `regex` condition uses RE2 syntax (no lookarounds or backreferences). - create_submission: DocSpring now emails the signers of a submission's `signature_requests` a link to sign, any reminders, and the signed PDF once everyone has signed. Set `send_email` to false, for the submission or for one signature request, when you send the links yourself or show the signing form in your app. A signature request that DocSpring emails needs an `email`, and its `auth_type` is optional (`email_link`). Before anyone is emailed, the request can be refused with a 402 (`insufficient_credits_to_send`), a 403 or a 429 (`daily_email_limit_reached`), and nothing is saved. - New create_submission properties for these emails: `signing_order` (`SigningOrder`) with each signature request's `signing_step`, `email_subject`, `email_message`, `cc`, `reply_to`, `notification_emails`, `notify_when_signed` and `reminders` (`SignatureRequestReminders`). - A signature request has `send_email`, `signing_step`, `sent_at` and `email_status` (`SignatureRequestEmailStatus`), and a submission has `signing_order`. - Templates have new settings for these emails: `signature_request_from_name`, `signature_request_from_address`, `signature_request_signing_url`, `signature_request_include_signing_token`, `signature_request_reply_to`, `signature_request_notification_emails` and `signature_request_email_attachments` (`SignatureRequestEmailAttachments`). - New webhook event types: `signature_request.sent` and `signature_request.email_bounced`. - New: page designs (`template_type` `page_designer`), PDFs designed in the Page Designer from a JSON layout, with no document to start from. create_template makes one from its `layout`, or with an empty page when `layout` is left out, and update_template replaces its layout. DocSpring adds a field for each value the layout reads. A template's `layout` is in the [Page Designer layout format](https://docspring.com/docs/page-designer/layout-format/) (its [JSON Schema](https://docspring.com/schemas/page-designer/layout.v1.json)), and is null for other templates. - New: every method that creates, changes or deletes something takes an `Idempotency-Key` header, as the `idempotency_key` option. Send the same key when you send a request again after a timeout or a network error: within 24 hours, DocSpring returns the first response instead of running the request twice. Arguments you already pass keep their places. - Changed: the request validator checks what API v2 now refuses: an ID, a query value or a template name that's blank or only whitespace, an update with nothing to change, a version with a leading zero (`01`), a `filename` with a slash, a signer `email` that isn't an email address, and an HTML template's `scale` outside 0.1 to 2. - New: get_template_model_code takes `rust` as its `lang`, for Rust structs that serde reads and writes.
1 parent ac288ae commit bdf2024

158 files changed

Lines changed: 15966 additions & 1445 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.github/workflows/release.yml‎

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
# Written by DocSpring/docspring's api_clients/scripts/generate from api_clients/github_workflows/ruby/release.yml:
2+
# change it there.
3+
#
4+
# Builds the gem on every push and pull request. A v* tag (pushed by the monorepo's api_clients/scripts/release) also
5+
# pushes it to RubyGems.org with trusted publishing, in the release environment, and waits until RubyGems.org serves
6+
# it.
7+
name: Release
8+
9+
on:
10+
push:
11+
branches: ['**']
12+
tags: ['v*']
13+
pull_request:
14+
15+
permissions:
16+
contents: read
17+
18+
jobs:
19+
build:
20+
runs-on: ubuntu-latest
21+
steps:
22+
# The gemspec lists the gem's files with git ls-files
23+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
24+
with:
25+
persist-credentials: false
26+
- uses: ruby/setup-ruby@de492cf36cbab201753d720ce4f4e336cd688c94 # v1.336.0
27+
with:
28+
ruby-version: '3.4'
29+
- name: Check the tag matches the package version
30+
if: github.ref_type == 'tag'
31+
run: |
32+
VERSION="$(ruby -e 'puts Gem::Specification.load("docspring.gemspec").version')"
33+
if [ "v$VERSION" != "$GITHUB_REF_NAME" ]; then
34+
echo "::error::The tag is $GITHUB_REF_NAME, but the package version is $VERSION"
35+
exit 1
36+
fi
37+
- run: gem build docspring.gemspec
38+
- if: github.ref_type == 'tag'
39+
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
40+
with:
41+
name: package
42+
path: docspring-*.gem
43+
if-no-files-found: error
44+
45+
publish:
46+
needs: build
47+
if: github.ref_type == 'tag'
48+
runs-on: ubuntu-latest
49+
environment: release
50+
permissions:
51+
contents: read
52+
id-token: write
53+
steps:
54+
- uses: ruby/setup-ruby@de492cf36cbab201753d720ce4f4e336cd688c94 # v1.336.0
55+
with:
56+
ruby-version: '3.4'
57+
- uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
58+
with:
59+
name: package
60+
- uses: rubygems/configure-rubygems-credentials@dc5a8d8553e6ee01fc26761a49e99e733d17954a # v2.1.0
61+
- name: Push to RubyGems.org
62+
run: gem push "docspring-${GITHUB_REF_NAME#v}.gem"
63+
64+
verify:
65+
needs: publish
66+
runs-on: ubuntu-latest
67+
timeout-minutes: 15
68+
steps:
69+
- name: Wait until RubyGems.org serves the version
70+
run: |
71+
VERSION="${GITHUB_REF_NAME#v}"
72+
for _ in $(seq 60); do
73+
if curl -fsS -o /dev/null "https://rubygems.org/api/v2/rubygems/docspring/versions/$VERSION.json"; then
74+
echo "RubyGems.org serves docspring $VERSION"
75+
exit 0
76+
fi
77+
sleep 10
78+
done
79+
echo "::error::RubyGems.org doesn't serve docspring $VERSION after 10 minutes"
80+
exit 1

‎.gitlab-ci.yml‎

Lines changed: 0 additions & 26 deletions
This file was deleted.

‎.openapi-generator/FILES‎

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,11 @@ docs/CombinedPdfSourcePdf.md
2222
docs/CombinedPdfSourceType.md
2323
docs/CombinedPdfState.md
2424
docs/CopyTemplateRequest.md
25+
docs/CreateAccountEmailActionRequest.md
2526
docs/CreateCombinedPdfRequest.md
2627
docs/CreateCustomFileFromUploadRequest.md
28+
docs/CreateEmailActionRequest.md
29+
docs/CreateEmailDomainRequest.md
2730
docs/CreateFolderRequest.md
2831
docs/CreateSignatureRequestEventRequest.md
2932
docs/CreateSignatureRequestTokenRequest.md
@@ -35,6 +38,23 @@ docs/CreateWebhookRequest.md
3538
docs/CustomFile.md
3639
docs/CustomFileList.md
3740
docs/CustomFileSourcePdf.md
41+
docs/DnsRecordType.md
42+
docs/EmailAction.md
43+
docs/EmailActionConditions.md
44+
docs/EmailActionConditionsInput.md
45+
docs/EmailActionCustomization.md
46+
docs/EmailActionDelivery.md
47+
docs/EmailActionFileFormats.md
48+
docs/EmailActionList.md
49+
docs/EmailActionSetting.md
50+
docs/EmailActionSubmissionType.md
51+
docs/EmailActionTestEmail.md
52+
docs/EmailDomain.md
53+
docs/EmailDomainDnsRecord.md
54+
docs/EmailDomainDnsRecordPurpose.md
55+
docs/EmailDomainList.md
56+
docs/EmailDomainRecordState.md
57+
docs/EmailDomainState.md
3858
docs/ErrorCode.md
3959
docs/ErrorDetail.md
4060
docs/ErrorInfo.md
@@ -87,17 +107,22 @@ docs/RemoveTemplateFieldsRequest.md
87107
docs/RenameFolderRequest.md
88108
docs/ReorderTemplateFieldsRequest.md
89109
docs/RestoreTemplateVersionRequest.md
110+
docs/SendAccountEmailActionTestEmailRequest.md
90111
docs/ShapeType.md
91112
docs/SignatureRequest.md
92113
docs/SignatureRequestAuthSecondFactorType.md
93114
docs/SignatureRequestAuthType.md
115+
docs/SignatureRequestEmailAttachments.md
116+
docs/SignatureRequestEmailStatus.md
94117
docs/SignatureRequestEvent.md
95118
docs/SignatureRequestEventType.md
96119
docs/SignatureRequestInput.md
97120
docs/SignatureRequestMessageType.md
121+
docs/SignatureRequestReminders.md
98122
docs/SignatureRequestState.md
99123
docs/SignatureRequestToken.md
100124
docs/SignatureRequestTokenType.md
125+
docs/SigningOrder.md
101126
docs/StringConditionType.md
102127
docs/Submission.md
103128
docs/SubmissionAction.md
@@ -155,6 +180,9 @@ docs/TextAlignment.md
155180
docs/TextOverflow.md
156181
docs/TextVerticalAlignment.md
157182
docs/Typeface.md
183+
docs/UpdateAccountEmailActionRequest.md
184+
docs/UpdateEmailActionCustomizationRequest.md
185+
docs/UpdateEmailActionRequest.md
158186
docs/UpdateSignatureRequestRequest.md
159187
docs/UpdateTemplateDocumentRequest.md
160188
docs/UpdateTemplateFieldsRequest.md
@@ -191,8 +219,11 @@ lib/docspring/models/combined_pdf_source_pdf.rb
191219
lib/docspring/models/combined_pdf_source_type.rb
192220
lib/docspring/models/combined_pdf_state.rb
193221
lib/docspring/models/copy_template_request.rb
222+
lib/docspring/models/create_account_email_action_request.rb
194223
lib/docspring/models/create_combined_pdf_request.rb
195224
lib/docspring/models/create_custom_file_from_upload_request.rb
225+
lib/docspring/models/create_email_action_request.rb
226+
lib/docspring/models/create_email_domain_request.rb
196227
lib/docspring/models/create_folder_request.rb
197228
lib/docspring/models/create_signature_request_event_request.rb
198229
lib/docspring/models/create_signature_request_token_request.rb
@@ -204,6 +235,23 @@ lib/docspring/models/create_webhook_request.rb
204235
lib/docspring/models/custom_file.rb
205236
lib/docspring/models/custom_file_list.rb
206237
lib/docspring/models/custom_file_source_pdf.rb
238+
lib/docspring/models/dns_record_type.rb
239+
lib/docspring/models/email_action.rb
240+
lib/docspring/models/email_action_conditions.rb
241+
lib/docspring/models/email_action_conditions_input.rb
242+
lib/docspring/models/email_action_customization.rb
243+
lib/docspring/models/email_action_delivery.rb
244+
lib/docspring/models/email_action_file_formats.rb
245+
lib/docspring/models/email_action_list.rb
246+
lib/docspring/models/email_action_setting.rb
247+
lib/docspring/models/email_action_submission_type.rb
248+
lib/docspring/models/email_action_test_email.rb
249+
lib/docspring/models/email_domain.rb
250+
lib/docspring/models/email_domain_dns_record.rb
251+
lib/docspring/models/email_domain_dns_record_purpose.rb
252+
lib/docspring/models/email_domain_list.rb
253+
lib/docspring/models/email_domain_record_state.rb
254+
lib/docspring/models/email_domain_state.rb
207255
lib/docspring/models/error_code.rb
208256
lib/docspring/models/error_detail.rb
209257
lib/docspring/models/error_info.rb
@@ -256,17 +304,22 @@ lib/docspring/models/remove_template_fields_request.rb
256304
lib/docspring/models/rename_folder_request.rb
257305
lib/docspring/models/reorder_template_fields_request.rb
258306
lib/docspring/models/restore_template_version_request.rb
307+
lib/docspring/models/send_account_email_action_test_email_request.rb
259308
lib/docspring/models/shape_type.rb
260309
lib/docspring/models/signature_request.rb
261310
lib/docspring/models/signature_request_auth_second_factor_type.rb
262311
lib/docspring/models/signature_request_auth_type.rb
312+
lib/docspring/models/signature_request_email_attachments.rb
313+
lib/docspring/models/signature_request_email_status.rb
263314
lib/docspring/models/signature_request_event.rb
264315
lib/docspring/models/signature_request_event_type.rb
265316
lib/docspring/models/signature_request_input.rb
266317
lib/docspring/models/signature_request_message_type.rb
318+
lib/docspring/models/signature_request_reminders.rb
267319
lib/docspring/models/signature_request_state.rb
268320
lib/docspring/models/signature_request_token.rb
269321
lib/docspring/models/signature_request_token_type.rb
322+
lib/docspring/models/signing_order.rb
270323
lib/docspring/models/string_condition_type.rb
271324
lib/docspring/models/submission.rb
272325
lib/docspring/models/submission_action.rb
@@ -324,6 +377,9 @@ lib/docspring/models/text_alignment.rb
324377
lib/docspring/models/text_overflow.rb
325378
lib/docspring/models/text_vertical_alignment.rb
326379
lib/docspring/models/typeface.rb
380+
lib/docspring/models/update_account_email_action_request.rb
381+
lib/docspring/models/update_email_action_customization_request.rb
382+
lib/docspring/models/update_email_action_request.rb
327383
lib/docspring/models/update_signature_request_request.rb
328384
lib/docspring/models/update_template_document_request.rb
329385
lib/docspring/models/update_template_fields_request.rb
@@ -354,8 +410,11 @@ spec/models/combined_pdf_source_type_spec.rb
354410
spec/models/combined_pdf_spec.rb
355411
spec/models/combined_pdf_state_spec.rb
356412
spec/models/copy_template_request_spec.rb
413+
spec/models/create_account_email_action_request_spec.rb
357414
spec/models/create_combined_pdf_request_spec.rb
358415
spec/models/create_custom_file_from_upload_request_spec.rb
416+
spec/models/create_email_action_request_spec.rb
417+
spec/models/create_email_domain_request_spec.rb
359418
spec/models/create_folder_request_spec.rb
360419
spec/models/create_signature_request_event_request_spec.rb
361420
spec/models/create_signature_request_token_request_spec.rb
@@ -367,6 +426,23 @@ spec/models/create_webhook_request_spec.rb
367426
spec/models/custom_file_list_spec.rb
368427
spec/models/custom_file_source_pdf_spec.rb
369428
spec/models/custom_file_spec.rb
429+
spec/models/dns_record_type_spec.rb
430+
spec/models/email_action_conditions_input_spec.rb
431+
spec/models/email_action_conditions_spec.rb
432+
spec/models/email_action_customization_spec.rb
433+
spec/models/email_action_delivery_spec.rb
434+
spec/models/email_action_file_formats_spec.rb
435+
spec/models/email_action_list_spec.rb
436+
spec/models/email_action_setting_spec.rb
437+
spec/models/email_action_spec.rb
438+
spec/models/email_action_submission_type_spec.rb
439+
spec/models/email_action_test_email_spec.rb
440+
spec/models/email_domain_dns_record_purpose_spec.rb
441+
spec/models/email_domain_dns_record_spec.rb
442+
spec/models/email_domain_list_spec.rb
443+
spec/models/email_domain_record_state_spec.rb
444+
spec/models/email_domain_spec.rb
445+
spec/models/email_domain_state_spec.rb
370446
spec/models/error_code_spec.rb
371447
spec/models/error_detail_spec.rb
372448
spec/models/error_info_spec.rb
@@ -419,17 +495,22 @@ spec/models/remove_template_fields_request_spec.rb
419495
spec/models/rename_folder_request_spec.rb
420496
spec/models/reorder_template_fields_request_spec.rb
421497
spec/models/restore_template_version_request_spec.rb
498+
spec/models/send_account_email_action_test_email_request_spec.rb
422499
spec/models/shape_type_spec.rb
423500
spec/models/signature_request_auth_second_factor_type_spec.rb
424501
spec/models/signature_request_auth_type_spec.rb
502+
spec/models/signature_request_email_attachments_spec.rb
503+
spec/models/signature_request_email_status_spec.rb
425504
spec/models/signature_request_event_spec.rb
426505
spec/models/signature_request_event_type_spec.rb
427506
spec/models/signature_request_input_spec.rb
428507
spec/models/signature_request_message_type_spec.rb
508+
spec/models/signature_request_reminders_spec.rb
429509
spec/models/signature_request_spec.rb
430510
spec/models/signature_request_state_spec.rb
431511
spec/models/signature_request_token_spec.rb
432512
spec/models/signature_request_token_type_spec.rb
513+
spec/models/signing_order_spec.rb
433514
spec/models/string_condition_type_spec.rb
434515
spec/models/submission_action_spec.rb
435516
spec/models/submission_action_state_spec.rb
@@ -487,6 +568,9 @@ spec/models/text_alignment_spec.rb
487568
spec/models/text_overflow_spec.rb
488569
spec/models/text_vertical_alignment_spec.rb
489570
spec/models/typeface_spec.rb
571+
spec/models/update_account_email_action_request_spec.rb
572+
spec/models/update_email_action_customization_request_spec.rb
573+
spec/models/update_email_action_request_spec.rb
490574
spec/models/update_signature_request_request_spec.rb
491575
spec/models/update_template_document_request_spec.rb
492576
spec/models/update_template_fields_request_spec.rb

‎.travis.yml‎

Lines changed: 0 additions & 11 deletions
This file was deleted.

‎CHANGELOG.md‎

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,58 @@
1+
### 4.4.0 [November 1, 2026]
2+
3+
- New: list_email_actions, create_email_action, get_email_action, update_email_action and delete_email_action manage a
4+
template's email actions (`EmailAction`), which email each processed submission's files as attachments or a download
5+
link. `to`, `cc` and `bcc` take addresses, and tags for an address in the submission's fields
6+
(`{{ data.client_email }}`) or metadata (`{{ metadata.agent_email }}`). `send_when` sends only for the submissions
7+
that meet its conditions. `file_name` names the attached files, and `file_formats` chooses them: a Word template's
8+
Word document (`docx`), OpenDocument file (`odt`) or PDF (`pdf`), or every file the submission made (`all`). Attached
9+
files over `max_attachment_mb` together (7 MB unless you raise it, up to 25) go as a link instead.
10+
send_email_action_test_email sends one to you to check how it looks (`EmailActionTestEmail`). Without a paid plan
11+
(Starter or higher), email actions only email your team: test emails, and test submissions' emails.
12+
- New: list_account_email_actions, create_account_email_action, get_account_email_action, update_account_email_action
13+
and delete_account_email_action manage your account's email actions, which send for every template, or for the
14+
templates and folders they list (`template_ids`, `folder_ids`). send_account_email_action_test_email sends one to you
15+
for one of its templates.
16+
- New: list_email_actions also lists your account's email actions that send for the template, with the template's
17+
changes in `customization` (`EmailActionCustomization`). update_email_action_customization changes one for that
18+
template only, or turns it off there (`enabled`), and delete_email_action_customization removes the template's
19+
changes.
20+
- New: list_email_domains, create_email_domain, get_email_domain, verify_email_domain and delete_email_domain manage the
21+
domains your email actions send from (`EmailDomain`), with the DNS records to add to each one (`EmailDomainDnsRecord`).
22+
- A submission's `actions` include the emails its email actions sent (its template's and your account's), with each
23+
recipient and what happened to their email, and a new `email_action_id`.
24+
- New: a field's `string_condition_type` can be `not_equals`, `not_contains`, `not_starts_with`, `not_ends_with`,
25+
`not_regex`, `blank` or `not_blank`, and a `regex` condition uses RE2 syntax (no lookarounds or backreferences).
26+
- create_submission: DocSpring now emails the signers of a submission's `signature_requests` a link to sign, any
27+
reminders, and the signed PDF once everyone has signed. Set `send_email` to false, for the submission or for one
28+
signature request, when you send the links yourself or show the signing form in your app. A signature request that
29+
DocSpring emails needs an `email`, and its `auth_type` is optional (`email_link`). Before anyone is emailed, the
30+
request can be refused with a 402 (`insufficient_credits_to_send`), a 403 or a 429 (`daily_email_limit_reached`), and
31+
nothing is saved.
32+
- New create_submission properties for these emails: `signing_order` (`SigningOrder`) with each signature request's
33+
`signing_step`, `email_subject`, `email_message`, `cc`, `reply_to`, `notification_emails`, `notify_when_signed` and
34+
`reminders` (`SignatureRequestReminders`).
35+
- A signature request has `send_email`, `signing_step`, `sent_at` and `email_status` (`SignatureRequestEmailStatus`),
36+
and a submission has `signing_order`.
37+
- Templates have new settings for these emails: `signature_request_from_name`, `signature_request_from_address`,
38+
`signature_request_signing_url`, `signature_request_include_signing_token`, `signature_request_reply_to`,
39+
`signature_request_notification_emails` and `signature_request_email_attachments`
40+
(`SignatureRequestEmailAttachments`).
41+
- New webhook event types: `signature_request.sent` and `signature_request.email_bounced`.
42+
- New: page designs (`template_type` `page_designer`), PDFs designed in the Page Designer from a JSON layout, with no
43+
document to start from. create_template makes one from its `layout`, or with an empty page when `layout` is left
44+
out, and update_template replaces its layout. DocSpring adds a field for each value the layout reads. A template's
45+
`layout` is in the [Page Designer layout format](https://docspring.com/docs/page-designer/layout-format/) (its
46+
[JSON Schema](https://docspring.com/schemas/page-designer/layout.v1.json)), and is null for other templates.
47+
- New: every method that creates, changes or deletes something takes an `Idempotency-Key` header, as the
48+
`idempotency_key` option. Send the same key when you send a request again after a timeout or a network error: within
49+
24 hours, DocSpring returns the first response instead of running the request twice. Arguments you already pass keep
50+
their places.
51+
- Changed: the request validator checks what API v2 now refuses: an ID, a query value or a template name that's blank or
52+
only whitespace, an update with nothing to change, a version with a leading zero (`01`), a `filename` with a slash, a
53+
signer `email` that isn't an email address, and an HTML template's `scale` outside 0.1 to 2.
54+
- New: get_template_model_code takes `rust` as its `lang`, for Rust structs that serde reads and writes.
55+
156
### 4.3.0 [October 31, 2026]
257

358
- New: get_template_model_code takes `rust` as its `lang`, for Rust structs that serde reads and writes.

0 commit comments

Comments
 (0)