Skip to content

Sync SDK with Etsy API spec — batch inventory & shipping endpoints#33

Merged
amitray007 merged 1 commit into
masterfrom
feat/sdk-audit-2026-07-18
Jul 18, 2026
Merged

Sync SDK with Etsy API spec — batch inventory & shipping endpoints#33
amitray007 merged 1 commit into
masterfrom
feat/sdk-audit-2026-07-18

Conversation

@amitray007

Copy link
Copy Markdown
Owner

Summary

SDK coverage audit against the latest Etsy OAS spec surfaced two GET batch endpoints missing from the SDK. This PR adds them, bringing OAS coverage from 98.1% → 100%.

Should Fix — 2 items (implemented):

  • getListingsInventoryByListingIdsget_listings_inventory_by_listing_ids
    GET /v3/application/listings/batch/inventory
  • getListingsShippingByListingIdsget_listings_shipping_by_listing_ids
    GET /v3/application/listings/batch/shipping

Both take a single required listing_ids query param (array of int64), comma-joined, following the existing get_listings_by_listing_ids batch pattern.

Informational (no code change):

  • rich_description added to ShopListing / ShopListingWithAssociations — response-only field; the SDK does not model response schemas, so no change needed.
  • Personalization-field deprecation notices on createDraftListing / updateListing are pre-existing; Etsy has not removed the fields.

Audit suppressions: all 11 re-verified as still valid (4 deprecated aliases + holiday_id/State/Includes enum decisions); 0 stale ignores; no newly-surfaced enum values. specs/audit-ignore.json unchanged.

The spec baseline (specs/baseline.json) was refreshed to the latest spec.

Test plan

  • pytest -v344 passed
  • New tests assert both the endpoint URL and the comma-joined listing_ids for each method (TestGetListingsInventoryByListingIds, TestGetListingsShippingByListingIds)
  • python scripts/audit_sdk.py --spec specs/latest.json0 missing, 100% coverage
  • Code review — no critical or important findings

🤖 Generated with Claude Code

Sync SDK with latest Etsy OAS spec. Two GET batch endpoints were
missing from the SDK:

- getListingsInventoryByListingIds -> get_listings_inventory_by_listing_ids
  (GET /v3/application/listings/batch/inventory)
- getListingsShippingByListingIds -> get_listings_shipping_by_listing_ids
  (GET /v3/application/listings/batch/shipping)

Both take a single required listing_ids query param (comma-joined),
following the existing get_listings_by_listing_ids batch pattern. Adds
resource methods plus unit tests, bringing OAS coverage to 100%.

The rich_description property added to ShopListing/ShopListingWithAssociations
is response-only and needs no SDK change. Baseline refreshed to the latest
spec; all 11 audit suppressions re-verified as still valid.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@amitray007 amitray007 added the api-drift Auto-created when Etsy API spec changes are detected by weekly maintenance check label Jul 18, 2026
@amitray007 amitray007 self-assigned this Jul 18, 2026
@amitray007 amitray007 linked an issue Jul 18, 2026 that may be closed by this pull request
@github-actions

Copy link
Copy Markdown
Contributor

Test Coverage Report

Overall: 100% (1680/1680 statements covered)

Coverage by file
File Statements Missing Coverage
etsy_python/__init__.py 2 0 100%
etsy_python/_version.py 1 0 100%
etsy_python/v3/auth/OAuth.py 33 0 100%
etsy_python/v3/auth/__init__.py 1 0 100%
etsy_python/v3/common/Env.py 10 0 100%
etsy_python/v3/common/Request.py 3 0 100%
etsy_python/v3/common/Utils.py 31 0 100%
etsy_python/v3/enums/HolidayPreferences.py 29 0 100%
etsy_python/v3/enums/Language.py 12 0 100%
etsy_python/v3/enums/Listing.py 78 0 100%
etsy_python/v3/enums/ListingInventory.py 6 0 100%
etsy_python/v3/enums/ProcessingProfile.py 7 0 100%
etsy_python/v3/enums/ShippingProfile.py 261 0 100%
etsy_python/v3/enums/ShopReceipt.py 12 0 100%
etsy_python/v3/exceptions/BaseAPIException.py 10 0 100%
etsy_python/v3/exceptions/RequestException.py 8 0 100%
etsy_python/v3/exceptions/__init__.py 2 0 100%
etsy_python/v3/models/FileRequest.py 7 0 100%
etsy_python/v3/models/HolidayPreferences.py 8 0 100%
etsy_python/v3/models/Listing.py 150 0 100%
etsy_python/v3/models/Miscellaneous.py 8 0 100%
etsy_python/v3/models/ProcessingProfile.py 21 0 100%
etsy_python/v3/models/Product.py 7 0 100%
etsy_python/v3/models/Receipt.py 39 0 100%
etsy_python/v3/models/Request.py 22 0 100%
etsy_python/v3/models/ShippingProfile.py 85 0 100%
etsy_python/v3/models/Shop.py 24 0 100%
etsy_python/v3/models/ShopReturnPolicy.py 25 0 100%
etsy_python/v3/models/Utils.py 19 0 100%
etsy_python/v3/models/__init__.py 10 0 100%
etsy_python/v3/resources/HolidayPreferences.py 19 0 100%
etsy_python/v3/resources/Listing.py 89 0 100%
etsy_python/v3/resources/ListingFile.py 22 0 100%
etsy_python/v3/resources/ListingImage.py 22 0 100%
etsy_python/v3/resources/ListingInventory.py 20 0 100%
etsy_python/v3/resources/ListingOffering.py 12 0 100%
etsy_python/v3/resources/ListingProduct.py 12 0 100%
etsy_python/v3/resources/ListingTranslation.py 19 0 100%
etsy_python/v3/resources/ListingVariationImages.py 16 0 100%
etsy_python/v3/resources/ListingVideo.py 22 0 100%
etsy_python/v3/resources/Miscellaneous.py 16 0 100%
etsy_python/v3/resources/Payment.py 23 0 100%
etsy_python/v3/resources/PaymentLedgerEntry.py 15 0 100%
etsy_python/v3/resources/ProcessingProfile.py 26 0 100%
etsy_python/v3/resources/Receipt.py 25 0 100%
etsy_python/v3/resources/ReceiptTransactions.py 27 0 100%
etsy_python/v3/resources/Response.py 9 0 100%
etsy_python/v3/resources/Review.py 16 0 100%
etsy_python/v3/resources/Session.py 94 0 100%
etsy_python/v3/resources/ShippingProfile.py 58 0 100%
etsy_python/v3/resources/Shop.py 23 0 100%
etsy_python/v3/resources/ShopProductionPartner.py 11 0 100%
etsy_python/v3/resources/ShopReturnPolicy.py 28 0 100%
etsy_python/v3/resources/ShopSection.py 25 0 100%
etsy_python/v3/resources/Taxonomy.py 23 0 100%
etsy_python/v3/resources/User.py 14 0 100%
etsy_python/v3/resources/UserAddress.py 19 0 100%
etsy_python/v3/resources/__init__.py 29 0 100%
etsy_python/v3/resources/enums/RateLimit.py 8 0 100%
etsy_python/v3/resources/enums/Request.py 7 0 100%

Updated by PR Tests

@amitray007
amitray007 merged commit 35f74a9 into master Jul 18, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

api-drift Auto-created when Etsy API spec changes are detected by weekly maintenance check

Projects

None yet

Development

Successfully merging this pull request may close these issues.

audit: Spec Drift [2026-07-13] — medium

1 participant