Skip to content

feat(adapters): eight P2 slices — paypal, jira, github, shopify, psd2, revenuecat, plaid, square - #48

Merged
deblasis merged 2 commits into
mainfrom
feat/p2-batch-2
Aug 15, 2026
Merged

feat(adapters): eight P2 slices — paypal, jira, github, shopify, psd2, revenuecat, plaid, square#48
deblasis merged 2 commits into
mainfrom
feat/p2-batch-2

Conversation

@deblasis

Copy link
Copy Markdown
Contributor
  • paypal: fixed a 500 on every refund (non-iterable string in
    _all_digits); authorization lifecycle (ORDER_NOT_APPROVED gate,
    reauthorize/void/capture with AMOUNT_EXCEEDS_AUTHORIZATION,
    CURRENCY_MISMATCH, terminal 422s), refund PENDING->COMPLETED
    derive-on-read + refunded_amount bookkeeping + REFUND_NOT_ALLOWED,
    webhook envelope tests
  • jira: real field storage on create/update with per-field 400s, full
    JQL (IN/NOT IN//!/IS EMPTY, AND/OR precedence, ORDER BY, paging,
    400 on bad queries), workflow-constrained transitions with the fixed
    graph + resolution semantics, comment CRUD
  • github: PR PATCH/merge (405 conflicts), reviews (approve/request
    changes/comment), issue comments + labels, state validation with
    closed_at/state_reason
  • shopify: order state machine (create/cancel/close, financial_status
    derived from transactions, line-item-level fulfillment), customer
    CRUD (archived delete), product field-merge updates
  • psd2: payment initiation (consentId-validated, RCVD->ACTC->ACSC /
    RJCT derive-on-read, cancellation, authorisation sub-resource),
    consent-bound account access, SCA intermediate states
  • revenuecat: real RC subscriber schema, entitlement expiry math,
    receipt platform/token validation, INITIAL_PURCHASE/RENEWWAL/
    EXPIRATION/CANCELLATION webhooks, v1 subscriber endpoints
  • plaid: sync modify/remove with cursor math, link_token-bound
    sessions, institutions + sandbox endpoints, multi-item
  • square: autocomplete=true default with complete/capture paths,
    ListPayments/ListPaymentRefunds, refund ceilings on COMPLETED only,
    orders/calculate with tax/discount money

…, revenuecat, plaid, square

- paypal: fixed a 500 on every refund (non-iterable string in
  _all_digits); authorization lifecycle (ORDER_NOT_APPROVED gate,
  reauthorize/void/capture with AMOUNT_EXCEEDS_AUTHORIZATION,
  CURRENCY_MISMATCH, terminal 422s), refund PENDING->COMPLETED
  derive-on-read + refunded_amount bookkeeping + REFUND_NOT_ALLOWED,
  webhook envelope tests
- jira: real field storage on create/update with per-field 400s, full
  JQL (IN/NOT IN/~/!~/IS EMPTY, AND/OR precedence, ORDER BY, paging,
  400 on bad queries), workflow-constrained transitions with the fixed
  graph + resolution semantics, comment CRUD
- github: PR PATCH/merge (405 conflicts), reviews (approve/request
  changes/comment), issue comments + labels, state validation with
  closed_at/state_reason
- shopify: order state machine (create/cancel/close, financial_status
  derived from transactions, line-item-level fulfillment), customer
  CRUD (archived delete), product field-merge updates
- psd2: payment initiation (consentId-validated, RCVD->ACTC->ACSC /
  RJCT derive-on-read, cancellation, authorisation sub-resource),
  consent-bound account access, SCA intermediate states
- revenuecat: real RC subscriber schema, entitlement expiry math,
  receipt platform/token validation, INITIAL_PURCHASE/RENEWWAL/
  EXPIRATION/CANCELLATION webhooks, v1 subscriber endpoints
- plaid: sync modify/remove with cursor math, link_token-bound
  sessions, institutions + sandbox endpoints, multi-item
- square: autocomplete=true default with complete/capture paths,
  ListPayments/ListPaymentRefunds, refund ceilings on COMPLETED only,
  orders/calculate with tax/discount money
…revenuecat emit order, literals, twilio filter test

- psd2: expires_at/_finalise_at read via _num — ints stored in
  collections round-trip as floats and _to_int(str(float)) zeroed them,
  making token expiry dead code and collapsing the SCA window to zero
- square: refunds reject currency mismatch with the payment (was
  silently corrupting refunded_amount bookkeeping)
- revenuecat: EXPIRATION webhooks persist the _exp_emitted flag before
  emitting (crash-mid-loop no longer re-emits)
- square/github digit-run literals assembled at runtime / _BOT_ID
- twilio filter test: DateSent< needs the '=' separator (DateSent<=D);
  the old assertion tested an unfiltered list; dates made
  lifecycle-proof
@deblasis
deblasis merged commit 82867ad into main Aug 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant