Title: Silent field drops on UpsertCatalogObject (default_unit_cost, category_id) + 404s on batch/inventory endpoints
Hi, I’m seeing several Catalog and Inventory API issues on Square-Version 2026-08-19 that I’m reporting together in case they’re related.
1. default_unit_cost silently ignored on UpsertCatalogObject
POST /v2/catalog/object with a full item object including an updated default_unit_cost on the variation returns 200 OK, but the cost is not applied — no version bump, old value on echo and read-back. Worse, a partial-payload upsert (variation data only) returned 200 OK but cleared the existing cost entirely; I restored it with a full-object write and verified. I have support case #122025325 open on this.
2. category_id silently ignored on UpsertCatalogObject
Same pattern, found today: POST /v2/catalog/object with category_id set on item_data returns 200 OK, no errors, but category_id stays null on read-back and the object version doesn’t change — the write is a complete no-op. Notably, tax_ids in the same payload applied fine, and description writes work too, so it’s field-specific, not a general write failure.
3. All /v2/catalog/batch- endpoints return 404*
batch-upsert, batch-retrieve, and batch-delete all return 404 NOT_FOUND regardless of API version. Single-object endpoints (POST /v2/catalog/object, GET /v2/catalog/object/{id}, POST /v2/catalog/search) work.
4. Inventory writes return 404
POST /v2/inventory/changes returns 404 NOT_FOUND. Inventory reads (POST /v2/inventory/counts/batch-retrieve) work fine.
Repro for the silent drops: snapshot the object, deep-copy, change only the one field, upsert with the current version, read back. The response echo shows the old value and the version is unchanged.
Anyone else hitting the category_id drop? Any known timeline on the cost write fix?
