Watchmaker Genomics · OpenAPI Overlay 1.0.0
API Evangelist enhancements for the Watchmaker Genomics Storefront REST API
9 actions
9 updates
documentation
Generated by API Evangelist
Written by API Evangelist tooling for Watchmaker Genomics's API. It is a proposal applied on top of the contract, not a document Watchmaker Genomics publishes.
What the actions change
x-consequencedescriptionx-dry-runx-notetitlex-operatorx-operator-urlx-platform
Targets 8
$.info
$
$.securityDefinitions.api_key
$.paths
$.paths['/V1/guest-carts/{cartId}/order'].put
$.paths['/V1/guest-carts/{cartId}/estimate-shipping-methods'].post
$.paths['/V1/guest-carts/{cartId}/totals-information'].post
$.paths['/V1/customers'].post
OpenAPI Overlay
overlay: 1.0.0
info:
title: API Evangelist enhancements for the Watchmaker Genomics Storefront REST API
version: 1.0.0
x-provenance:
generated: '2026-09-04'
method: generated
source: openapi/watchmaker-genomics-commerce-rest-swagger.json
note: >-
Non-destructive enhancements over the Swagger 2.0 document Watchmaker Genomics' storefront
self-serves at /rest/all/schema?services=all. The original is preserved verbatim and is never
mutated. Every action below records something observed on the live host or read from a sibling
artifact in this repo — a missing description, a real base URL, an undeclared 401, an
irreversibility fact — and nothing invents API behaviour.
actions:
- target: $.info
description: >-
The published document carries only {version: "2.4", title: "Magento Enterprise"} — the
platform's identity, not the operator's. Name the operator and give the contract a description
and a contact, which contract_quality's info_complete check reads.
update:
title: Watchmaker Genomics Storefront REST API
description: >-
The Adobe Commerce (Magento 2.4) REST API as deployed by Watchmaker Genomics on its own host,
www.watchmakergenomics.com. Self-described at /rest/all/schema?services=all. The anonymous
slice — directory, guest carts, checkout estimation and order placement, customer account
creation, gift cards, in-store pickup, search and the Magefan blog — answers without a
credential; every other operation returns 401 naming the Magento ACL resource it needs.
Watchmaker Genomics publishes no developer documentation for this surface; it exists because
the platform serves it.
x-operator: Watchmaker Genomics
x-operator-url: https://www.watchmakergenomics.com/
x-platform: Adobe Commerce (Magento 2.4)
x-platform-note: >-
info.title in the original reads "Magento Enterprise" because the document is generated by
the platform. Ownership was verified from the deployment, not the title — the schema's own
host field is www.watchmakergenomics.com, the WSDL targetNamespace is
https://www.watchmakergenomics.com/soap/all, and a live GraphQL storeConfig query returns
base_url https://www.watchmakergenomics.com/ over Watchmaker's own SKUs.
contact:
name: Watchmaker Genomics Support
email: support@watchmakergenomics.com
url: https://www.watchmakergenomics.com/technical-support
- target: $
description: Record the callable base and the store-scope variants observed to resolve.
update:
x-base-url: https://www.watchmakergenomics.com/rest/all
x-store-scopes:
- {scope: all, path: /rest/all, note: All store views. Verified 200.}
- {scope: default, path: /rest/default, note: Default store view. Verified 200, identical schema.}
x-schema-source: https://www.watchmakergenomics.com/rest/all/schema?services=all
x-verified-anonymous:
- {operationId: GetV1DirectoryCurrency, url: 'https://www.watchmakergenomics.com/rest/V1/directory/currency', status: 200, fetched: '2026-09-04'}
- target: $.securityDefinitions.api_key
description: >-
The original declares the scheme but says nothing about how a caller obtains a key, and the
document never applies security to any operation.
update:
description: >-
Magento integration access token. Also accepted as `Authorization: Bearer <token>`. Tokens
are issued by POST /V1/integration/admin/token or POST /V1/integration/customer/token, both
of which are in this document — but note that the storefront's own account routes
(/customer/account/create/, /customer/account/login/) return 404, so no member of the public
can obtain one. The credentialed surface is effectively closed.
- target: $.paths
description: >-
401 is returned in practice and declared nowhere in the 70-operation surface. Record it at the
document level so a consumer reading the contract is not surprised by it.
update:
x-undeclared-responses:
- status: 401
schema: '#/definitions/error-response'
evidence:
url: https://www.watchmakergenomics.com/rest/V1/store/storeConfigs
status: 401
body: '{"message":"The consumer isn''t authorized to access %resources.","parameters":{"resources":"Magento_Backend::store"}}'
note: >-
Returned by every operation outside the anonymous slice. parameters.resources names the
required ACL resource. See errors/watchmaker-genomics-problem-types.yml.
- target: $.paths['/V1/guest-carts/{cartId}/order'].put
description: >-
The single most consequential operation on the surface, and the contract says nothing about
whether it can be undone. Attach the irreversibility fact, read live from the store's own
configuration.
update:
x-consequence: irreversible
x-reversibility:
grade: documented
reversal_operation: 'GraphQL cancelOrder (this REST surface has no cancel operation at all)'
available: false
window: null
evidence:
url: https://www.watchmakergenomics.com/graphql
query: '{storeConfig{order_cancellation_enabled returns_enabled}}'
result: {order_cancellation_enabled: false, returns_enabled: disabled}
fetched: '2026-09-04'
note: >-
Order cancellation and returns are both switched OFF on this store. An agent placing an
order here cannot take it back programmatically. Recovery is human:
orders@watchmakergenomics.com or +1-720-543-2174.
x-escalation: human-approval-required
- target: $.paths['/V1/guest-carts/{cartId}/estimate-shipping-methods'].post
description: Mark the genuine dry-run path so an agent can rehearse before committing.
update:
x-consequence: read-only
x-dry-run: true
x-note: >-
Computes shipping options for an address without mutating the cart or creating an order.
Pair with POST /V1/guest-carts/{cartId}/totals-information to price the whole basket before
calling PUT /V1/guest-carts/{cartId}/order.
- target: $.paths['/V1/guest-carts/{cartId}/totals-information'].post
update:
x-consequence: read-only
x-dry-run: true
- target: $.paths['/V1/customers'].post
description: Record that the API-side account flow is open while the web-side one is not.
update:
x-note: >-
Account creation answers on the API while the storefront routes /customer/account/create/
and /customer/account/login/ both return 404 (probed 2026-09-04). Anyone integrating should
confirm with Watchmaker that self-service registration is intended to be reachable here.
- target: $
description: Record what this contract does NOT contain, which is the finding an integrator needs first.
update:
x-coverage-gaps:
- >-
NO product or category read operations exist in this REST surface. GetV1Productsrenderinfo is
a price/render-block helper and GetV1Search is a generic quick search. The Watchmaker
catalog — SKUs, descriptions, media, tier prices, stock, custom attributes — is reachable
only through the GraphQL endpoint at https://www.watchmakergenomics.com/graphql.
- No rate limits are declared and no 429 response appears on any operation.
- No idempotency mechanism exists on any of the 70 operations.
- Errors use the Magento envelope, not RFC 9457 application/problem+json.
x-companion-surfaces:
- {type: GraphQL, url: 'https://www.watchmakergenomics.com/graphql', artifact: graphql/watchmaker-genomics-commerce.graphql}
- {type: WSDL, url: 'https://www.watchmakergenomics.com/soap/all?wsdl_list=1', artifact: wsdl/watchmaker-genomics-commerce-soap.wsdl}