Skip to content

deprecate(issuing): deprecate the update-card headers and make the revoke and suspend request optional - #256

Merged
armando-rodriguez-cko merged 4 commits into
mainfrom
fix/INT-1713-issuing-card-update-headers
Oct 23, 2026
Merged

armando-rodriguez-cko merged 4 commits into
mainfrom
fix/INT-1713-issuing-card-update-headers

Conversation

@armando-rodriguez-cko

Copy link
Copy Markdown
Contributor

Summary

The API no longer documents the return-encrypted-cvv and Encryption-Key request headers on the update card operation, and the revoke and suspend request bodies are optional. This deprecates the headers (they keep working when set) and lets revoke_card and suspend_card be called without a request.

Verified against the sandbox: update card with and without the deprecated headers (200 both, the API ignores the headers), and suspend and revoke without a request (200, card ends suspended and revoked).

Changes

  • checkout_sdk/issuing/cards.py
    • CardUpdateHeaders: deprecation note in the docstring.
    • RevokeRequest, SuspendRequest: documented as optional bodies, reason doc comments with the enum values.
  • checkout_sdk/issuing/issuing_client.py
    • IssuingClient.update_card: the headers argument is deprecated; passing it emits a DeprecationWarning. Headers are still sent unchanged.
    • IssuingClient.revoke_card, IssuingClient.suspend_card: the request now defaults to None; when omitted no body is sent.
  • tests/issuing/issuing_client_test.py: warning asserted when headers are passed and absent otherwise; revoke and suspend without a request.
  • tests/issuing/card_update_headers_wire_test.py: revoke and suspend without a request send no body on the wire.

API Reference

Breaking changes

None. Passing headers to update_card now emits a DeprecationWarning; the new defaults keep existing calls compatible. The deprecated members are planned for removal in the next major version.

README

No changes needed: the README does not document these operations.

@armando-rodriguez-cko
armando-rodriguez-cko requested a review from a team October 22, 2026 13:07
@agent-wall-e

agent-wall-e Bot commented Oct 22, 2026

Copy link
Copy Markdown

🟢 Risk Classification: LOW

Approval route: AI Auto-Approval
Rollback controls: Automated Instant Rollback + feature flags

Classification reasons

  • no_low_class_matched
  • prod_source_modified
  • 2.2.6_logical_extension:The change only adds deprecation warnings, makes existing request arguments optional with None defaults, and adds docstrings — no new endpoints, persisted data, auth changes, or external integrations are introduced.

Operational gates

  • ✅ jira_ticket (INT-1713)
  • ✅ independent_review

Files analysed: 4


wall-e 2026.06.19-02 · policy 6b4ce2b3b45a…

@agent-wall-e

agent-wall-e Bot commented Oct 22, 2026

Copy link
Copy Markdown
🔬 Debug — why this classification?

Each reason code emitted by the classifier, its source clause in the AI in SDLC Control Framework, and what it means.

Reason code Kind Clause Meaning
no_low_class_matched informational §2.2 (fall-through) None of the deterministic Low classes (§2.2.3, §2.2.4, §2.2.7, docs-only) applied; classifier fell through to LLM evaluation.
prod_source_modified informational §2.1 M7 (informational) At least one file is non-doc, non-test, non-IaC — i.e. application source code was modified.
2.2.6_logical_extension — The change only adds deprecation warnings, makes existing request arguments optional with None defaults, and adds docstrings — no new endpoints, persisted data, auth changes, or external integrations are introduced. classifying §2.2.6 Sonnet 4.6 evaluator promoted minor → low: the change reuses existing code paths and does not cross a trust boundary.

Kinds:

  • classifying — this rule contributed to the chosen tier.
  • informational — context only; did not by itself decide the tier.

See issue #3 for the proposal to formalise this map as Appendix A of the standards doc.

wall-e 2026.06.19-02 · debug

@agent-wall-e agent-wall-e Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Auto-approved — this PR meets all Low-risk criteria.

All checks passed, no unresolved comments, and the change classification is:

  • no_low_class_matched
  • prod_source_modified
  • 2.2.6_logical_extension:The change only adds deprecation warnings, makes existing request bodies optional with None defaults, and adds docstring comments — all within existing code paths and abstractions without new endpoints, persisted data, auth changes, or external integrations.

wall-e 2026.06.19-02 · policy 6b4ce2b3b45a…

@agent-wall-e

agent-wall-e Bot commented Oct 22, 2026

Copy link
Copy Markdown

🟢 Risk Classification: LOW

Approval route: AI Auto-Approval
Rollback controls: Automated Instant Rollback + feature flags

Classification reasons

  • no_low_class_matched
  • prod_source_modified
  • 2.2.6_logical_extension:The change is a non-destructive, function-preserving deprecation that adds optional defaults and a DeprecationWarning to existing method signatures without introducing new endpoints, persisted data, auth changes, or external integrations.

Operational gates

  • ✅ jira_ticket (INT-1713)
  • ✅ independent_review

Files analysed: 6


wall-e 2026.06.19-02 · policy 6b4ce2b3b45a…

@agent-wall-e

agent-wall-e Bot commented Oct 22, 2026

Copy link
Copy Markdown
🔬 Debug — why this classification?

Each reason code emitted by the classifier, its source clause in the AI in SDLC Control Framework, and what it means.

Reason code Kind Clause Meaning
no_low_class_matched informational §2.2 (fall-through) None of the deterministic Low classes (§2.2.3, §2.2.4, §2.2.7, docs-only) applied; classifier fell through to LLM evaluation.
prod_source_modified informational §2.1 M7 (informational) At least one file is non-doc, non-test, non-IaC — i.e. application source code was modified.
2.2.6_logical_extension — The change is a non-destructive, function-preserving deprecation that adds optional defaults and a DeprecationWarning to existing method signatures without introducing new endpoints, persisted data, auth changes, or external integrations. classifying §2.2.6 Sonnet 4.6 evaluator promoted minor → low: the change reuses existing code paths and does not cross a trust boundary.

Kinds:

  • classifying — this rule contributed to the chosen tier.
  • informational — context only; did not by itself decide the tier.

See issue #3 for the proposal to formalise this map as Appendix A of the standards doc.

wall-e 2026.06.19-02 · debug

@agent-wall-e agent-wall-e Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Auto-approved — this PR meets all Low-risk criteria.

All checks passed, no unresolved comments, and the change classification is:

  • no_low_class_matched
  • prod_source_modified
  • 2.2.6_logical_extension:The change only adds deprecation warnings to existing method signatures, makes existing request bodies optional (defaulting to None), and updates docstrings—no new endpoints, persisted data, auth changes, external integrations, or new code paths are introduced.

wall-e 2026.06.19-02 · policy 6b4ce2b3b45a…

@agent-wall-e

agent-wall-e Bot commented Oct 23, 2026

Copy link
Copy Markdown

🟢 Risk Classification: LOW

Approval route: AI Auto-Approval
Rollback controls: Automated Instant Rollback + feature flags

Classification reasons

  • no_low_class_matched
  • prod_source_modified
  • 2.2.6_logical_extension:The PR only adds deprecation warnings to existing method signatures, makes request bodies optional (defaulting to None sends no body), and updates docstrings—all within existing code paths, endpoints, and abstractions without introducing new integrations, persisted data, auth changes, or background processes.

Operational gates

  • ✅ jira_ticket (INT-1713)
  • ✅ independent_review

Files analysed: 6


wall-e 2026.06.19-02 · policy 6b4ce2b3b45a…

@agent-wall-e

agent-wall-e Bot commented Oct 23, 2026

Copy link
Copy Markdown
🔬 Debug — why this classification?

Each reason code emitted by the classifier, its source clause in the AI in SDLC Control Framework, and what it means.

Reason code Kind Clause Meaning
no_low_class_matched informational §2.2 (fall-through) None of the deterministic Low classes (§2.2.3, §2.2.4, §2.2.7, docs-only) applied; classifier fell through to LLM evaluation.
prod_source_modified informational §2.1 M7 (informational) At least one file is non-doc, non-test, non-IaC — i.e. application source code was modified.
2.2.6_logical_extension — The PR only adds deprecation warnings to existing method signatures, makes request bodies optional (defaulting to None sends no body), and updates docstrings—all within existing code paths, endpoints, and abstractions without introducing new integrations, persisted data, auth changes, or background processes. classifying §2.2.6 Sonnet 4.6 evaluator promoted minor → low: the change reuses existing code paths and does not cross a trust boundary.

Kinds:

  • classifying — this rule contributed to the chosen tier.
  • informational — context only; did not by itself decide the tier.

See issue #3 for the proposal to formalise this map as Appendix A of the standards doc.

wall-e 2026.06.19-02 · debug

@agent-wall-e agent-wall-e Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Auto-approved — this PR meets all Low-risk criteria.

All checks passed, no unresolved comments, and the change classification is:

  • no_low_class_matched
  • prod_source_modified
  • 2.2.6_logical_extension:The change only adds deprecation warnings to existing method signatures, makes existing request body parameters optional (defaulting to None with no body sent), and adds docstring documentation—all within existing code paths, endpoints, and abstractions without new integrations, persisted data, auth changes, or new external calls.

wall-e 2026.06.19-02 · policy 6b4ce2b3b45a…

…voke and suspend request optional

The API no longer documents the return-encrypted-cvv and Encryption-Key headers on the
update card operation, so CardUpdateHeaders and the headers argument of update_card are
deprecated. They keep working when set and emit a DeprecationWarning; removal is planned
for the next major version.

The revoke and suspend request bodies are optional in the API, so revoke_card and
suspend_card now accept no request and send no body in that case.
… update card fields

Add serialization tests for the revoke and suspend requests, document the update card status, scheduled revocation date and metadata fields from the specification, assert the deprecation warning in the header wire tests and replace the tests that still described the encrypted CVV behaviour.
@armando-rodriguez-cko
armando-rodriguez-cko force-pushed the fix/INT-1713-issuing-card-update-headers branch from c4b8fdc to 0e198ef Compare October 23, 2026 12:26
@agent-wall-e

agent-wall-e Bot commented Oct 23, 2026

Copy link
Copy Markdown

🟢 Risk Classification: LOW

Approval route: AI Auto-Approval
Rollback controls: Automated Instant Rollback + feature flags

Classification reasons

  • no_low_class_matched
  • prod_source_modified
  • 2.2.6_logical_extension:The change is non-destructive, adds only deprecation warnings and optional defaults to existing methods, reuses existing code paths and endpoints, introduces no new persisted data, auth changes, external integrations, or background processes.

Operational gates

  • ✅ jira_ticket (INT-1713)
  • ✅ independent_review

Files analysed: 6


wall-e 2026.06.19-02 · policy 6b4ce2b3b45a…

@agent-wall-e

agent-wall-e Bot commented Oct 23, 2026

Copy link
Copy Markdown
🔬 Debug — why this classification?

Each reason code emitted by the classifier, its source clause in the AI in SDLC Control Framework, and what it means.

Reason code Kind Clause Meaning
no_low_class_matched informational §2.2 (fall-through) None of the deterministic Low classes (§2.2.3, §2.2.4, §2.2.7, docs-only) applied; classifier fell through to LLM evaluation.
prod_source_modified informational §2.1 M7 (informational) At least one file is non-doc, non-test, non-IaC — i.e. application source code was modified.
2.2.6_logical_extension — The change is non-destructive, adds only deprecation warnings and optional defaults to existing methods, reuses existing code paths and endpoints, introduces no new persisted data, auth changes, external integrations, or background processes. classifying §2.2.6 Sonnet 4.6 evaluator promoted minor → low: the change reuses existing code paths and does not cross a trust boundary.

Kinds:

  • classifying — this rule contributed to the chosen tier.
  • informational — context only; did not by itself decide the tier.

See issue #3 for the proposal to formalise this map as Appendix A of the standards doc.

wall-e 2026.06.19-02 · debug

@sonarqubecloud

Copy link
Copy Markdown

@armando-rodriguez-cko
armando-rodriguez-cko merged commit bc8380b into main Oct 23, 2026
4 checks passed
@armando-rodriguez-cko
armando-rodriguez-cko deleted the fix/INT-1713-issuing-card-update-headers branch October 23, 2026 12:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants