Sources¶
The SDK is written against these revisions of SanMar’s integration guides, also available
as sanmar_sdk.sources.GUIDES:
Guide |
Version |
Updated |
Covers |
|---|---|---|---|
24.6 |
August 2026 |
Product, inventory, pricing, invoice, order status, shipment and packing slip services, SanMar’s own and PromoStandards |
|
24.5 |
August 2026 |
Ordering through SanMar’s own service, PromoStandards, and SFTP order files |
|
23.6 |
August 2026 |
The SFTP server and its files |
Where the guides are wrong or disagree with themselves, the SDK follows what SanMar’s servers actually do:
Web services follow SanMar’s WSDLs, recorded from production into
tests/wsdlwithscripts/snapshot_wsdls.py. Every request the SDK builds is serialized by zeep against them in the test suite, so an element name, order or type the WSDL does not allow fails a test.tests/livechecks that SanMar still serves the same WSDLs.SFTP files follow the header lines of the files on SanMar’s server, recorded into
tests/fixtures/ftp_layout.jsonby the same script with--ftp.Responses follow the guides’ sample responses, which SanMar captured from its own servers. The SDK parses each of them strictly.
Web Services Integration Guide 24.6¶
The guide says |
The SDK does |
|---|---|
PromoStandards Product Data has two production WSDLs,
|
Both serve identical operations. The SDK calls the one in the service’s own section. |
The error flag is |
The WSDLs use both: the product information service and purchase order lines
|
The by-warehouse inventory sample wraps its request in
|
Calls |
The |
Calls each operation by its own name, with the arguments its WSDL defines. |
Invoice operations are named |
Uses the WSDL’s |
The invoice login is |
Sends |
|
Sends only the login; the WSDL has no |
The product-by-brand request field is |
Sends |
PromoStandards fields are |
Uses the WSDLs’ |
|
The product id is optional, as the WSDL has it. |
Inventory is listed by warehouse in descending order, while the sample is ascending; and a style, color and size lookup returns an unlabeled list of quantities, one short of the warehouse count in the sample. |
Keeps SanMar’s order, and labels every quantity with its warehouse. For a single size, the SDK asks for the style and color, whose response labels each warehouse, and picks the size out itself. |
The product information response table’s descriptions are shifted by a row in places (size, case sale price, price code and text). |
Names fields after their elements, not the descriptions. |
Media Content is version 1.1.0, but its namespace says 1.0.0. |
Both are right: the WSDL’s namespace is 1.0.0, and the version sent is 1.1.0. |
Pricing requires |
Sends |
Order Status reports success as code |
SanMar sends |
|
Keeps both as SanMar sends them. |
The order shipment notification date sample has an unclosed tag. |
Builds the request from the WSDL. |
Purchase Order Integration Guide 24.5¶
The guide says |
The SDK does |
|---|---|
PromoStandards FOB id: “leave blank”, while the sample sends |
Sends one only for a line that names a warehouse. |
PromoStandards |
Leaves it out. |
The tolerance is |
Sends |
The PromoStandards service is |
Follows the ship method table and sample: |
The sample’s “0 to 2 repetitions” comment sits on |
The schema allows up to two |
Release file names use a four-digit year in one example and two in another. |
Batch names are yours to choose; the SDK checks only their characters. |
The Holding file’s field table leaves out the size its example includes. |
Reads the example’s layout. |
FTP Integration Guide 23.6¶
The guide says |
The SDK does |
|---|---|
File names are spelled |
Matches file and folder names case-insensitively. |
Some column names have stray spaces ( |
Normalizes column names before matching them. |
|
The file has |
|
Its model and flat image columns drop SDL_N’s |
|
The file has only |
|
It ends with the unique key. |
Stock is capped at 3,000 per warehouse, or 1,500, depending on the page. |
Assumes no particular cap. |