Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion etsy_python/requirements.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
requests==2.32.4
requests==2.33.0
requests-oauthlib>=1.3.1
2 changes: 2 additions & 0 deletions etsy_python/v3/resources/Listing.py
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,7 @@ def find_all_listings_active(
max_price: Optional[float] = None,
taxonomy_id: Optional[int] = None,
shop_location: Optional[str] = None,
is_safe: Optional[bool] = None,
legacy: Optional[bool] = None,
) -> Union[Response, RequestException]:
endpoint = "/listings/active"
Expand All @@ -103,6 +104,7 @@ def find_all_listings_active(
"max_price": max_price,
"taxonomy_id": taxonomy_id,
"shop_location": shop_location,
"is_safe": is_safe,
"legacy": legacy,
}
return self.session.make_request(endpoint, query_params=query_params)
Expand Down
17 changes: 15 additions & 2 deletions specs/baseline.json
Original file line number Diff line number Diff line change
Expand Up @@ -1647,6 +1647,16 @@
"type": "boolean",
"description": "This parameter needed to enable new parameters and response values related to processing profiles."
}
},
{
"name": "is_safe",
"in": "query",
"description": "When true, filters out mature/adult content from search results.",
"required": false,
"schema": {
"type": "boolean",
"description": "When true, filters out mature/adult content from search results."
}
}
],
"responses": {
Expand Down Expand Up @@ -3209,7 +3219,10 @@
"type": "string",
"description": "The type of the personalization question. Note: Currently, only a single question with type 'text_input' is supported. See https://developers.etsy.com/documentation/tutorials/personalization-migration for details about new question types.",
"enum": [
"text_input"
"text_input",
"dropdown",
"unlabeled_upload",
"labeled_upload"
]
},
"required": {
Expand Down Expand Up @@ -5235,7 +5248,7 @@
"/v3/application/shops/{shop_id}/listings/{listing_id}/videos": {
"post": {
"operationId": "uploadListingVideo",
"description": "<div class=\"wt-display-flex-xs wt-align-items-center wt-mt-xs-2 wt-mb-xs-3\"><span class=\"wt-badge wt-badge--notificationPrimary wt-bg-slime-tint wt-mr-xs-2\">General Release</span><a class=\"wt-text-link\" href=\"https://github.com/etsy/open-api/discussions\" target=\"_blank\" rel=\"noopener noreferrer\">Report bug</a></div><div class=\"wt-display-flex-xs wt-align-items-center wt-mt-xs-2 wt-mb-xs-3\"><p class=\"wt-text-body-01 banner-text\">This endpoint is ready for production use.</p></div>\n\nUploads a new video for a listing, or associates an existing video with a specific listing. You must either provide the `video_id` of an existing video, or the name and binary file data for a video to upload.",
"description": "<div class=\"wt-display-flex-xs wt-align-items-center wt-mt-xs-2 wt-mb-xs-3\"><span class=\"wt-badge wt-badge--notificationPrimary wt-bg-slime-tint wt-mr-xs-2\">General Release</span><a class=\"wt-text-link\" href=\"https://github.com/etsy/open-api/discussions\" target=\"_blank\" rel=\"noopener noreferrer\">Report bug</a></div><div class=\"wt-display-flex-xs wt-align-items-center wt-mt-xs-2 wt-mb-xs-3\"><p class=\"wt-text-body-01 banner-text\">This endpoint is ready for production use.</p></div>\n\nUploads a new video for a listing, or associates an existing video with a specific listing. You must either provide the `video_id` of an existing video, or the name and binary file data for a video to upload. If providing a `video_id`, the video must already be associated with the same shop as the listing, but it does not need to be currently associated with the listing. ",
"tags": [
"ShopListing Video"
],
Expand Down
4 changes: 2 additions & 2 deletions specs/last-release-check.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
"last_checked_release": "3.0.0-general-release-2025-10-24",
"last_checked_date": "2025-10-24T18:26:22Z"
"last_checked_release": "3.0.0-general-release-2026-03-24",
"last_checked_date": "2026-03-24T18:09:26Z"
}
22 changes: 22 additions & 0 deletions tests/test_listing_resource.py
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,28 @@ def test_with_keywords_and_price_range(self, mock_session):
assert qp["min_price"] == 10.0
assert qp["max_price"] == 50.0

def test_with_is_safe_parameter(self, mock_session):
mock_session.make_request.return_value = Response(
200, make_shop_listing_collection()
)
resource = ListingResource(session=mock_session)

resource.find_all_listings_active(is_safe=True)

qp = mock_session.make_request.call_args[1]["query_params"]
assert qp["is_safe"] is True

def test_is_safe_defaults_to_none(self, mock_session):
mock_session.make_request.return_value = Response(
200, make_shop_listing_collection()
)
resource = ListingResource(session=mock_session)

resource.find_all_listings_active()

qp = mock_session.make_request.call_args[1]["query_params"]
assert qp["is_safe"] is None


class TestFindAllActiveListingsByShop:
def test_basic_call(self, mock_session):
Expand Down
Loading