API template library

Chase Optimization & Protection mock API and live sandbox

A WireMock simulation of Chase JPMorgan's REST API — covering 3-D Secure authentication, wallet decryption, network tokenization and cryptograms, merchant data reports, and webhook notification subscriptions.

Vendor
Chase JPMorgan
Functionality
3-D Secure, tokenization, reporting
Spec version
1.0.0
Endpoints
43
Stubs
49
Protocol
REST
Validation
AI-validated Before publication, an AI agent exercised these endpoints against the real Chase JPMorgan API through WireMock's recording proxy, and the recorded traffic was used to verify each stub's request and response shapes.

Live sandbox · no signup, no API key

Chase Optimization & Protection APIs

A running WireMock Cloud instance of this template, callable right now from a terminal, a script, or an AI agent.

Base URL
https://w2dg1.wiremockapi.cloud

POST Prepare 3DS authentication - 200 OK

curl -s -X POST 'https://w2dg1.wiremockapi.cloud/api/v2/authentications' \
  -H 'Content-Type: application/json' \
  -d '{}'

GET Get 3DS authentication by ID - 200 OK

curl -s -X GET 'https://w2dg1.wiremockapi.cloud/api/v2/authentications/your-authentication-id'

DELETE Delete subscription by ID - 204 No Content

curl -s -X DELETE 'https://w2dg1.wiremockapi.cloud/v1/subscriptions/your-subscription-id'
Method Path Summary
GET /api/v1/healthcheck Health check for the Data Reports service.
GET /api/v1/report-configs Get a list of available report configurations.
GET /api/v1/report-configs/{report-configuration-id} Get details for a specific report configuration.
PUT /api/v1/report-configs/{report-configuration-id} Update an existing report configuration.
GET /api/v1/report-files/{report-id} Get a specific report file.
GET /api/v1/report-types Get a list of available report types.
GET /api/v1/report-types/{report-type-id} Get details for a specific report type.
GET /api/v1/reporting-groups Get a list of available report reporting groups.
POST /api/v1/reporting-groups Create new reporting group
PATCH /api/v1/reporting-groups/{groupId} Update an existing reporting group.
GET /api/v1/reports Get a list of available reports.
POST /api/v1/reports Create a new report configuration.
GET /api/v1/reports/{report-id} Get details for a specific report.
POST /api/v2/authentications Prepare a 3DS authentication
GET /api/v2/authentications/{authentication-id} Find an authentication request
POST /api/v2/authentications/{authentication-id} Perform a 3DS authentication
GET /api/v2/healthcheck Validate the health of the service.
POST /api/v2/wallet-decryptions Decrypt a Paze, Google Pay, or Apple Pay encrypted wallet bundle
POST /payments/v1/acquirertokens Provision a acquirer token for a payment instrument
POST /payments/v1/bulk-tokens Process Bulk Tokens
GET /payments/v1/bulk-tokens/{merchant-file-identifier} Retrieve the status of a bulk file
GET /payments/v1/bulk-tokens/{merchant-file-identifier}/download Retrieve details of a bulk file
GET /payments/v1/bulk-tokens/encryption-key Get bulk token encryption key
POST /payments/v1/bulk-tokens/encryption-key Create encryption key from a merchant
POST /payments/v1/cryptograms Token cryptogram request
GET /payments/v1/healthcheck Health check for the Tokenization service
POST /payments/v1/tokens Token provisioning request
GET /payments/v1/tokens/{token-reference-id} Request token information
GET /payments/v1/tokens/{token-reference-id}/assets/{asset-reference-id} Request token assets
GET /payments/v1/tokens/{token-reference-id}/details Request token details
GET /payments/v1/tokens/{token-reference-id}/lifecycle-states Request token states
PATCH /payments/v1/tokens/{token-reference-id}/lifecycle-states Token lifecycle management request
GET /v1/healthcheck/notification-subscriptions Health check for the Notification Subscription service
GET /v1/notifications Get all notifications within a date range by notification status
GET /v1/notifications/{notification-id} Get a notification by notification Id
GET /v1/notificationTypes Get all notification event types available
GET /v1/public-keys Get a notification public key
GET /v1/publicKeys (DEPRECATED) Get a public key by entity Id
GET /v1/subscriptions Get all subscriptions by entity Id
POST /v1/subscriptions Subscribe to a notification
DELETE /v1/subscriptions/{subscription-id} Delete a specific subscription
GET /v1/subscriptions/{subscription-id} Get a subscription by subscription Id
PUT /v1/subscriptions/{subscription-id} Update a specific subscription

Unauthenticated WireMock Cloud demo sandbox for Chase JPMorgan — not an official Chase JPMorgan sandbox, and it returns simulated example data only.

What's inside the Optimization & Protection template

Four merchant-services products share this base URL — data reports, 3-D Secure with wallet decryption, network tokenization, and notification subscriptions — each behind its own healthcheck. The 3-D Secure flow is the template's centerpiece because it moves: initiating an authentication mints an id in state AUTH_INITIATED, carrying the ACS method URL and a base64 method form that decodes to real JSON, and the second POST advances that same record to AUTH_COMPLETED — transaction status Y, ECI 05 — a transition later reads keep reporting. Subscriptions run the cleanest resource lifecycle in the Chase library: 201 on create, list and detail reads that reflect it, an applied PUT, a 404 for ids it never issued, and a true 204 delete verified gone. Reporting groups, generated reports, and provisioned network tokens keep real records too, the last always carrying the same VISA token number and card-art palette however the request was shaped.

  • 3-D Secure — the two-step authentication pair whose initiated-to-completed transition persists
  • Wallet decryption — a fixed decrypted payload with PAN, TAVV cryptogram, and passcode authentication method
  • Network tokens — provisioning with details, lifecycle states, card-art asset metadata, cryptograms, and bulk files
  • Data reports — report generation and reporting groups with field dictionaries and CSV downloads
  • Notifications — a five-family event catalog, JWKS signing keys, and full-CRUD webhook subscriptions

Frequently asked questions

Faithful in the direction that matters, permissive at the edges. The prepare-then-perform sequence is a genuine transition on one stored record, so challenge-flow code can assert the initiated state, complete it, and re-read the completed result. The edge: performing against an id that was never initiated doesn't refuse — it answers completed and writes the id into the store. Sequence enforcement is therefore your test suite's job here, not the sandbox's. The authorization call that consumes these results is the Online Payments template's territory.

Anything. The lifecycle PATCH copies your cardTokenStatus string into the stored record verbatim — SUSPENDED works, but so does any invented word, and a request using a different field name writes an empty status while previousCardTokenStatus reads ACTIVE regardless. That makes the route a persistence demo rather than a validator: enum enforcement and illegal-transition rejections are stubs to add in a private WireMock Cloud copy. Note also that acquirer-token creation mints reference ids the token store never registers — only /tokens provisioning produces resolvable records.

The lists and the detail routes answer from different layers: each list is a static brochure fixture, while the detail stores only know ids minted in your own session. Ask for the listed report config and the response is the uniform not-found body; generate a report yourself and its id resolves enriched — status Completed, a dated CSV file name, and a download URL that serves the canned two-row report. One genuine defect sits nearby: updating a report config returns a 500 whose body is a raw templating error, for any id and any payload, so treat that route as unserved in the public sandbox.

No — it manages the subscription records, not the delivery. What it does supply is everything around delivery: the notificationTypes catalog enumerating five event families with their subtypes, a JWKS route (plus its deprecated predecessor, still answering) for signature verification wiring, and subscription CRUD that genuinely persists, updates, and deletes. Two truthful imperfections to expect in the update response: the updated-timestamp doesn't move, and the message still says the subscription was created.

Vendor names identify APIs represented by WireMock template sources. This page does not imply vendor endorsement, certification, partnership, or official integration status.