generated: '2026-08-28'
method: searched
source: https://marketplace.sears.com/docs/api-guide/
docs: https://marketplace.sears.com/docs/api-guide/using-sear-marketplace-apis-for-xml-integration/
api: Sears Marketplace Seller API
media_type: application/xml
note: >-
Cross-cutting runtime semantics for the Sears Marketplace Seller API, read from the provider's
own API Guide and the 33 XSDs harvested into xsd/. There is no OpenAPI to derive from; every
statement below traces to a published page or a fetched schema.
auth:
style: HMAC-SHA256 request signature in an Authorization header
detail: authentication/sears-holdings-authentication.yml
transport:
protocol: HTTPS
verbs:
- verb: GET
meaning: export a document from Seller Portal (orders, inventory, reports, libraries)
- verb: PUT
meaning: import a document into Seller Portal (items, inventory, pricing, ASNs, adjustments)
payload: whole XML documents validated against a published XSD, not per-resource JSON
note: >-
The API is document-oriented rather than resource-oriented. A PUT submits a feed file and
returns a document-id; it does not return the created resource. There is no POST, PATCH or
DELETE - deletion is expressed as an items-to-delete section inside a catalog feed.
async_write_model:
shape: accept-then-verify
description: >-
A 200 OK on a PUT means only that the file was ACCEPTED, not that it processed. The provider
states this in bold: "A 200 (OK) response from the API call only means we accepted the file and
does not mean that we processed the file without any issues." The caller must take the
document-id from the api-response body and poll the Processing Report API to learn the real
outcome.
step_1: PUT the feed -> 200 OK with N
step_2: GET /SellerPortal/api/reports/v1/processing-report/{document-id}?sellerId={sellerId}
step_3_for_refunds: GET /SellerPortal/api/oms/orderadjustment/v3 to confirm the refund completed or failed
agent_implication: >-
An agent that treats the 200 as success will silently drop every rejected record. The
processing report is not optional instrumentation, it is the second half of the write.
idempotency:
supported: false
header: null
scope: null
retention: null
evidence: >-
No Idempotency-Key header, no request-id de-duplication and no replay-safety statement appears
anywhere in the API Guide or in any of the 33 published XSDs. The nearest thing to a safety net
is domain-level: a duplicate catalog record is rejected with "Duplicate item and store id", and
an order already marked returned rejects further adjustments. Those are business-rule guards on
two specific feeds, not a general idempotency contract.
agent_implication: >-
Retrying a failed PUT is not safe in general. A timed-out ASN or order-adjustment PUT may or may
not have been accepted, and the only way to find out is to poll the processing report or the
refund-status lookup before resending.
pagination:
style: date-range filtering, not cursor or page pagination
params:
- fromdate
- todate
- status
- podate
- ponumber
response_fields: []
note: >-
Export APIs are scoped by query parameters on the request URL and return a whole document.
There is no page, offset, cursor or next-link convention, and no total-count field.
field_expansion:
supported: false
sparse_fields:
supported: false
metadata:
supported: false
note: There is no free-form metadata bag on any entity; every field is XSD-constrained.
request_id_tracing:
request_header: null
response_field: document-id
note: >-
The document-id returned in is the correlation handle for a submitted feed. It
is the only tracing identifier the API exposes, and it is assigned by the server, not the
caller.
versioning:
style: version in the URL path segment and in the XML target namespace
examples:
- https://seller.marketplace.sears.com/SellerPortal/api/oms/purchaseorder/v19
- http://seller.marketplace.sears.com/oms/v7
per_api: true
note: >-
Every API carries its own independent integer version. There is no global API version. Multiple
versions of the same API stay callable simultaneously (purchase order v13, v15, v18 and v19 are
all documented as current), which is a real strength for a slow-moving integrator.
error_envelope:
synchronous:
element: api-response
namespace: http://seller.marketplace.sears.com/shared/v1
schema: xsd/sears-holdings-shared-api-response-v1.xsd
fields: [deprecated, document-id, error-detail, processing-message]
note: >-
A single choice of document-id (success), error-detail (failure) or processing-message.
Errors are returned with HTTP 200 and an error-detail element, not with a 4xx status.
asynchronous:
element: report
schema: xsd/sears-holdings-shared-seller-error-report-v1.xsd
fields: [summary.record-count, summary.records-with-warnings, summary.records-with-errors, summary.records-accepted, detail.warnings.warning, detail.errors.error]
keyed_by: record-id attribute per warning/error, pointing back into the submitted feed
rfc9457: false
catalog: errors/sears-holdings-problem-types.yml
rate_limit_signaling:
headers: []
status_on_exhaustion: 403
body_message: rate limited
detail: rate-limits/sears-holdings-rate-limits.yml
note: >-
No runtime quota signal of any kind. The published limits are the only budget an agent has, and
it must track its own consumption.
reversibility:
applicable: true
grade: documented
grade_basis: >-
Reversal operations are documented for every consequential write, but the provider states no
time window for any of them. Per the 0.12.0 rubric that is `documented` (0.4), not `verified`.
No window is asserted here that the docs do not state.
write_surfaces:
- surface: Purchase order fulfilment (ASN / shipment update)
write: PUT /SellerPortal/api/oms/asn/v7
reversal: null
window: null
note: >-
Once an ASN closes an order line there is no documented un-ship operation. The recorded
recovery path is a subsequent refund or return via the order adjustment API, not a reversal
of the shipment itself.
- surface: Order cancellation
write: PUT /SellerPortal/api/oms/order/cancel/v1
reversal: null
window: null
note: >-
Cancellation is itself the reversal of an order. The guide documents no un-cancel. It does
state a related automatic boundary - an order with a rejected ASN that is not closed reaches
30 days overdue and is automatically cancelled, and the seller is not paid for it.
- surface: Refund (money out, buyer keeps the item)
write: PUT /SellerPortal/api/oms/order/adjustment/v5 with a section
reversal: null
status_check: GET /SellerPortal/api/oms/orderadjustment/v3?sellerId={}&ponumber={}&podate={}
window: null
note: >-
A refund cannot be taken back. It can only be verified: the status lookup reports the
adjustment as completed or failed, and a failure reason the guide names explicitly is that a
return or refund was already issued.
- surface: Return (money out, item comes back)
write: PUT /SellerPortal/api/oms/order/adjustment/v5 with a section
reversal: null
window: null
hard_boundary: >-
Documented and load-bearing - "Adjustments cannot be made on an order that has been marked
as returned. Seller Portal will accept a refund file but the order management system will
reject the refund and it will fail to process." The PUT still returns 200, so an agent that
does not poll the status lookup will believe a rejected refund succeeded.
- surface: Catalog item deletion
write: PUT /SellerPortal/api/catalog/fbm/v25 with an items-to-delete section
reversal: re-create the item through the same catalog feed
window: 90 days
window_source: >-
The API Guide states deleted items are pulled down from the .com sites and purged after
90 days - the only numeric reversal window the provider publishes.
- surface: Catalog item deactivation
write: PUT /SellerPortal/api/catalog/fbm/v25 with an items-to-inactivate section
reversal: reactivate through the same feed
window: unlimited
window_source: >-
The guide contrasts inactivate with delete precisely on reversibility - inactivate is for
items a seller "might want to reactivate in future".
dry_run_mode:
supported: false
substitute: >-
A full sandbox at https://sellersandbox.sears.com mirrors production. There is no in-production
dry-run, validate-only or preview flag on any operation. See sandbox/sears-holdings-sandbox.yml.
cross_links:
errors: errors/sears-holdings-problem-types.yml
lifecycle: lifecycle/sears-holdings-lifecycle.yml
authentication: authentication/sears-holdings-authentication.yml
rate_limits: rate-limits/sears-holdings-rate-limits.yml
data_model: data-model/sears-holdings-data-model.yml
sandbox: sandbox/sears-holdings-sandbox.yml