feat: parity with @dodomain/node 0.7.0 — webhook endpoint auto-pause (paused_at + resume) and App white-label settings (0.5.0) - #6
Merged
Conversation
…(paused_at + resume) and App white-label settings (0.5.0)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Brings
dodomain-sdklevel with the/v1contract shipped in DevinoSolutions/dodomain#342 (merged 5ead1cd4) and with@dodomain/node0.7.0. The source of truth wasapps/docs/public/openapi.jsonon DoDomainmain, diffed directly rather than through the Node SDK. Version 0.4.0 → 0.5.0, following the repo's minor-per-additive-parity-release convention (0.2.0 → 0.3.0 → 0.4.0). Nothing is published or tagged.Changes from DoDomain #342
webhook_endpoints.resume(endpoint_id, *, idempotency_key=None)(sync and async) sendsPOST /api/v1/webhook-endpoints/{endpointId}/resume. The request has no body, likerotate_secret. It returns aWebhookEndpoint(spec:200→WebhookEndpointSummary, plus401/403/404/429/500). The call is idempotent: an endpoint that isn't paused gets a 200 and comes back unchanged. If the id is blank, the call is refused locally withstatus_code == 0and nothing is sent over the network.WebhookEndpoint.paused_at/WebhookEndpointWithSecret.paused_at(datetime | None). The new required, nullablepausedAtis on both the summary schema and the secret-response schema. It is also carried through.endpoint.updatedocstring: if the url actually changes, the update also resumes an auto-paused endpoint.Change from an earlier PR (white-label, 2026-09-23)
Regenerating the contract fixture showed that
ListAppsResponseitems have been returning six white-label fields since dodomain 92c332d9. Node already exposes them (as of 0.7.0), but this SDK did not. AddedApp.connect_headline,.connect_subheadline,.connect_success_cta_label,.connect_success_redirect_url,.connect_font_presetand.hide_connect_footer_help, plus the exportedConnectFontPresetliteral.Delivery status
skippedThe public spec has no delivery-status enum.
skippedonly shows up in the resume operation's prose, and this SDK doesn't model delivery statuses, so there is nothing to add.Contract guard
tests/fixtures/openapi_v1_shapes.jsonwas regenerated from DoDomain main'sopenapi.jsonand now also pinsWebhookEndpointSummaryandWebhookEndpointSecretResponse. The five schemas already in the fixture only differ in theListAppsResponsewhite-label fields above. All new fields parse tolerantly: a missing field reads asNone/False, but a field that is present with the wrong type fails loudly. That matches the repo's existing rule.Tests and gates (run locally)
ruff check .passes.ruff format --check .passes.ty checkpasses.pytest tests --ignore=tests/e2e --cov=dodomain --cov-fail-under=90: 403 passed, coverage 99.24% (Python 3.14 locally). The same suite also passes on Python 3.10 (403 passed).pausedAtparses when set, when missing (legacy bodies) and when it has the wrong type;.endpointcarriespaused_at; there is an async-parity case for resume; README example coverage; App white-label parse, legacy and wrong-shape cases.tests/e2e) needsDODOMAIN_SECRET_KEY, so it skipped loudly here and runs in CI.