Repository navigation
Conversation
New estuary-cdk capture connector for Hyperline (billing/subscriptions). 19 streams: customers, invoices, subscriptions, quotes, and customer_credits as incremental + backfill over the shared updated_at filter grammar (keyset-cursor and take/skip paging engines); audit_logs as a descending walk-back incremental with keyset-token backfill and a surrogate hash key (events carry no id); 13 full-refresh snapshot streams including subscription_transitions and transactions (no usable cursor exists on either). Auth is a static bearer API key; test_-prefixed keys route to the sandbox host automatically. The bruno/ collection carries the dated live-verification evidence behind every pagination, boundary, and filter decision, with PII redacted from all saved examples. Note for review: config.yaml is sops-encrypted with the contributor's local age key (no Estuary KMS access) and needs re-encryption with the connector-repository KMS key before CI can decrypt it. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The example still referenced the pre-migration helpful-kingdom-273219 key; every encrypted config in the repo (including all 2025-2026 additions) uses estuary-theatre's connector-repository key. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This branch has not been deployed
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.
Description
New estuary-cdk capture connector for Hyperline (billing / subscription management), covering 19 streams:
customers,invoices,subscriptions,quotes,customer_credits— one shared window engine over Hyperline'supdated_at__gt/gte/lt/ltefilter grammar, parametrized across the API's two paging engines (v2 keyset cursor on customers/invoices, take/skip elsewhere). Boundary inclusivity, millisecond tick precision, filter+pagination composition, and page-size enforcement were all live-verified (evidence inbruno/).audit_logs— strictly-descending walk-back onhappened_atwith the provider's keyset token as the backfill PageCursor and a surrogatexxh128key (events carry no id on the wire; an expired token fails loudly and restarts, never losing data).products,price_books,price_configurations,features,coupons,promotion_codes,tax_rates,invoicing_entities,users,customer_segments,transactions,wallets,subscription_transitions— no honored filters or sort exist on these endpoints (verified: unknown params are silently ignored), so snapshot is the only viable strategy.transactions' unbounded-growth risk is documented in the bruno collection.Auth is a static bearer API key;
test_-prefixed keys are routed to the sandbox host automatically. Thebruno/OpenCollection carries dated VERIFIED/UNOBSERVABLE findings behind every design decision, plus user-run-only seeding requests to close the item shapes of endpoints that are empty on the test account.Also includes a one-line
CONTRIBUTING.mdfix (separate commit): the sops example still referenced the pre-migrationhelpful-kingdom-273219KMS key; the repo standard isestuary-theatre'sconnector-repositorykey.I don't have access to Estuary's GCP KMS, so
source-hyperline/config.yamlis sops-encrypted with my local age key — CI cannot decrypt it. Please re-encrypt with theconnector-repositoryKMS key (I can supply the API key through a secure channel, or you can swap in an Estuary-owned Hyperline account). Until thentest_capturewill fail in CI;test_spec/test_discoverare credential-free and pass.Notes for review
tests/test_snapshots.py'sREDACTED_FIELDS, and a final sweep; the capture snapshot keeps one document per stream.preview-next); two consecutive capture runs were byte-identical.subscription_transitionswas deliberately classified snapshot rather than incremental: noupdated_atexists and its candidate timestamps are nullable + date-granularity, so any range filter silently drops pending rows.🤖 Generated with Claude Code