commit 389d72a136c4718eb97d8a0c853c90856c3c2279
Author: claudi
Date: Tue Apr 7 08:40:50 2026 +0200
Add tests for OAuth client and webhook notification handling
- Implement tests for `EbayOAuthClient` to verify authorization URL generation with configured scopes and token reuse logic.
- Add tests for `WebhookChallengeHandler` to ensure correct SHA256 response generation and for `WebhookSignatureParser` to validate extraction of known fields from signature strings.
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..dd2cb32
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,40 @@
+# Byte-compiled / optimized / DLL files
+__pycache__/
+*.py[cod]
+*$py.class
+
+# Virtual environments
+.venv/
+venv/
+env/
+ENV/
+
+# Distribution / packaging
+build/
+dist/
+*.egg-info/
+.eggs/
+pip-wheel-metadata/
+
+# Test and coverage output
+.pytest_cache/
+.coverage
+.coverage.*
+htmlcov/
+
+# Type checker / linter caches
+.mypy_cache/
+.ruff_cache/
+.pyre/
+
+# Tooling caches
+.tox/
+.nox/
+
+# IDE / editor files
+.vscode/
+.idea/
+
+# OS files
+.DS_Store
+Thumbs.db
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..fa72cb8
--- /dev/null
+++ b/README.md
@@ -0,0 +1,22 @@
+# eBay REST Client
+
+This workspace contains a Python-first eBay REST client foundation with:
+
+- a shared OAuth 2.0 core
+- a shared HTTP transport layer
+- public API wrappers per eBay REST domain
+- an isolated OpenAPI generation script for each contract in this folder
+
+## Generate Low-Level Clients
+
+Run the generator script from the project root:
+
+```powershell
+& .\.venv\Scripts\python.exe .\scripts\generate_clients.py
+```
+
+To generate only one API package:
+
+```powershell
+& .\.venv\Scripts\python.exe .\scripts\generate_clients.py --api notification
+```
diff --git a/commerce_notification_v1_oas3.yaml b/commerce_notification_v1_oas3.yaml
new file mode 100644
index 0000000..4e9a193
--- /dev/null
+++ b/commerce_notification_v1_oas3.yaml
@@ -0,0 +1,1851 @@
+---
+openapi: "3.0.0"
+info:
+ title: "Notification API"
+ description: "The eBay Notification API enables management of the entire end-to-end\
+ \ eBay notification experience by allowing users to:- Browse for supported\
+ \ notification topics and retrieve topic details
- Create, configure, and\
+ \ manage notification destination endpoints
- Configure, manage, and test\
+ \ notification subscriptions
- Process eBay notifications and verify the\
+ \ integrity of the message payload
"
+ contact:
+ name: "eBay Inc,"
+ license:
+ name: "eBay API License Agreement"
+ url: "https://developer.ebay.com/join/api-license-agreement"
+ version: "v1.6.7"
+servers:
+- url: "https://api.ebay.com{basePath}"
+ description: "Production"
+ variables:
+ basePath:
+ default: "/commerce/notification/v1"
+paths:
+ /config:
+ get:
+ tags:
+ - "config"
+ description: "This method allows applications to retrieve a previously created\
+ \ configuration."
+ operationId: "getConfig"
+ responses:
+ "200":
+ description: "OK"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Config"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 195000:
+ domain: "API_NOTIFICATION"
+ category: "APPLICATION"
+ description: "There was a problem with an eBay internal system or\
+ \ process. Contact eBay developer support for assistance."
+ "404":
+ description: "Not Found"
+ x-response-codes:
+ errors:
+ 195026:
+ domain: "API_NOTIFICATION"
+ category: "APPLICATION"
+ description: "Configuration Not Found."
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope"
+ put:
+ tags:
+ - "config"
+ description: "This method allows applications to create a new configuration\
+ \ or update an existing configuration. This app-level configuration allows\
+ \ developers to set up alerts."
+ operationId: "updateConfig"
+ parameters:
+ - name: "Content-Type"
+ in: "header"
+ description: "This header indicates the format of the request body provided\
+ \ by the client. Its value should be set to application/json.
\
+ \ For more information, refer to HTTP request headers."
+ required: true
+ schema:
+ type: "string"
+ requestBody:
+ description: "The configurations for this application."
+ content:
+ application/json:
+ schema:
+ description: "The configurations for this application."
+ $ref: "#/components/schemas/Config"
+ required: false
+ responses:
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 195025:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "Invalid or missing email."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 195000:
+ domain: "API_NOTIFICATION"
+ category: "APPLICATION"
+ description: "There was a problem with an eBay internal system or\
+ \ process. Contact eBay developer support for assistance."
+ "204":
+ description: "No Content"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope"
+ /destination:
+ get:
+ tags:
+ - "destination"
+ description: "This method allows applications to retrieve a paginated collection\
+ \ of destination resources and related details. The details include the destination\
+ \ names, statuses, and configurations, including the endpoints and verification\
+ \ tokens."
+ operationId: "getDestinations"
+ parameters:
+ - name: "continuation_token"
+ in: "query"
+ description: "This string value can be used to return the next page in the\
+ \ result set. The string to use here is returned in the next field\
+ \ of the current page of results."
+ required: false
+ schema:
+ type: "string"
+ - name: "limit"
+ in: "query"
+ description: "The maximum number of destinations to return per page from the\
+ \ result set.
Min: 10
Max: 100
Default:\
+ \ 20"
+ required: false
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "OK"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/DestinationSearchResponse"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 195004:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "Invalid limit. Supported ranges 10 - 100."
+ 195005:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "Invalid continuation token."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 195000:
+ domain: "API_NOTIFICATION"
+ category: "APPLICATION"
+ description: "There was a problem with an eBay internal system or\
+ \ process. Contact eBay developer support for assistance."
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope"
+ post:
+ tags:
+ - "destination"
+ description: "This method allows applications to create a destination. A destination\
+ \ is an endpoint that receives HTTP push notifications.
A single destination\
+ \ for all topics is valid, as is individual destinations for each topic.
To\
+ \ update a destination, use the updateDestination call.
The\
+ \ destination created will need to be referenced while creating or updating\
+ \ a subscription to a topic.
Note:\
+ \ The destination should be created and ready to respond with the expected\
+ \ challengeResponse for the endpoint to be registered successfully.\
+ \ Refer to the Notification\
+ \ API overview for more information."
+ operationId: "createDestination"
+ parameters:
+ - name: "Content-Type"
+ in: "header"
+ description: "This header indicates the format of the request body provided\
+ \ by the client. Its value should be set to application/json.
\
+ \ For more information, refer to HTTP request headers."
+ required: true
+ schema:
+ type: "string"
+ requestBody:
+ description: "The create destination request."
+ content:
+ application/json:
+ schema:
+ description: "The create destination request."
+ $ref: "#/components/schemas/DestinationRequest"
+ required: false
+ responses:
+ "201":
+ description: "Created"
+ headers:
+ Location:
+ schema:
+ type: "string"
+ description: "The destination resource created."
+ content:
+ application/json:
+ schema:
+ type: "object"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 195018:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "Invalid or missing destination status. Supported values:[ENABLED,DISABLED]"
+ 195019:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "Invalid or missing verification token for this endpoint."
+ 195016:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "Invalid name. Markups or lengths greater than 64 not\
+ \ supported"
+ 195017:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "Invalid or missing endpoint."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 195000:
+ domain: "API_NOTIFICATION"
+ category: "APPLICATION"
+ description: "There was a problem with an eBay internal system or\
+ \ process. Contact eBay developer support for assistance."
+ "409":
+ description: "Conflict"
+ x-response-codes:
+ errors:
+ 195003:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "Please provide configurations required for notifications.\
+ \ Refer to /config"
+ 195020:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "Challenge verification failed for requested endpoint"
+ 195021:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "Destination exists for this endpoint"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope"
+ /destination/{destination_id}:
+ get:
+ tags:
+ - "destination"
+ description: "This method allows applications to fetch the details for a destination.\
+ \ The details include the destination name, status, and configuration, including\
+ \ the endpoint and verification token."
+ operationId: "getDestination"
+ parameters:
+ - name: "destination_id"
+ in: "path"
+ description: "The unique identifier of the destination to retrieve. Use getDestinations\
+ \ to retrieve destination IDs."
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "OK"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Destination"
+ "400":
+ description: "Bad Request"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 195000:
+ domain: "API_NOTIFICATION"
+ category: "APPLICATION"
+ description: "There was a problem with an eBay internal system or\
+ \ process. Contact eBay developer support for assistance."
+ "404":
+ description: "Not Found"
+ x-response-codes:
+ errors:
+ 195022:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "Invalid or missing destination id."
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope"
+ put:
+ tags:
+ - "destination"
+ description: "This method allows applications to update a destination.
Note: The destination should be created and ready\
+ \ to respond with the expected challengeResponse for the endpoint to\
+ \ be registered successfully. Refer to the Notification API overview for more information."
+ operationId: "updateDestination"
+ parameters:
+ - name: "Content-Type"
+ in: "header"
+ description: "This header indicates the format of the request body provided\
+ \ by the client. Its value should be set to application/json.
\
+ \ For more information, refer to HTTP request headers."
+ required: true
+ schema:
+ type: "string"
+ - name: "destination_id"
+ in: "path"
+ description: "The unique identifier for the destination."
+ required: true
+ schema:
+ type: "string"
+ requestBody:
+ description: "The create subscription request."
+ content:
+ application/json:
+ schema:
+ description: "The create subscription request."
+ $ref: "#/components/schemas/DestinationRequest"
+ required: false
+ responses:
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 195018:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "Invalid or missing destination status. Supported values:[ENABLED,DISABLED]"
+ 195019:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "Invalid or missing verification token for this endpoint."
+ 195016:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "Invalid name. Markups or lengths greater than 64 not\
+ \ supported"
+ 195017:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "Invalid or missing endpoint."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 195000:
+ domain: "API_NOTIFICATION"
+ category: "APPLICATION"
+ description: "There was a problem with an eBay internal system or\
+ \ process. Contact eBay developer support for assistance."
+ "204":
+ description: "No Content"
+ "404":
+ description: "Not Found"
+ x-response-codes:
+ errors:
+ 195022:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "Invalid or missing destination id."
+ "409":
+ description: "Conflict"
+ x-response-codes:
+ errors:
+ 195020:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "Challenge verification failed for requested endpoint"
+ 195021:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "Destination exists for this endpoint"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope"
+ delete:
+ tags:
+ - "destination"
+ description: "This method provides applications a way to delete a destination.
The\
+ \ same destination ID can be used by many destinations.
Trying to delete\
+ \ an active destination results in an error. You can disable a subscription,\
+ \ and when the destination is no longer in use, you can delete it."
+ operationId: "deleteDestination"
+ parameters:
+ - name: "destination_id"
+ in: "path"
+ description: "The unique identifier of the destination to delete. Only disabled\
+ \ or marked down destinations can be deleted, and enabled destinations cannot\
+ \ be deleted. Use getDestination or getDestinations to see\
+ \ the current status of a destination. "
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "400":
+ description: "Bad Request"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 195000:
+ domain: "API_NOTIFICATION"
+ category: "APPLICATION"
+ description: "There was a problem with an eBay internal system or\
+ \ process. Contact eBay developer support for assistance."
+ "204":
+ description: "No Content"
+ "404":
+ description: "Not Found"
+ x-response-codes:
+ errors:
+ 195022:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "Invalid or missing destination id."
+ "409":
+ description: "Conflict"
+ x-response-codes:
+ errors:
+ 195024:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "Destination is in use and cannot be deleted."
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope"
+ /public_key/{public_key_id}:
+ get:
+ tags:
+ - "public_key"
+ description: "This method allows users to retrieve a public key using a specified\
+ \ key ID. The public key that is returned in the response payload is used\
+ \ to process and validate eBay notifications.
The public key ID, which\
+ \ is a required request parameter for this method, is retrieved from the Base64-encoded\
+ \ X-EBAY-SIGNATURE header that is included in the eBay notification.
Important!\
+ \ The retrieved public key value should be cached for a temporary — but reasonable\
+ \ — amount of time (e.g., one-hour is recommended.) This key should not be\
+ \ requested for every notification since doing so can result in exceeding\
+ \ API call limits\
+ \ if a large number of notification requests is received.
Note: For more details about how to process eBay\
+ \ push notifications and validate notification message payloads, see the Notification API\
+ \ overview."
+ operationId: "getPublicKey"
+ parameters:
+ - name: "public_key_id"
+ in: "path"
+ description: "The unique key ID that is used to retrieve the public key.
Note: This is retrieved from the X-EBAY-SIGNATURE\
+ \ header that is included with the push notification."
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "OK"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/PublicKey"
+ "400":
+ description: "Bad Request"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 195000:
+ domain: "API_NOTIFICATION"
+ category: "APPLICATION"
+ description: "There was a problem with an eBay internal system or\
+ \ process. Contact eBay developer support for assistance."
+ "404":
+ description: "Not Found"
+ x-response-codes:
+ errors:
+ 195001:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "The specified key id is invalid."
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope"
+ /subscription:
+ get:
+ tags:
+ - "subscription"
+ description: "This method allows applications to retrieve a list of all subscriptions.\
+ \ The list returned is a paginated collection of subscription resources.
Subscriptions\
+ \ allow applications to express interest in notifications and keep receiving\
+ \ the information relevant to their business."
+ operationId: "getSubscriptions"
+ parameters:
+ - name: "continuation_token"
+ in: "query"
+ description: "This string value can be used to return the next page in the\
+ \ result set. The string to use here is returned in the next field of the\
+ \ current page of results."
+ required: false
+ schema:
+ type: "string"
+ - name: "limit"
+ in: "query"
+ description: "The maximum number of subscriptions to return per page from\
+ \ the result set.
Min: 10
Max: 100
Default:\
+ \ 20"
+ required: false
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "OK"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/SubscriptionSearchResponse"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 195004:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "Invalid limit. Supported ranges 10 - 100."
+ 195005:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "Invalid continuation token."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 195000:
+ domain: "API_NOTIFICATION"
+ category: "APPLICATION"
+ description: "There was a problem with an eBay internal system or\
+ \ process. Contact eBay developer support for assistance."
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope"
+ - "https://api.ebay.com/oauth/api_scope/commerce.notification.subscription.readonly"
+ - "https://api.ebay.com/oauth/api_scope/commerce.notification.subscription"
+ post:
+ tags:
+ - "subscription"
+ description: "This method allows applications to create a subscription for a\
+ \ topic and supported schema version. Subscriptions allow applications to\
+ \ express interest in notifications and keep receiving the information relevant\
+ \ to their business.
Each application and topic-schema pairing to a\
+ \ subscription should have a 1:1 cardinality.
You can create the subscription\
+ \ in disabled mode, test it (see the test method), and when everything\
+ \ is ready, you can enable the subscription (see the enableSubscription\
+ \ method).
Note: If an application\
+ \ is not authorized to subscribe to a topic, for example, if your authorization\
+ \ does not include the list of scopes required for the topic, an error code\
+ \ of 195011 is returned."
+ operationId: "createSubscription"
+ parameters:
+ - name: "Content-Type"
+ in: "header"
+ description: "This header indicates the format of the request body provided\
+ \ by the client. Its value should be set to application/json.
\
+ \ For more information, refer to HTTP request headers."
+ required: true
+ schema:
+ type: "string"
+ requestBody:
+ description: "The create subscription request."
+ content:
+ application/json:
+ schema:
+ description: "The create subscription request."
+ $ref: "#/components/schemas/CreateSubscriptionRequest"
+ required: false
+ responses:
+ "201":
+ description: "Created"
+ headers:
+ Location:
+ schema:
+ type: "string"
+ description: "The subscription resource created."
+ content:
+ application/json:
+ schema:
+ type: "object"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 195010:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "Invalid or missing protocol"
+ 195027:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "Invalid or missing topic id."
+ 195008:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "Invalid or missing schema version. Please refer to /topic/{topic_id}\
+ \ for supported schema versions."
+ 195009:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "Specified format is not supported for the topic."
+ 195006:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "Invalid or missing subscription status."
+ 195007:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "Invalid or missing destination id."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 195000:
+ domain: "API_NOTIFICATION"
+ category: "APPLICATION"
+ description: "There was a problem with an eBay internal system or\
+ \ process. Contact eBay developer support for assistance."
+ "403":
+ description: "Forbidden"
+ x-response-codes:
+ errors:
+ 195011:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "Not authorized for this topic."
+ "409":
+ description: "Conflict"
+ x-response-codes:
+ errors:
+ 195015:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "The subscription cannot be enabled since the destination\
+ \ is not enabled."
+ 195012:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "Subscription already exists"
+ 195003:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "Please provide configurations required for notifications.\
+ \ Refer to /config"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope"
+ - "https://api.ebay.com/oauth/api_scope/commerce.notification.subscription"
+ /subscription/{subscription_id}/filter:
+ post:
+ tags:
+ - "subscription"
+ description: "This method allows applications to create a filter for a subscription.\
+ \ Filters allow applications to only be sent notifications that match a provided\
+ \ criteria. Notifications that do not match this criteria will not be sent\
+ \ to the destination.
The filterSchema value must\
+ \ be a valid JSON Schema\
+ \ Core document (version 2020-12 or later). The filterSchema\
+ \ provided must describe the subscription's notification payload such that\
+ \ it supplies valid criteria to filter the subscription's notifications. The\
+ \ user does not need to provide $schema and $id\
+ \ definitions.
When a filter is first created, it is not immediately\
+ \ active on the subscription. If the request has a valid JSON body, the successful\
+ \ call returns the HTTP status code 201 Created. Newly created\
+ \ filters are in PENDING status until they are reviewed. If a\
+ \ filter is valid, it will move from PENDING status to ENABLED\
+ \ status. You can find the status of a filter using the getSubscriptionFilter method. See Creating a subscription filter for a topic for additional\
+ \ information.
Note: Only one filter\
+ \ can be in ENABLED (which means active) status on a subscription\
+ \ at a time. If an ENABLED filter is overwritten by a new\
+ \ call to CREATE a filter for the subscription, it stays\
+ \ in ENABLED status until the new PENDING\
+ \ filter becomes the ENABLED filter, and the existing filter\
+ \ then becomes DISABLED."
+ operationId: "createSubscriptionFilter"
+ parameters:
+ - name: "Content-Type"
+ in: "header"
+ description: "This header indicates the format of the request body provided\
+ \ by the client. Its value should be set to application/json.
\
+ \ For more information, refer to HTTP request headers."
+ required: true
+ schema:
+ type: "string"
+ - name: "subscription_id"
+ in: "path"
+ description: "The unique identifier of the subscription for which a filter\
+ \ will be created."
+ required: true
+ schema:
+ type: "string"
+ requestBody:
+ description: "The create subscription filter request."
+ content:
+ application/json:
+ schema:
+ description: "The create subscription filter request."
+ $ref: "#/components/schemas/CreateSubscriptionFilterRequest"
+ required: false
+ responses:
+ "201":
+ description: "Created"
+ headers:
+ Location:
+ schema:
+ type: "string"
+ description: "The location where the subscription filter resource\
+ \ was created."
+ content:
+ application/json:
+ schema:
+ type: "object"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 195032:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "The specified subscription topic is not filterable."
+ 195033:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "The specified 'filterSchema' value is invalid."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 195000:
+ domain: "API_NOTIFICATION"
+ category: "APPLICATION"
+ description: "There was a problem with an eBay internal system or\
+ \ process. Contact eBay developer support for assistance."
+ "403":
+ description: "Forbidden"
+ x-response-codes:
+ errors:
+ 195028:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "The application is not authorized to access the specified\
+ \ subscription."
+ "404":
+ description: "Not Found"
+ x-response-codes:
+ errors:
+ 195013:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "The subscription id does not exist."
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope"
+ - "https://api.ebay.com/oauth/api_scope/commerce.notification.subscription"
+ /subscription/{subscription_id}:
+ get:
+ tags:
+ - "subscription"
+ description: "This method allows applications to retrieve subscription details\
+ \ for the specified subscription.
Specify the subscription to retrieve\
+ \ using the subscription_id. Use the getSubscriptions\
+ \ method to browse all subscriptions if you do not know the subscription_id.
Subscriptions\
+ \ allow applications to express interest in notifications and keep receiving\
+ \ the information relevant to their business."
+ operationId: "getSubscription"
+ parameters:
+ - name: "subscription_id"
+ in: "path"
+ description: "The unique identifier of the subscription to retrieve. Use getSubscriptions\
+ \ to retrieve subscription IDs."
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "OK"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Subscription"
+ "400":
+ description: "Bad Request"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 195000:
+ domain: "API_NOTIFICATION"
+ category: "APPLICATION"
+ description: "There was a problem with an eBay internal system or\
+ \ process. Contact eBay developer support for assistance."
+ "404":
+ description: "Not Found"
+ x-response-codes:
+ errors:
+ 195013:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "The subscription id does not exist."
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope"
+ - "https://api.ebay.com/oauth/api_scope/commerce.notification.subscription.readonly"
+ - "https://api.ebay.com/oauth/api_scope/commerce.notification.subscription"
+ put:
+ tags:
+ - "subscription"
+ description: "This method allows applications to update a subscription. Subscriptions\
+ \ allow applications to express interest in notifications and keep receiving\
+ \ the information relevant to their business.
Note: This call returns an error if an application is not authorized\
+ \ to subscribe to a topic.
You can pause and restart a subscription.\
+ \ See the disableSubscription and enableSubscription methods."
+ operationId: "updateSubscription"
+ parameters:
+ - name: "Content-Type"
+ in: "header"
+ description: "This header indicates the format of the request body provided\
+ \ by the client. Its value should be set to application/json.
\
+ \ For more information, refer to HTTP request headers."
+ required: true
+ schema:
+ type: "string"
+ - name: "subscription_id"
+ in: "path"
+ description: "The unique identifier for the subscription to update. Use getSubscriptions\
+ \ to retrieve subscription IDs."
+ required: true
+ schema:
+ type: "string"
+ requestBody:
+ description: "The create subscription request."
+ content:
+ application/json:
+ schema:
+ description: "The create subscription request."
+ $ref: "#/components/schemas/UpdateSubscriptionRequest"
+ required: false
+ responses:
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 195010:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "Invalid or missing protocol"
+ 195008:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "Invalid or missing schema version. Please refer to /topic/{topic_id}\
+ \ for supported schema versions."
+ 195009:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "Specified format is not supported for the topic."
+ 195006:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "Invalid or missing subscription status."
+ 195007:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "Invalid or missing destination id."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 195000:
+ domain: "API_NOTIFICATION"
+ category: "APPLICATION"
+ description: "There was a problem with an eBay internal system or\
+ \ process. Contact eBay developer support for assistance."
+ "204":
+ description: "No Content"
+ "404":
+ description: "Not Found"
+ x-response-codes:
+ errors:
+ 195013:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "The subscription id does not exist."
+ "409":
+ description: "Conflict"
+ x-response-codes:
+ errors:
+ 195014:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "The subscription cannot be enabled since the topic or\
+ \ payload is no longer supported."
+ 195015:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "The subscription cannot be enabled since the destination\
+ \ is not enabled."
+ 195012:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "Subscription already exists"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope"
+ - "https://api.ebay.com/oauth/api_scope/commerce.notification.subscription"
+ delete:
+ tags:
+ - "subscription"
+ description: "This method allows applications to delete a subscription. Subscriptions\
+ \ can be deleted regardless of status."
+ operationId: "deleteSubscription"
+ parameters:
+ - name: "subscription_id"
+ in: "path"
+ description: "The unique identifier of the subscription to delete. Use getSubscriptions\
+ \ to retrieve subscription IDs."
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "400":
+ description: "Bad Request"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 195000:
+ domain: "API_NOTIFICATION"
+ category: "APPLICATION"
+ description: "There was a problem with an eBay internal system or\
+ \ process. Contact eBay developer support for assistance."
+ "204":
+ description: "No Content"
+ "404":
+ description: "Not Found"
+ x-response-codes:
+ errors:
+ 195013:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: " The subscription id does not exist."
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope"
+ - "https://api.ebay.com/oauth/api_scope/commerce.notification.subscription"
+ /subscription/{subscription_id}/filter/{filter_id}:
+ get:
+ tags:
+ - "subscription"
+ description: "This method allows applications to retrieve the filter details\
+ \ for the specified subscription filter.
Specify the subscription filter\
+ \ to retrieve by using the subscription_id and the filter_id\
+ \ associated with the subscription filter. The filter_id\
+ \ can be found in the response body for the getSubscription\
+ \ method, if there is a filter applied on the subscription.
Filters\
+ \ allow applications to only be sent notifications that match a provided criteria.\
+ \ Notifications that do not match this criteria will not be sent to the destination."
+ operationId: "getSubscriptionFilter"
+ parameters:
+ - name: "filter_id"
+ in: "path"
+ description: "The unique identifier of the subscription filter. Filter ID\
+ \ values, if configured for a subscription, will be shown in the subscriptions.filterId\
+ \ field in getSubscription and getSubscription responses.\
+ \ The filter ID value is also returned in the Location response header when\
+ \ a filter is created with createSubscriptionFilter."
+ required: true
+ schema:
+ type: "string"
+ - name: "subscription_id"
+ in: "path"
+ description: "The unique identifier of the subscription associated with the\
+ \ filter. Use getSubscriptions to retrieve subscription IDs."
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "OK"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/SubscriptionFilter"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 195031:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "The specified subscription id does not match the specified\
+ \ filter id."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 195000:
+ domain: "API_NOTIFICATION"
+ category: "APPLICATION"
+ description: "There was a problem with an eBay internal system or\
+ \ process. Contact eBay developer support for assistance."
+ "403":
+ description: "Forbidden"
+ x-response-codes:
+ errors:
+ 195028:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "The application is not authorized to access the specified\
+ \ subscription."
+ "404":
+ description: "Not Found"
+ x-response-codes:
+ errors:
+ 195013:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "The subscription id does not exist."
+ 195029:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "Invalid subscription filter id."
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope"
+ - "https://api.ebay.com/oauth/api_scope/commerce.notification.subscription.readonly"
+ - "https://api.ebay.com/oauth/api_scope/commerce.notification.subscription"
+ delete:
+ tags:
+ - "subscription"
+ description: "This method allows applications to disable the active filter on\
+ \ a subscription, so that a new subscription filter may be added.
Note: Subscription filters in PENDING\
+ \ status can not be disabled. However, a new filter can be created instead\
+ \ with the createSubscriptionFilter method and this new filter\
+ \ will override the PENDING filter."
+ operationId: "deleteSubscriptionFilter"
+ parameters:
+ - name: "filter_id"
+ in: "path"
+ description: "The unique identifier of the subscription filter to delete.\
+ \ Filter ID values, if configured for a subscription, will be shown in\
+ \ the subscriptions.filterId field in getSubscription and\
+ \ getSubscription responses. The filter ID value is also returned\
+ \ in the Location response header when a filter is created with createSubscriptionFilter."
+ required: true
+ schema:
+ type: "string"
+ - name: "subscription_id"
+ in: "path"
+ description: "The unique identifier of the subscription associated with the\
+ \ filter to delete. Use getSubscriptions to retrieve subscription\
+ \ IDs."
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 195031:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "The specified subscription id does not match the specified\
+ \ filter id."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 195000:
+ domain: "API_NOTIFICATION"
+ category: "APPLICATION"
+ description: "There was a problem with an eBay internal system or\
+ \ process. Contact eBay developer support for assistance."
+ "204":
+ description: "No Content"
+ "403":
+ description: "Forbidden"
+ x-response-codes:
+ errors:
+ 195028:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "The application is not authorized to access the specified\
+ \ subscription."
+ "404":
+ description: "Not Found"
+ x-response-codes:
+ errors:
+ 195013:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "The subscription id does not exist."
+ 195029:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "Invalid subscription filter id."
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope"
+ - "https://api.ebay.com/oauth/api_scope/commerce.notification.subscription"
+ /subscription/{subscription_id}/disable:
+ post:
+ tags:
+ - "subscription"
+ description: "This method disables a subscription, which prevents the subscription\
+ \ from providing notifications. To restart a subscription, call enableSubscription."
+ operationId: "disableSubscription"
+ parameters:
+ - name: "subscription_id"
+ in: "path"
+ description: "The unique identifier of an enabled subscription that will be\
+ \ disabled. Use getSubscriptions to retrieve subscription IDs."
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "400":
+ description: "Bad Request"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 195000:
+ domain: "API_NOTIFICATION"
+ category: "APPLICATION"
+ description: "There was a problem with an eBay internal system or\
+ \ process. Contact eBay developer support for assistance."
+ "204":
+ description: "No Content"
+ "404":
+ description: "Not Found"
+ x-response-codes:
+ errors:
+ 195013:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "The subscription id does not exist."
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope"
+ - "https://api.ebay.com/oauth/api_scope/commerce.notification.subscription"
+ /subscription/{subscription_id}/enable:
+ post:
+ tags:
+ - "subscription"
+ description: "This method allows applications to enable a disabled subscription.\
+ \ To pause (or disable) an enabled subscription, call disableSubscription."
+ operationId: "enableSubscription"
+ parameters:
+ - name: "subscription_id"
+ in: "path"
+ description: "The unique identifier of a disabled subscription that will be\
+ \ enabled. Use getSubscriptions to retrieve subscription IDs."
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "400":
+ description: "Bad Request"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 195000:
+ domain: "API_NOTIFICATION"
+ category: "APPLICATION"
+ description: "There was a problem with an eBay internal system or\
+ \ process. Contact eBay developer support for assistance."
+ "204":
+ description: "No Content"
+ "404":
+ description: "Not Found"
+ x-response-codes:
+ errors:
+ 195013:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "The subscription id does not exist."
+ "409":
+ description: "Conflict"
+ x-response-codes:
+ errors:
+ 195014:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "The subscription cannot be enabled since the topic or\
+ \ payload is no longer supported."
+ 195015:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "The subscription cannot be enabled since the destination\
+ \ is not enabled."
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope"
+ - "https://api.ebay.com/oauth/api_scope/commerce.notification.subscription"
+ /subscription/{subscription_id}/test:
+ post:
+ tags:
+ - "subscription"
+ description: "This method triggers a mocked test payload that includes a notification\
+ \ ID, publish date, and so on. Use this method to test your subscription end-to-end.
You\
+ \ can create the subscription in disabled mode, test it using this method,\
+ \ and when everything is ready, you can enable the subscription (see the enableSubscription\
+ \ method).
Note: Use the notificationId\
+ \ to tell the difference between a test payload and a real payload."
+ operationId: "testSubscription"
+ parameters:
+ - name: "subscription_id"
+ in: "path"
+ description: "The unique identifier of the subscription to test. Use getSubscriptions\
+ \ to retrieve subscription IDs."
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "202":
+ description: "Accepted"
+ "400":
+ description: "Bad Request"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 195000:
+ domain: "API_NOTIFICATION"
+ category: "APPLICATION"
+ description: "There was a problem with an eBay internal system or\
+ \ process. Contact eBay developer support for assistance."
+ "404":
+ description: "Not Found"
+ x-response-codes:
+ errors:
+ 195013:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: " The subscription id does not exist."
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope"
+ - "https://api.ebay.com/oauth/api_scope/commerce.notification.subscription"
+ /topic/{topic_id}:
+ get:
+ tags:
+ - "topic"
+ description: "This method allows applications to retrieve details for the specified\
+ \ topic. This information includes supported schema versions, formats, and\
+ \ other metadata for the topic.
Applications can subscribe to any of\
+ \ the topics for a supported schema version and format, limited by the authorization\
+ \ scopes required to subscribe to the topic.
A topic specifies the\
+ \ type of information to be received and the data types associated with an\
+ \ event. An event occurs in the eBay system, such as when a user requests\
+ \ deletion or revokes access for an application. An event is an instance of\
+ \ an event type (topic).
Specify the topic to retrieve using the topic_id\
+ \ URI parameter.
Note: Use the getTopics method to find a topic if you do not know the topic ID."
+ operationId: "getTopic"
+ parameters:
+ - name: "topic_id"
+ in: "path"
+ description: "The unique identifier of the notification topic for which the\
+ \ details are retrieved. Use getTopics to retrieve the topic ID."
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "OK"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Topic"
+ "400":
+ description: "Bad Request"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 195000:
+ domain: "API_NOTIFICATION"
+ category: "APPLICATION"
+ description: "There was a problem with an eBay internal system or\
+ \ process. Contact eBay developer support for assistance."
+ "404":
+ description: "Not Found"
+ x-response-codes:
+ errors:
+ 195002:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "Invalid or missing topic id."
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope"
+ /topic:
+ get:
+ tags:
+ - "topic"
+ description: "This method returns a paginated collection of all supported topics,\
+ \ along with the details for the topics. This information includes supported\
+ \ schema versions, formats, and other metadata for the topics.
Applications\
+ \ can subscribe to any of the topics for a supported schema version and format,\
+ \ limited by the authorization scopes required to subscribe to the topic.
A\
+ \ topic specifies the type of information to be received and the data types\
+ \ associated with an event. An event occurs in the eBay system, such as when\
+ \ a user requests deletion or revokes access for an application. An event\
+ \ is an instance of an event type (topic)."
+ operationId: "getTopics"
+ parameters:
+ - name: "continuation_token"
+ in: "query"
+ description: "This string value can be used to return the next page in the\
+ \ result set. The string to use here is returned in the next field\
+ \ of the current page of results."
+ required: false
+ schema:
+ type: "string"
+ - name: "limit"
+ in: "query"
+ description: "The maximum number of notification topics to return per page\
+ \ from the result set.
Min: 10
Max: 100
Default:\
+ \ 20"
+ required: false
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "OK"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/TopicSearchResponse"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 195004:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "Invalid limit. Supported ranges 10 - 100."
+ 195005:
+ domain: "API_NOTIFICATION"
+ category: "REQUEST"
+ description: "Invalid continuation token."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 195000:
+ domain: "API_NOTIFICATION"
+ category: "APPLICATION"
+ description: "There was a problem with an eBay internal system or\
+ \ process. Contact eBay developer support for assistance."
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope"
+components:
+ schemas:
+ Config:
+ type: "object"
+ properties:
+ alertEmail:
+ type: "string"
+ description: "This field is used to add or modify an email address that\
+ \ will be used for Notification API alerts associated with the application.\
+ \ getConfig can be used to get the email address currently being\
+ \ used for alerts."
+ description: "The type that defines the fields for the alertEmail field."
+ CreateSubscriptionFilterRequest:
+ type: "object"
+ properties:
+ filterSchema:
+ type: "object"
+ additionalProperties:
+ type: "object"
+ description: "The content of a subscription filter as a valid JSON Schema Core document\
+ \ (version 2020-12 or later). The filterSchema provided\
+ \ must describe the subscription's notification payload such that it supplies\
+ \ valid criteria to filter the subscription's notifications.
Note: Not all topics can have filters applied\
+ \ to them. Use getTopic and getTopics requests to determine if a specific topic is filterable.\
+ \ Filterable topics have the boolean filterable returned as true\
+ \ in the response.
Note: If\
+ \ the JSON supplied as a subscription filter specifies a field that does\
+ \ not exist in the notifications for a topic, or if the topic is not filterable,\
+ \ the filter will be rejected and become DISABLED. If\
+ \ it is valid, however, the filter will move from PENDING\
+ \ status to ENABLED status.
Initially, when\
+ \ the createSubscriptionFilter request has been made, if the request\
+ \ has a valid JSON body a 201 Created is returned. After that,\
+ \ the validation of the filterSchema happens. See Creating a subscription filter for a topic for\
+ \ additional information."
+ CreateSubscriptionRequest:
+ type: "object"
+ properties:
+ destinationId:
+ type: "string"
+ description: "The unique identifier of the destination endpoint that will\
+ \ receive notifications associated with this subscription. Use the getDestinations\
+ \ method to retrieve destination IDs."
+ payload:
+ description: "The payload associated with the notification topic. Use getTopics\
+ \ or getTopic to get the supported payload for the topic."
+ $ref: "#/components/schemas/SubscriptionPayloadDetail"
+ status:
+ type: "string"
+ description: "Set the status of the subscription to ENABLED\
+ \ or DISABLED. For implementation help, refer to eBay\
+ \ API documentation"
+ topicId:
+ type: "string"
+ description: "The unique identifier of the notification topic to subscribe\
+ \ to. Use getTopics to get topic IDs."
+ description: "This type contains information about a subscription request."
+ DeliveryConfig:
+ type: "object"
+ properties:
+ endpoint:
+ type: "string"
+ description: "The endpoint for this destination.
Note: The provided endpoint URL should use the HTTPS protocol,\
+ \ and it should not contain an internal IP address or localhost\
+ \ in its path."
+ verificationToken:
+ type: "string"
+ description: "The verification token associated with this endpoint.
Note: The provided verification token must\
+ \ be between 32 and 80 characters. Allowed characters include alphanumeric\
+ \ characters, underscores (_), and hyphens (-);\
+ \ no other characters are allowed."
+ description: "A type that contains information about the delivery configuration."
+ Destination:
+ type: "object"
+ properties:
+ deliveryConfig:
+ description: "The configuration associated with this destination."
+ $ref: "#/components/schemas/DeliveryConfig"
+ destinationId:
+ type: "string"
+ description: "The unique identifier for the destination."
+ name:
+ type: "string"
+ description: "The name associated with this destination."
+ status:
+ type: "string"
+ description: "The status for this destination.
Note: The MARKED_DOWN value is set by eBay systems and\
+ \ cannot be used in a create or update call by applications.
Valid\
+ \ values:ENABLEDDISABLEDMARKED_DOWN
\
+ \ For implementation help, refer to eBay\
+ \ API documentation"
+ description: "A type that contains information about the destination."
+ DestinationRequest:
+ type: "object"
+ properties:
+ deliveryConfig:
+ description: "This container is used to specify the destination endpoint\
+ \ and verification token associated with this endpoint."
+ $ref: "#/components/schemas/DeliveryConfig"
+ name:
+ type: "string"
+ description: "The seller-specified name for the destination endpoint."
+ status:
+ type: "string"
+ description: "This field sets the status for the destination endpoint as\
+ \ ENABLED or DISABLED.
Note: The MARKED_DOWN value is set by eBay systems\
+ \ and cannot be used in a create or update call by applications.\
+ \ For implementation help, refer to eBay\
+ \ API documentation"
+ description: "A type that contains information about the destination request."
+ DestinationSearchResponse:
+ type: "object"
+ properties:
+ destinations:
+ type: "array"
+ description: "An array that contains the destination details."
+ items:
+ $ref: "#/components/schemas/Destination"
+ href:
+ type: "string"
+ description: "The path to the call URI that produced the current page of\
+ \ results."
+ limit:
+ type: "integer"
+ description: "The number of records to show in the current response.
Default:\
+ \ 20"
+ format: "int32"
+ next:
+ type: "string"
+ description: "The URL to access the next set of results. This field includes\
+ \ a continuation_token. No prev field is returned,\
+ \ but this value is persistent during the session so that you can use\
+ \ it to return to the next page.
This field is not returned if\
+ \ fewer records than specified by the limit field are\
+ \ returned."
+ total:
+ type: "integer"
+ description: "The total number of matches for the search criteria."
+ format: "int32"
+ description: "A type that contains information about the destination search\
+ \ response."
+ Error:
+ type: "object"
+ properties:
+ category:
+ type: "string"
+ description: "Identifies the type of erro."
+ domain:
+ type: "string"
+ description: "Name for the primary system where the error occurred. This\
+ \ is relevant for application errors."
+ errorId:
+ type: "integer"
+ description: "A unique number to identify the error."
+ format: "int32"
+ inputRefIds:
+ type: "array"
+ description: "An array of request elements most closely associated to the\
+ \ error."
+ items:
+ type: "string"
+ longMessage:
+ type: "string"
+ description: "A more detailed explanation of the error."
+ message:
+ type: "string"
+ description: "Information on how to correct the problem, in the end user's\
+ \ terms and language where applicable."
+ outputRefIds:
+ type: "array"
+ description: "An array of request elements most closely associated to the\
+ \ error."
+ items:
+ type: "string"
+ parameters:
+ type: "array"
+ description: "An array of name/value pairs that describe details the error\
+ \ condition. These are useful when multiple errors are returned."
+ items:
+ $ref: "#/components/schemas/ErrorParameter"
+ subdomain:
+ type: "string"
+ description: "Further helps indicate which subsystem the error is coming\
+ \ from. System subcategories include: Initialization, Serialization, Security,\
+ \ Monitoring, Rate Limiting, etc."
+ description: "This type defines the fields that can be returned in an error."
+ ErrorParameter:
+ type: "object"
+ properties:
+ name:
+ type: "string"
+ description: "The object of the error."
+ value:
+ type: "string"
+ description: "The value of the object."
+ PayloadDetail:
+ type: "object"
+ properties:
+ deliveryProtocol:
+ type: "string"
+ description: "The supported delivery protocols. For implementation help,\
+ \ refer to eBay\
+ \ API documentation"
+ deprecated:
+ type: "boolean"
+ description: "A deprecation indicator."
+ format:
+ type: "array"
+ description: "The supported format. Presently, JSON is the\
+ \ only supported format."
+ items:
+ type: "string"
+ description: " For implementation help, refer to eBay\
+ \ API documentation"
+ schemaVersion:
+ type: "string"
+ description: "The supported schema version."
+ description: "A type that describes the details about a topic's payload."
+ PublicKey:
+ type: "object"
+ properties:
+ algorithm:
+ type: "string"
+ description: "The algorithm associated with the public key that is returned,\
+ \ such as Elliptic Curve Digital Signature Algorithm (ECDSA)."
+ digest:
+ type: "string"
+ description: "The digest associated with the public key that is returned,\
+ \ such as Secure Hash Algorithm 1 (SHA1)."
+ key:
+ type: "string"
+ description: "The public key that is returned for the specified key ID.
This\
+ \ value is used to validate the eBay push notification message payload."
+ description: "A type that defines the public key for a unique key ID."
+ Subscription:
+ type: "object"
+ properties:
+ creationDate:
+ type: "string"
+ description: "The creation date for this subscription."
+ destinationId:
+ type: "string"
+ description: "The unique identifier for the destination associated with\
+ \ this subscription."
+ filterId:
+ type: "string"
+ description: "The unique identifier for the filter associated with this\
+ \ subscription."
+ payload:
+ description: "The payload associated with this subscription."
+ $ref: "#/components/schemas/SubscriptionPayloadDetail"
+ status:
+ type: "string"
+ description: "The status of this subscription. For implementation help,\
+ \ refer to eBay\
+ \ API documentation"
+ subscriptionId:
+ type: "string"
+ description: "The unique identifier for the subscription."
+ topicId:
+ type: "string"
+ description: "The unique identifier for the topic associated with this subscription."
+ description: "A type that describes the subscription."
+ SubscriptionFilter:
+ type: "object"
+ properties:
+ creationDate:
+ type: "string"
+ description: "The creation date for this subscription filter."
+ filterId:
+ type: "string"
+ description: "The unique identifier for this subscription filter."
+ filterSchema:
+ type: "object"
+ additionalProperties:
+ type: "object"
+ description: "The content of this subscription filter as a valid JSON Schema Core document\
+ \ (version 2020-12 or later). The filterSchema provided\
+ \ must describe the subscription's notification payload such that it supplies\
+ \ valid criteria to filter the subscription's notifications."
+ filterStatus:
+ type: "string"
+ description: "The status of this subscription filter. For implementation\
+ \ help, refer to eBay\
+ \ API documentation"
+ subscriptionId:
+ type: "string"
+ description: "The unique identifier for the subscription."
+ SubscriptionPayloadDetail:
+ type: "object"
+ properties:
+ deliveryProtocol:
+ type: "string"
+ description: "The supported delivery protocol of the notification topic.
Note: HTTPS is currently the\
+ \ only supported delivery protocol of all notification topics. \
+ \ For implementation help, refer to eBay\
+ \ API documentation"
+ format:
+ type: "string"
+ description: "The supported data format of the payload.
Note: JSON is currently the only supported format for\
+ \ all notification topics. For implementation help, refer to eBay\
+ \ API documentation"
+ schemaVersion:
+ type: "string"
+ description: "The supported schema version for the notification topic. See\
+ \ the supportedPayloads.schemaVersion field for the topic in getTopics\
+ \ or getTopic response."
+ description: "A type that describes the details of the subscription payload."
+ SubscriptionSearchResponse:
+ type: "object"
+ properties:
+ href:
+ type: "string"
+ description: "The path to the call URI that produced the current page of\
+ \ results."
+ limit:
+ type: "integer"
+ description: "The value of the limit parameter submitted in the request,\
+ \ which is the maximum number of items to return per page, from the result\
+ \ set. A result set is the complete set of results returned by the method.
Note: Though this parameter is not required\
+ \ to be submitted in the request, the parameter defaults to 20\
+ \ if omitted.
Default: 20"
+ format: "int32"
+ next:
+ type: "string"
+ description: "The URL to access the next set of results. This field includes\
+ \ a continuation_token. No prev field is returned,\
+ \ but this value is persistent during the session so that you can use\
+ \ it to return to the next page.
This field is not returned if\
+ \ fewer records than specified by the limit field are\
+ \ returned."
+ subscriptions:
+ type: "array"
+ description: "The subscriptions that match the search criteria."
+ items:
+ $ref: "#/components/schemas/Subscription"
+ total:
+ type: "integer"
+ description: "The total number of matches for the search criteria."
+ format: "int32"
+ description: "A type that describes the details of the subscription search response."
+ Topic:
+ type: "object"
+ properties:
+ authorizationScopes:
+ type: "array"
+ description: "The authorization scopes required to subscribe to this topic."
+ items:
+ type: "string"
+ context:
+ type: "string"
+ description: "The business context associated with this topic. For implementation\
+ \ help, refer to eBay\
+ \ API documentation"
+ description:
+ type: "string"
+ description: "The description of the topic."
+ filterable:
+ type: "boolean"
+ description: "The indicator of whether this topic is filterable or not."
+ scope:
+ type: "string"
+ description: "The scope of this topic. For implementation help, refer to\
+ \ eBay\
+ \ API documentation"
+ status:
+ type: "string"
+ description: "The status of this topic. For implementation help, refer to\
+ \ eBay\
+ \ API documentation"
+ supportedPayloads:
+ type: "array"
+ description: "The supported payloads for this topic."
+ items:
+ $ref: "#/components/schemas/PayloadDetail"
+ topicId:
+ type: "string"
+ description: "The unique identifier for the topic."
+ description: "A type that describes the details of the topic."
+ TopicSearchResponse:
+ type: "object"
+ properties:
+ href:
+ type: "string"
+ description: "The path to the call URI that produced the current page of\
+ \ results."
+ limit:
+ type: "integer"
+ description: "The value of the limit parameter submitted in the request,\
+ \ which is the maximum number of items to return per page, from the result\
+ \ set. A result set is the complete set of results returned by the method.
Note: Though this parameter is not required\
+ \ to be submitted in the request, the parameter defaults to 20\
+ \ if omitted."
+ format: "int32"
+ next:
+ type: "string"
+ description: "The URL to access the next set of results. This field includes\
+ \ a continuation_token. No prev field is returned,\
+ \ but this value is persistent during the session so that you can use\
+ \ it to return to the next page.
This field is not returned if\
+ \ fewer records than specified by the limit field are\
+ \ returned."
+ topics:
+ type: "array"
+ description: "An array of topics that match the specified criteria."
+ items:
+ $ref: "#/components/schemas/Topic"
+ total:
+ type: "integer"
+ description: "The total number of matches for the search criteria."
+ format: "int32"
+ description: "A type that describes the details of the topic search response."
+ UpdateSubscriptionRequest:
+ type: "object"
+ properties:
+ destinationId:
+ type: "string"
+ description: "The unique identifier of the destination endpoint that will\
+ \ receive notifications associated with this subscription. Use getDestinations\
+ \ to retrieve destination IDs."
+ payload:
+ description: "The payload associated with this subscription."
+ $ref: "#/components/schemas/SubscriptionPayloadDetail"
+ status:
+ type: "string"
+ description: "Set the status of the subscription being updated to ENABLED\
+ \ or DISABLED. For implementation help, refer to eBay\
+ \ API documentation"
+ description: "A type that describes the details of the update subscription request."
+ securitySchemes:
+ api_auth:
+ type: "oauth2"
+ description: "The security definitions for this API. Please check individual\
+ \ operations for applicable scopes."
+ flows:
+ clientCredentials:
+ tokenUrl: "https://api.ebay.com/identity/v1/oauth2/token"
+ scopes:
+ https://api.ebay.com/oauth/api_scope: "View public data from eBay"
+ authorizationCode:
+ authorizationUrl: "https://auth.ebay.com/oauth2/authorize"
+ tokenUrl: "https://api.ebay.com/identity/v1/oauth2/token"
+ scopes:
+ https://api.ebay.com/oauth/api_scope/commerce.notification.subscription.readonly: "View\
+ \ your event notification subscriptions"
+ https://api.ebay.com/oauth/api_scope/commerce.notification.subscription: "View\
+ \ and manage your event notification subscriptions"
diff --git a/ebay_client/__init__.py b/ebay_client/__init__.py
new file mode 100644
index 0000000..a237026
--- /dev/null
+++ b/ebay_client/__init__.py
@@ -0,0 +1,3 @@
+from .client import EbayClient
+
+__all__ = ["EbayClient"]
diff --git a/ebay_client/account/__init__.py b/ebay_client/account/__init__.py
new file mode 100644
index 0000000..45efe4c
--- /dev/null
+++ b/ebay_client/account/__init__.py
@@ -0,0 +1,3 @@
+from ebay_client.account.client import AccountClient
+
+__all__ = ["AccountClient"]
diff --git a/ebay_client/account/client.py b/ebay_client/account/client.py
new file mode 100644
index 0000000..53c244d
--- /dev/null
+++ b/ebay_client/account/client.py
@@ -0,0 +1,51 @@
+from __future__ import annotations
+
+from typing import Any
+
+from ebay_client.core.http.transport import ApiTransport
+
+ACCOUNT_SCOPE = "https://api.ebay.com/oauth/api_scope/sell.account"
+ACCOUNT_READ_SCOPE = "https://api.ebay.com/oauth/api_scope/sell.account.readonly"
+
+
+class AccountClient:
+ def __init__(self, transport: ApiTransport) -> None:
+ self.transport = transport
+
+ def get_fulfillment_policies(self, *, marketplace_id: str) -> dict[str, Any]:
+ return self.transport.request_json(
+ "GET",
+ "/sell/account/v1/fulfillment_policy",
+ scopes=[ACCOUNT_READ_SCOPE],
+ params={"marketplace_id": marketplace_id},
+ )
+
+ def get_payment_policies(self, *, marketplace_id: str) -> dict[str, Any]:
+ return self.transport.request_json(
+ "GET",
+ "/sell/account/v1/payment_policy",
+ scopes=[ACCOUNT_READ_SCOPE],
+ params={"marketplace_id": marketplace_id},
+ )
+
+ def get_return_policies(self, *, marketplace_id: str) -> dict[str, Any]:
+ return self.transport.request_json(
+ "GET",
+ "/sell/account/v1/return_policy",
+ scopes=[ACCOUNT_READ_SCOPE],
+ params={"marketplace_id": marketplace_id},
+ )
+
+ def get_privileges(self) -> dict[str, Any]:
+ return self.transport.request_json(
+ "GET",
+ "/sell/account/v1/privilege",
+ scopes=[ACCOUNT_SCOPE],
+ )
+
+ def get_opted_in_programs(self) -> dict[str, Any]:
+ return self.transport.request_json(
+ "GET",
+ "/sell/account/v1/program/get_opted_in_programs",
+ scopes=[ACCOUNT_READ_SCOPE],
+ )
diff --git a/ebay_client/client.py b/ebay_client/client.py
new file mode 100644
index 0000000..8071099
--- /dev/null
+++ b/ebay_client/client.py
@@ -0,0 +1,33 @@
+from __future__ import annotations
+
+from ebay_client.account.client import AccountClient
+from ebay_client.core.auth.oauth import EbayOAuthClient, EbayOAuthConfig
+from ebay_client.core.auth.store import InMemoryTokenStore, TokenStore
+from ebay_client.core.http.transport import ApiTransport
+from ebay_client.feed.client import FeedClient
+from ebay_client.fulfillment.client import FulfillmentClient
+from ebay_client.inventory.client import InventoryClient
+from ebay_client.notification.client import NotificationClient
+
+
+class EbayClient:
+ def __init__(
+ self,
+ oauth_config: EbayOAuthConfig,
+ *,
+ token_store: TokenStore | None = None,
+ base_url: str = "https://api.ebay.com",
+ timeout_seconds: float = 30.0,
+ ) -> None:
+ store = token_store or InMemoryTokenStore()
+ oauth_client = EbayOAuthClient(oauth_config, token_store=store)
+ transport = ApiTransport(
+ base_url=base_url,
+ oauth_client=oauth_client,
+ timeout_seconds=timeout_seconds,
+ )
+ self.notification = NotificationClient(transport)
+ self.inventory = InventoryClient(transport)
+ self.fulfillment = FulfillmentClient(transport)
+ self.account = AccountClient(transport)
+ self.feed = FeedClient(transport)
diff --git a/ebay_client/core/__init__.py b/ebay_client/core/__init__.py
new file mode 100644
index 0000000..6d5abce
--- /dev/null
+++ b/ebay_client/core/__init__.py
@@ -0,0 +1,3 @@
+from ebay_client.core.errors import ApiError, EbayClientError, OAuthError, TransportError
+
+__all__ = ["ApiError", "EbayClientError", "OAuthError", "TransportError"]
diff --git a/ebay_client/core/auth/__init__.py b/ebay_client/core/auth/__init__.py
new file mode 100644
index 0000000..cb65fdd
--- /dev/null
+++ b/ebay_client/core/auth/__init__.py
@@ -0,0 +1,5 @@
+from ebay_client.core.auth.models import EbayOAuthConfig, OAuthToken
+from ebay_client.core.auth.oauth import EbayOAuthClient
+from ebay_client.core.auth.store import InMemoryTokenStore, TokenStore
+
+__all__ = ["EbayOAuthClient", "EbayOAuthConfig", "InMemoryTokenStore", "OAuthToken", "TokenStore"]
diff --git a/ebay_client/core/auth/models.py b/ebay_client/core/auth/models.py
new file mode 100644
index 0000000..d632508
--- /dev/null
+++ b/ebay_client/core/auth/models.py
@@ -0,0 +1,36 @@
+from __future__ import annotations
+
+from datetime import UTC, datetime, timedelta
+
+from pydantic import BaseModel, Field
+
+
+class EbayOAuthConfig(BaseModel):
+ client_id: str
+ client_secret: str
+ redirect_uri: str | None = None
+ auth_base_url: str = "https://auth.ebay.com/oauth2/authorize"
+ token_url: str = "https://api.ebay.com/identity/v1/oauth2/token"
+ default_scopes: list[str] = Field(default_factory=list)
+
+
+class OAuthToken(BaseModel):
+ access_token: str
+ token_type: str = "Bearer"
+ expires_in: int = 7200
+ scope: str | None = None
+ refresh_token: str | None = None
+ refresh_token_expires_in: int | None = None
+ obtained_at: datetime = Field(default_factory=lambda: datetime.now(UTC))
+
+ @property
+ def expires_at(self) -> datetime:
+ return self.obtained_at + timedelta(seconds=self.expires_in)
+
+ def is_expired(self, *, skew_seconds: int = 30) -> bool:
+ return datetime.now(UTC) >= self.expires_at - timedelta(seconds=skew_seconds)
+
+ def scopes(self) -> set[str]:
+ if not self.scope:
+ return set()
+ return {value for value in self.scope.split() if value}
diff --git a/ebay_client/core/auth/oauth.py b/ebay_client/core/auth/oauth.py
new file mode 100644
index 0000000..bd73799
--- /dev/null
+++ b/ebay_client/core/auth/oauth.py
@@ -0,0 +1,118 @@
+from __future__ import annotations
+
+import base64
+from typing import Iterable
+from urllib.parse import urlencode
+
+import httpx
+
+from ebay_client.core.auth.models import EbayOAuthConfig, OAuthToken
+from ebay_client.core.auth.store import InMemoryTokenStore, TokenStore
+from ebay_client.core.errors import OAuthError
+
+
+class EbayOAuthClient:
+ def __init__(
+ self,
+ config: EbayOAuthConfig,
+ *,
+ token_store: TokenStore | None = None,
+ timeout_seconds: float = 30.0,
+ ) -> None:
+ self.config = config
+ self.token_store = token_store or InMemoryTokenStore()
+ self.timeout_seconds = timeout_seconds
+
+ def build_authorization_url(
+ self,
+ *,
+ scopes: Iterable[str] | None = None,
+ state: str | None = None,
+ prompt: str | None = None,
+ ) -> str:
+ if not self.config.redirect_uri:
+ raise OAuthError("redirect_uri is required for authorization_code flow")
+ query = {
+ "client_id": self.config.client_id,
+ "redirect_uri": self.config.redirect_uri,
+ "response_type": "code",
+ "scope": " ".join(scopes or self.config.default_scopes),
+ }
+ if state:
+ query["state"] = state
+ if prompt:
+ query["prompt"] = prompt
+ return f"{self.config.auth_base_url}?{urlencode(query)}"
+
+ def get_valid_token(self, *, scopes: Iterable[str] | None = None) -> OAuthToken:
+ token = self.token_store.get_token()
+ if token is None or token.is_expired() or not self._has_required_scopes(token, scopes):
+ token = self.fetch_client_credentials_token(scopes=scopes)
+ return token
+
+ def fetch_client_credentials_token(self, *, scopes: Iterable[str] | None = None) -> OAuthToken:
+ requested_scopes = list(scopes or self.config.default_scopes)
+ payload = {
+ "grant_type": "client_credentials",
+ "scope": " ".join(requested_scopes),
+ }
+ token = self._request_token(payload)
+ self.token_store.set_token(token)
+ return token
+
+ def exchange_code(self, code: str, *, scopes: Iterable[str] | None = None) -> OAuthToken:
+ if not self.config.redirect_uri:
+ raise OAuthError("redirect_uri is required for authorization_code flow")
+ payload = {
+ "grant_type": "authorization_code",
+ "code": code,
+ "redirect_uri": self.config.redirect_uri,
+ }
+ requested_scopes = list(scopes or self.config.default_scopes)
+ if requested_scopes:
+ payload["scope"] = " ".join(requested_scopes)
+ token = self._request_token(payload)
+ self.token_store.set_token(token)
+ return token
+
+ def refresh_access_token(self, refresh_token: str, *, scopes: Iterable[str] | None = None) -> OAuthToken:
+ payload = {
+ "grant_type": "refresh_token",
+ "refresh_token": refresh_token,
+ }
+ requested_scopes = list(scopes or self.config.default_scopes)
+ if requested_scopes:
+ payload["scope"] = " ".join(requested_scopes)
+ token = self._request_token(payload)
+ self.token_store.set_token(token)
+ return token
+
+ def _request_token(self, form_data: dict[str, str]) -> OAuthToken:
+ headers = {
+ "Authorization": f"Basic {self._build_basic_token()}",
+ "Content-Type": "application/x-www-form-urlencoded",
+ }
+ try:
+ with httpx.Client(timeout=self.timeout_seconds) as client:
+ response = client.post(self.config.token_url, data=form_data, headers=headers)
+ response.raise_for_status()
+ except httpx.HTTPStatusError as exc:
+ raise OAuthError(f"OAuth token request failed with HTTP {exc.response.status_code}") from exc
+ except httpx.HTTPError as exc:
+ raise OAuthError("OAuth token request failed") from exc
+
+ try:
+ return OAuthToken.model_validate(response.json())
+ except Exception as exc:
+ raise OAuthError("OAuth token response could not be parsed") from exc
+
+ def _build_basic_token(self) -> str:
+ raw = f"{self.config.client_id}:{self.config.client_secret}".encode("utf-8")
+ return base64.b64encode(raw).decode("ascii")
+
+ @staticmethod
+ def _has_required_scopes(token: OAuthToken, scopes: Iterable[str] | None) -> bool:
+ requested = {scope for scope in (scopes or []) if scope}
+ if not requested:
+ return True
+ return requested.issubset(token.scopes())
diff --git a/ebay_client/core/auth/store.py b/ebay_client/core/auth/store.py
new file mode 100644
index 0000000..f2436b3
--- /dev/null
+++ b/ebay_client/core/auth/store.py
@@ -0,0 +1,30 @@
+from __future__ import annotations
+
+from typing import Protocol
+
+from ebay_client.core.auth.models import OAuthToken
+
+
+class TokenStore(Protocol):
+ def get_token(self) -> OAuthToken | None:
+ ...
+
+ def set_token(self, token: OAuthToken) -> None:
+ ...
+
+ def clear(self) -> None:
+ ...
+
+
+class InMemoryTokenStore:
+ def __init__(self) -> None:
+ self._token: OAuthToken | None = None
+
+ def get_token(self) -> OAuthToken | None:
+ return self._token
+
+ def set_token(self, token: OAuthToken) -> None:
+ self._token = token
+
+ def clear(self) -> None:
+ self._token = None
diff --git a/ebay_client/core/errors.py b/ebay_client/core/errors.py
new file mode 100644
index 0000000..eeafd0a
--- /dev/null
+++ b/ebay_client/core/errors.py
@@ -0,0 +1,51 @@
+from __future__ import annotations
+
+from typing import Any
+
+
+class EbayClientError(Exception):
+ pass
+
+
+class OAuthError(EbayClientError):
+ pass
+
+
+class TransportError(EbayClientError):
+ pass
+
+
+class ResponseDecodingError(TransportError):
+ pass
+
+
+class ApiError(TransportError):
+ def __init__(
+ self,
+ *,
+ status_code: int,
+ message: str,
+ errors: list[dict[str, Any]] | None = None,
+ response_body: Any | None = None,
+ ) -> None:
+ super().__init__(f"HTTP {status_code}: {message}")
+ self.status_code = status_code
+ self.message = message
+ self.errors = errors or []
+ self.response_body = response_body
+
+
+def build_api_error(status_code: int, payload: Any) -> ApiError:
+ if isinstance(payload, dict):
+ errors = payload.get("errors")
+ if isinstance(errors, list) and errors:
+ first = errors[0]
+ message = str(first.get("message") or first.get("longMessage") or "eBay API request failed")
+ normalized_errors = [item for item in errors if isinstance(item, dict)]
+ return ApiError(
+ status_code=status_code,
+ message=message,
+ errors=normalized_errors,
+ response_body=payload,
+ )
+ return ApiError(status_code=status_code, message="eBay API request failed", response_body=payload)
diff --git a/ebay_client/core/http/__init__.py b/ebay_client/core/http/__init__.py
new file mode 100644
index 0000000..9407528
--- /dev/null
+++ b/ebay_client/core/http/__init__.py
@@ -0,0 +1,3 @@
+from ebay_client.core.http.transport import ApiTransport
+
+__all__ = ["ApiTransport"]
diff --git a/ebay_client/core/http/transport.py b/ebay_client/core/http/transport.py
new file mode 100644
index 0000000..5143953
--- /dev/null
+++ b/ebay_client/core/http/transport.py
@@ -0,0 +1,69 @@
+from __future__ import annotations
+
+from typing import Any, Mapping
+
+import httpx
+
+from ebay_client.core.auth.oauth import EbayOAuthClient
+from ebay_client.core.errors import ResponseDecodingError, TransportError, build_api_error
+
+
+class ApiTransport:
+ def __init__(
+ self,
+ *,
+ base_url: str,
+ oauth_client: EbayOAuthClient,
+ timeout_seconds: float = 30.0,
+ default_headers: Mapping[str, str] | None = None,
+ ) -> None:
+ self.base_url = base_url.rstrip("/")
+ self.oauth_client = oauth_client
+ self.timeout_seconds = timeout_seconds
+ self.default_headers = dict(default_headers or {})
+
+ def request(
+ self,
+ method: str,
+ path: str,
+ *,
+ scopes: list[str] | None = None,
+ params: Mapping[str, Any] | None = None,
+ json_body: Any | None = None,
+ headers: Mapping[str, str] | None = None,
+ content: bytes | None = None,
+ ) -> httpx.Response:
+ token = self.oauth_client.get_valid_token(scopes=scopes)
+ request_headers = dict(self.default_headers)
+ request_headers.update(headers or {})
+ request_headers["Authorization"] = f"Bearer {token.access_token}"
+ url = f"{self.base_url}{path}"
+ try:
+ with httpx.Client(timeout=self.timeout_seconds) as client:
+ response = client.request(
+ method,
+ url,
+ params=params,
+ json=json_body,
+ headers=request_headers,
+ content=content,
+ )
+ except httpx.HTTPError as exc:
+ raise TransportError(f"HTTP request failed for {method} {path}") from exc
+
+ if response.is_error:
+ try:
+ payload = response.json()
+ except ValueError:
+ payload = response.text
+ raise build_api_error(response.status_code, payload)
+ return response
+
+ def request_json(self, method: str, path: str, **kwargs: Any) -> Any:
+ response = self.request(method, path, **kwargs)
+ if response.status_code == 204:
+ return None
+ try:
+ return response.json()
+ except ValueError as exc:
+ raise ResponseDecodingError(f"Response for {method} {path} is not valid JSON") from exc
diff --git a/ebay_client/core/pagination.py b/ebay_client/core/pagination.py
new file mode 100644
index 0000000..a9fdae8
--- /dev/null
+++ b/ebay_client/core/pagination.py
@@ -0,0 +1,15 @@
+from __future__ import annotations
+
+from dataclasses import dataclass
+from typing import Generic, TypeVar
+
+T = TypeVar("T")
+
+
+@dataclass(slots=True)
+class ContinuationPage(Generic[T]):
+ items: list[T]
+ total: int | None = None
+ limit: int | None = None
+ next_token: str | None = None
+ href: str | None = None
diff --git a/ebay_client/feed/__init__.py b/ebay_client/feed/__init__.py
new file mode 100644
index 0000000..bbfe434
--- /dev/null
+++ b/ebay_client/feed/__init__.py
@@ -0,0 +1,3 @@
+from ebay_client.feed.client import FeedClient
+
+__all__ = ["FeedClient"]
diff --git a/ebay_client/feed/client.py b/ebay_client/feed/client.py
new file mode 100644
index 0000000..e0f8297
--- /dev/null
+++ b/ebay_client/feed/client.py
@@ -0,0 +1,42 @@
+from __future__ import annotations
+
+from typing import Any
+
+from ebay_client.core.http.transport import ApiTransport
+
+FEED_INVENTORY_SCOPE = "https://api.ebay.com/oauth/api_scope/sell.inventory"
+FEED_FULFILLMENT_SCOPE = "https://api.ebay.com/oauth/api_scope/sell.fulfillment"
+
+
+class FeedClient:
+ def __init__(self, transport: ApiTransport) -> None:
+ self.transport = transport
+
+ def get_tasks(self, *, feed_type: str | None = None) -> dict[str, Any]:
+ return self.transport.request_json(
+ "GET",
+ "/sell/feed/v1/task",
+ scopes=[FEED_INVENTORY_SCOPE, FEED_FULFILLMENT_SCOPE],
+ params={"feed_type": feed_type},
+ )
+
+ def get_task(self, task_id: str) -> dict[str, Any]:
+ return self.transport.request_json(
+ "GET",
+ f"/sell/feed/v1/task/{task_id}",
+ scopes=[FEED_INVENTORY_SCOPE, FEED_FULFILLMENT_SCOPE],
+ )
+
+ def get_schedule_templates(self) -> dict[str, Any]:
+ return self.transport.request_json(
+ "GET",
+ "/sell/feed/v1/schedule_template",
+ scopes=[FEED_INVENTORY_SCOPE, FEED_FULFILLMENT_SCOPE],
+ )
+
+ def get_schedules(self) -> dict[str, Any]:
+ return self.transport.request_json(
+ "GET",
+ "/sell/feed/v1/schedule",
+ scopes=[FEED_INVENTORY_SCOPE, FEED_FULFILLMENT_SCOPE],
+ )
diff --git a/ebay_client/fulfillment/__init__.py b/ebay_client/fulfillment/__init__.py
new file mode 100644
index 0000000..02b1f07
--- /dev/null
+++ b/ebay_client/fulfillment/__init__.py
@@ -0,0 +1,3 @@
+from ebay_client.fulfillment.client import FulfillmentClient
+
+__all__ = ["FulfillmentClient"]
diff --git a/ebay_client/fulfillment/client.py b/ebay_client/fulfillment/client.py
new file mode 100644
index 0000000..6b27b00
--- /dev/null
+++ b/ebay_client/fulfillment/client.py
@@ -0,0 +1,41 @@
+from __future__ import annotations
+
+from typing import Any
+
+from ebay_client.core.http.transport import ApiTransport
+
+FULFILLMENT_READ_SCOPE = "https://api.ebay.com/oauth/api_scope/sell.fulfillment.readonly"
+
+
+class FulfillmentClient:
+ def __init__(self, transport: ApiTransport) -> None:
+ self.transport = transport
+
+ def get_order(self, order_id: str) -> dict[str, Any]:
+ return self.transport.request_json(
+ "GET",
+ f"/sell/fulfillment/v1/order/{order_id}",
+ scopes=[FULFILLMENT_READ_SCOPE],
+ )
+
+ def get_orders(self, *, limit: int | None = None, offset: int | None = None) -> dict[str, Any]:
+ return self.transport.request_json(
+ "GET",
+ "/sell/fulfillment/v1/order",
+ scopes=[FULFILLMENT_READ_SCOPE],
+ params={"limit": limit, "offset": offset},
+ )
+
+ def get_shipping_fulfillments(self, order_id: str) -> dict[str, Any]:
+ return self.transport.request_json(
+ "GET",
+ f"/sell/fulfillment/v1/order/{order_id}/shipping_fulfillment",
+ scopes=[FULFILLMENT_READ_SCOPE],
+ )
+
+ def get_shipping_fulfillment(self, order_id: str, fulfillment_id: str) -> dict[str, Any]:
+ return self.transport.request_json(
+ "GET",
+ f"/sell/fulfillment/v1/order/{order_id}/shipping_fulfillment/{fulfillment_id}",
+ scopes=[FULFILLMENT_READ_SCOPE],
+ )
diff --git a/ebay_client/generated/__init__.py b/ebay_client/generated/__init__.py
new file mode 100644
index 0000000..5efbdf0
--- /dev/null
+++ b/ebay_client/generated/__init__.py
@@ -0,0 +1 @@
+"""Generated low-level clients live under this package."""
diff --git a/ebay_client/generated/account/__init__.py b/ebay_client/generated/account/__init__.py
new file mode 100644
index 0000000..5b96607
--- /dev/null
+++ b/ebay_client/generated/account/__init__.py
@@ -0,0 +1,8 @@
+
+""" A client library for accessing Account v1 API """
+from .client import AuthenticatedClient, Client
+
+__all__ = (
+ "AuthenticatedClient",
+ "Client",
+)
diff --git a/ebay_client/generated/account/api/__init__.py b/ebay_client/generated/account/api/__init__.py
new file mode 100644
index 0000000..dc035f4
--- /dev/null
+++ b/ebay_client/generated/account/api/__init__.py
@@ -0,0 +1 @@
+""" Contains methods for accessing the API """
diff --git a/ebay_client/generated/account/api/advertising_eligibility/__init__.py b/ebay_client/generated/account/api/advertising_eligibility/__init__.py
new file mode 100644
index 0000000..c9921b5
--- /dev/null
+++ b/ebay_client/generated/account/api/advertising_eligibility/__init__.py
@@ -0,0 +1 @@
+""" Contains endpoint functions for accessing the API """
diff --git a/ebay_client/generated/account/api/advertising_eligibility/get_advertising_eligibility.py b/ebay_client/generated/account/api/advertising_eligibility/get_advertising_eligibility.py
new file mode 100644
index 0000000..6eb6ad9
--- /dev/null
+++ b/ebay_client/generated/account/api/advertising_eligibility/get_advertising_eligibility.py
@@ -0,0 +1,201 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.seller_eligibility_multi_program_response import SellerEligibilityMultiProgramResponse
+from ...types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+
+
+def _get_kwargs(
+ *,
+ program_types: Union[Unset, str] = UNSET,
+ x_ebay_c_marketplace_id: str,
+
+) -> dict[str, Any]:
+ headers: dict[str, Any] = {}
+ headers["X-EBAY-C-MARKETPLACE-ID"] = x_ebay_c_marketplace_id
+
+
+
+
+
+ params: dict[str, Any] = {}
+
+ params["program_types"] = program_types
+
+
+ params = {k: v for k, v in params.items() if v is not UNSET and v is not None}
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/advertising_eligibility",
+ "params": params,
+ }
+
+
+ _kwargs["headers"] = headers
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, SellerEligibilityMultiProgramResponse]]:
+ if response.status_code == 200:
+ response_200 = SellerEligibilityMultiProgramResponse.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, SellerEligibilityMultiProgramResponse]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ *,
+ client: AuthenticatedClient,
+ program_types: Union[Unset, str] = UNSET,
+ x_ebay_c_marketplace_id: str,
+
+) -> Response[Union[Any, SellerEligibilityMultiProgramResponse]]:
+ """ This method allows developers to check the seller eligibility status for eBay advertising programs.
+
+ Args:
+ program_types (Union[Unset, str]):
+ x_ebay_c_marketplace_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, SellerEligibilityMultiProgramResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ program_types=program_types,
+x_ebay_c_marketplace_id=x_ebay_c_marketplace_id,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ *,
+ client: AuthenticatedClient,
+ program_types: Union[Unset, str] = UNSET,
+ x_ebay_c_marketplace_id: str,
+
+) -> Optional[Union[Any, SellerEligibilityMultiProgramResponse]]:
+ """ This method allows developers to check the seller eligibility status for eBay advertising programs.
+
+ Args:
+ program_types (Union[Unset, str]):
+ x_ebay_c_marketplace_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, SellerEligibilityMultiProgramResponse]
+ """
+
+
+ return sync_detailed(
+ client=client,
+program_types=program_types,
+x_ebay_c_marketplace_id=x_ebay_c_marketplace_id,
+
+ ).parsed
+
+async def asyncio_detailed(
+ *,
+ client: AuthenticatedClient,
+ program_types: Union[Unset, str] = UNSET,
+ x_ebay_c_marketplace_id: str,
+
+) -> Response[Union[Any, SellerEligibilityMultiProgramResponse]]:
+ """ This method allows developers to check the seller eligibility status for eBay advertising programs.
+
+ Args:
+ program_types (Union[Unset, str]):
+ x_ebay_c_marketplace_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, SellerEligibilityMultiProgramResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ program_types=program_types,
+x_ebay_c_marketplace_id=x_ebay_c_marketplace_id,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ *,
+ client: AuthenticatedClient,
+ program_types: Union[Unset, str] = UNSET,
+ x_ebay_c_marketplace_id: str,
+
+) -> Optional[Union[Any, SellerEligibilityMultiProgramResponse]]:
+ """ This method allows developers to check the seller eligibility status for eBay advertising programs.
+
+ Args:
+ program_types (Union[Unset, str]):
+ x_ebay_c_marketplace_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, SellerEligibilityMultiProgramResponse]
+ """
+
+
+ return (await asyncio_detailed(
+ client=client,
+program_types=program_types,
+x_ebay_c_marketplace_id=x_ebay_c_marketplace_id,
+
+ )).parsed
diff --git a/ebay_client/generated/account/api/custom_policy/__init__.py b/ebay_client/generated/account/api/custom_policy/__init__.py
new file mode 100644
index 0000000..c9921b5
--- /dev/null
+++ b/ebay_client/generated/account/api/custom_policy/__init__.py
@@ -0,0 +1 @@
+""" Contains endpoint functions for accessing the API """
diff --git a/ebay_client/generated/account/api/custom_policy/create_custom_policy.py b/ebay_client/generated/account/api/custom_policy/create_custom_policy.py
new file mode 100644
index 0000000..ed728af
--- /dev/null
+++ b/ebay_client/generated/account/api/custom_policy/create_custom_policy.py
@@ -0,0 +1,240 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.create_custom_policy_response_201 import CreateCustomPolicyResponse201
+from ...models.custom_policy_create_request import CustomPolicyCreateRequest
+from typing import cast
+
+
+
+def _get_kwargs(
+ *,
+ body: CustomPolicyCreateRequest,
+ content_type: str,
+
+) -> dict[str, Any]:
+ headers: dict[str, Any] = {}
+ headers["Content-Type"] = content_type
+
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "post",
+ "url": "/custom_policy/",
+ }
+
+ _kwargs["json"] = body.to_dict()
+
+
+ headers["Content-Type"] = "application/json"
+
+ _kwargs["headers"] = headers
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, CreateCustomPolicyResponse201]]:
+ if response.status_code == 201:
+ response_201 = CreateCustomPolicyResponse201.from_dict(response.json())
+
+
+
+ return response_201
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 409:
+ response_409 = cast(Any, None)
+ return response_409
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, CreateCustomPolicyResponse201]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ *,
+ client: AuthenticatedClient,
+ body: CustomPolicyCreateRequest,
+ content_type: str,
+
+) -> Response[Union[Any, CreateCustomPolicyResponse201]]:
+ r""" This method creates a new custom policy that specifies the seller's terms for complying with local
+ governmental regulations. Each Custom Policy targets a policyType. Multiple policies may be
+ created as using the following custom policy types:- PRODUCT_COMPLIANCE: Product Compliance
+ policies disclose product information as required for regulatory compliance.
Note: A maximum of 60 Product Compliance policies per seller
+ may be created. - TAKE_BACK: Takeback policies describe the seller's legal obligation
+ to take back a previously purchased item when the buyer purchases a new one.
Note: A maximum of 18 Takeback policies per seller may be
+ created.
A successful create policy call returns an HTTP status code of 201
+ Created with the system-generated policy ID included in the Location response header.
+
+ Args:
+ content_type (str):
+ body (CustomPolicyCreateRequest): This type is used by the request payload of the
+ createCustomPolicy method to define a new custom policy for a specific marketplace.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, CreateCustomPolicyResponse201]]
+ """
+
+
+ kwargs = _get_kwargs(
+ body=body,
+content_type=content_type,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ *,
+ client: AuthenticatedClient,
+ body: CustomPolicyCreateRequest,
+ content_type: str,
+
+) -> Optional[Union[Any, CreateCustomPolicyResponse201]]:
+ r""" This method creates a new custom policy that specifies the seller's terms for complying with local
+ governmental regulations. Each Custom Policy targets a policyType. Multiple policies may be
+ created as using the following custom policy types:- PRODUCT_COMPLIANCE: Product Compliance
+ policies disclose product information as required for regulatory compliance.
Note: A maximum of 60 Product Compliance policies per seller
+ may be created. - TAKE_BACK: Takeback policies describe the seller's legal obligation
+ to take back a previously purchased item when the buyer purchases a new one.
Note: A maximum of 18 Takeback policies per seller may be
+ created.
A successful create policy call returns an HTTP status code of 201
+ Created with the system-generated policy ID included in the Location response header.
+
+ Args:
+ content_type (str):
+ body (CustomPolicyCreateRequest): This type is used by the request payload of the
+ createCustomPolicy method to define a new custom policy for a specific marketplace.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, CreateCustomPolicyResponse201]
+ """
+
+
+ return sync_detailed(
+ client=client,
+body=body,
+content_type=content_type,
+
+ ).parsed
+
+async def asyncio_detailed(
+ *,
+ client: AuthenticatedClient,
+ body: CustomPolicyCreateRequest,
+ content_type: str,
+
+) -> Response[Union[Any, CreateCustomPolicyResponse201]]:
+ r""" This method creates a new custom policy that specifies the seller's terms for complying with local
+ governmental regulations. Each Custom Policy targets a policyType. Multiple policies may be
+ created as using the following custom policy types:- PRODUCT_COMPLIANCE: Product Compliance
+ policies disclose product information as required for regulatory compliance.
Note: A maximum of 60 Product Compliance policies per seller
+ may be created. - TAKE_BACK: Takeback policies describe the seller's legal obligation
+ to take back a previously purchased item when the buyer purchases a new one.
Note: A maximum of 18 Takeback policies per seller may be
+ created.
A successful create policy call returns an HTTP status code of 201
+ Created with the system-generated policy ID included in the Location response header.
+
+ Args:
+ content_type (str):
+ body (CustomPolicyCreateRequest): This type is used by the request payload of the
+ createCustomPolicy method to define a new custom policy for a specific marketplace.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, CreateCustomPolicyResponse201]]
+ """
+
+
+ kwargs = _get_kwargs(
+ body=body,
+content_type=content_type,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ *,
+ client: AuthenticatedClient,
+ body: CustomPolicyCreateRequest,
+ content_type: str,
+
+) -> Optional[Union[Any, CreateCustomPolicyResponse201]]:
+ r""" This method creates a new custom policy that specifies the seller's terms for complying with local
+ governmental regulations. Each Custom Policy targets a policyType. Multiple policies may be
+ created as using the following custom policy types:- PRODUCT_COMPLIANCE: Product Compliance
+ policies disclose product information as required for regulatory compliance.
Note: A maximum of 60 Product Compliance policies per seller
+ may be created. - TAKE_BACK: Takeback policies describe the seller's legal obligation
+ to take back a previously purchased item when the buyer purchases a new one.
Note: A maximum of 18 Takeback policies per seller may be
+ created.
A successful create policy call returns an HTTP status code of 201
+ Created with the system-generated policy ID included in the Location response header.
+
+ Args:
+ content_type (str):
+ body (CustomPolicyCreateRequest): This type is used by the request payload of the
+ createCustomPolicy method to define a new custom policy for a specific marketplace.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, CreateCustomPolicyResponse201]
+ """
+
+
+ return (await asyncio_detailed(
+ client=client,
+body=body,
+content_type=content_type,
+
+ )).parsed
diff --git a/ebay_client/generated/account/api/custom_policy/get_custom_policies.py b/ebay_client/generated/account/api/custom_policy/get_custom_policies.py
new file mode 100644
index 0000000..abe348e
--- /dev/null
+++ b/ebay_client/generated/account/api/custom_policy/get_custom_policies.py
@@ -0,0 +1,188 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.custom_policy_response import CustomPolicyResponse
+from ...types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+
+
+def _get_kwargs(
+ *,
+ policy_types: Union[Unset, str] = UNSET,
+
+) -> dict[str, Any]:
+
+
+
+
+ params: dict[str, Any] = {}
+
+ params["policy_types"] = policy_types
+
+
+ params = {k: v for k, v in params.items() if v is not UNSET and v is not None}
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/custom_policy/",
+ "params": params,
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, CustomPolicyResponse]]:
+ if response.status_code == 200:
+ response_200 = CustomPolicyResponse.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, CustomPolicyResponse]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ *,
+ client: AuthenticatedClient,
+ policy_types: Union[Unset, str] = UNSET,
+
+) -> Response[Union[Any, CustomPolicyResponse]]:
+ """ This method retrieves the list of custom policies defined for a seller's account. To limit the
+ returned custom policies, specify the policy_types query parameter.
+
+ Args:
+ policy_types (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, CustomPolicyResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ policy_types=policy_types,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ *,
+ client: AuthenticatedClient,
+ policy_types: Union[Unset, str] = UNSET,
+
+) -> Optional[Union[Any, CustomPolicyResponse]]:
+ """ This method retrieves the list of custom policies defined for a seller's account. To limit the
+ returned custom policies, specify the policy_types query parameter.
+
+ Args:
+ policy_types (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, CustomPolicyResponse]
+ """
+
+
+ return sync_detailed(
+ client=client,
+policy_types=policy_types,
+
+ ).parsed
+
+async def asyncio_detailed(
+ *,
+ client: AuthenticatedClient,
+ policy_types: Union[Unset, str] = UNSET,
+
+) -> Response[Union[Any, CustomPolicyResponse]]:
+ """ This method retrieves the list of custom policies defined for a seller's account. To limit the
+ returned custom policies, specify the policy_types query parameter.
+
+ Args:
+ policy_types (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, CustomPolicyResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ policy_types=policy_types,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ *,
+ client: AuthenticatedClient,
+ policy_types: Union[Unset, str] = UNSET,
+
+) -> Optional[Union[Any, CustomPolicyResponse]]:
+ """ This method retrieves the list of custom policies defined for a seller's account. To limit the
+ returned custom policies, specify the policy_types query parameter.
+
+ Args:
+ policy_types (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, CustomPolicyResponse]
+ """
+
+
+ return (await asyncio_detailed(
+ client=client,
+policy_types=policy_types,
+
+ )).parsed
diff --git a/ebay_client/generated/account/api/custom_policy/get_custom_policy.py b/ebay_client/generated/account/api/custom_policy/get_custom_policy.py
new file mode 100644
index 0000000..2803b9e
--- /dev/null
+++ b/ebay_client/generated/account/api/custom_policy/get_custom_policy.py
@@ -0,0 +1,177 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.custom_policy import CustomPolicy
+from typing import cast
+
+
+
+def _get_kwargs(
+ custom_policy_id: str,
+
+) -> dict[str, Any]:
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/custom_policy/{custom_policy_id}".format(custom_policy_id=custom_policy_id,),
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, CustomPolicy]]:
+ if response.status_code == 200:
+ response_200 = CustomPolicy.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 404:
+ response_404 = cast(Any, None)
+ return response_404
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, CustomPolicy]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ custom_policy_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, CustomPolicy]]:
+ """ This method retrieves the custom policy specified by the custom_policy_id path parameter.
+
+ Args:
+ custom_policy_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, CustomPolicy]]
+ """
+
+
+ kwargs = _get_kwargs(
+ custom_policy_id=custom_policy_id,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ custom_policy_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, CustomPolicy]]:
+ """ This method retrieves the custom policy specified by the custom_policy_id path parameter.
+
+ Args:
+ custom_policy_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, CustomPolicy]
+ """
+
+
+ return sync_detailed(
+ custom_policy_id=custom_policy_id,
+client=client,
+
+ ).parsed
+
+async def asyncio_detailed(
+ custom_policy_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, CustomPolicy]]:
+ """ This method retrieves the custom policy specified by the custom_policy_id path parameter.
+
+ Args:
+ custom_policy_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, CustomPolicy]]
+ """
+
+
+ kwargs = _get_kwargs(
+ custom_policy_id=custom_policy_id,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ custom_policy_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, CustomPolicy]]:
+ """ This method retrieves the custom policy specified by the custom_policy_id path parameter.
+
+ Args:
+ custom_policy_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, CustomPolicy]
+ """
+
+
+ return (await asyncio_detailed(
+ custom_policy_id=custom_policy_id,
+client=client,
+
+ )).parsed
diff --git a/ebay_client/generated/account/api/custom_policy/update_custom_policy.py b/ebay_client/generated/account/api/custom_policy/update_custom_policy.py
new file mode 100644
index 0000000..373dfcd
--- /dev/null
+++ b/ebay_client/generated/account/api/custom_policy/update_custom_policy.py
@@ -0,0 +1,159 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.custom_policy_request import CustomPolicyRequest
+from typing import cast
+
+
+
+def _get_kwargs(
+ custom_policy_id: str,
+ *,
+ body: CustomPolicyRequest,
+ content_type: str,
+
+) -> dict[str, Any]:
+ headers: dict[str, Any] = {}
+ headers["Content-Type"] = content_type
+
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "put",
+ "url": "/custom_policy/{custom_policy_id}".format(custom_policy_id=custom_policy_id,),
+ }
+
+ _kwargs["json"] = body.to_dict()
+
+
+ headers["Content-Type"] = "application/json"
+
+ _kwargs["headers"] = headers
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Any]:
+ if response.status_code == 400:
+ return None
+ if response.status_code == 500:
+ return None
+ if response.status_code == 204:
+ return None
+ if response.status_code == 404:
+ return None
+ if response.status_code == 409:
+ return None
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Any]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ custom_policy_id: str,
+ *,
+ client: AuthenticatedClient,
+ body: CustomPolicyRequest,
+ content_type: str,
+
+) -> Response[Any]:
+ """ This method updates an existing custom policy specified by the custom_policy_id path
+ parameter. Since this method overwrites the policy's name, label, and
+ description fields, always include the complete and current text of all three policy fields
+ in the request payload, even if they are not being updated.
For example, the value for the
+ label field is to be updated, but the name and description values will remain
+ unchanged. The existing name and description values, as they are defined in the
+ current policy, must also be passed in.
A successful policy update call returns an HTTP
+ status code of 204 No Content.
+
+ Args:
+ custom_policy_id (str):
+ content_type (str):
+ body (CustomPolicyRequest):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ custom_policy_id=custom_policy_id,
+body=body,
+content_type=content_type,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+
+async def asyncio_detailed(
+ custom_policy_id: str,
+ *,
+ client: AuthenticatedClient,
+ body: CustomPolicyRequest,
+ content_type: str,
+
+) -> Response[Any]:
+ """ This method updates an existing custom policy specified by the custom_policy_id path
+ parameter. Since this method overwrites the policy's name, label, and
+ description fields, always include the complete and current text of all three policy fields
+ in the request payload, even if they are not being updated.
For example, the value for the
+ label field is to be updated, but the name and description values will remain
+ unchanged. The existing name and description values, as they are defined in the
+ current policy, must also be passed in.
A successful policy update call returns an HTTP
+ status code of 204 No Content.
+
+ Args:
+ custom_policy_id (str):
+ content_type (str):
+ body (CustomPolicyRequest):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ custom_policy_id=custom_policy_id,
+body=body,
+content_type=content_type,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
diff --git a/ebay_client/generated/account/api/fulfillment_policy/__init__.py b/ebay_client/generated/account/api/fulfillment_policy/__init__.py
new file mode 100644
index 0000000..c9921b5
--- /dev/null
+++ b/ebay_client/generated/account/api/fulfillment_policy/__init__.py
@@ -0,0 +1 @@
+""" Contains endpoint functions for accessing the API """
diff --git a/ebay_client/generated/account/api/fulfillment_policy/create_fulfillment_policy.py b/ebay_client/generated/account/api/fulfillment_policy/create_fulfillment_policy.py
new file mode 100644
index 0000000..ebcf3be
--- /dev/null
+++ b/ebay_client/generated/account/api/fulfillment_policy/create_fulfillment_policy.py
@@ -0,0 +1,229 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.fulfillment_policy_request import FulfillmentPolicyRequest
+from ...models.set_fulfillment_policy_response import SetFulfillmentPolicyResponse
+from typing import cast
+
+
+
+def _get_kwargs(
+ *,
+ body: FulfillmentPolicyRequest,
+ content_type: str,
+
+) -> dict[str, Any]:
+ headers: dict[str, Any] = {}
+ headers["Content-Type"] = content_type
+
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "post",
+ "url": "/fulfillment_policy/",
+ }
+
+ _kwargs["json"] = body.to_dict()
+
+
+ headers["Content-Type"] = "application/json"
+
+ _kwargs["headers"] = headers
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, SetFulfillmentPolicyResponse]]:
+ if response.status_code == 201:
+ response_201 = SetFulfillmentPolicyResponse.from_dict(response.json())
+
+
+
+ return response_201
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, SetFulfillmentPolicyResponse]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ *,
+ client: AuthenticatedClient,
+ body: FulfillmentPolicyRequest,
+ content_type: str,
+
+) -> Response[Union[Any, SetFulfillmentPolicyResponse]]:
+ r""" This method creates a new fulfillment policy for an eBay marketplace where the policy encapsulates
+ seller's terms for fulfilling item purchases. Fulfillment policies include the shipment options that
+ the seller offers to buyers.
A successful request returns the getFulfillmentPolicy
+ URI to the new policy in the Location response header and the ID for the new policy is
+ returned in the response payload. Tip: For details on creating and
+ using the business policies supported by the Account API, see eBay business policies.
+
+ Args:
+ content_type (str):
+ body (FulfillmentPolicyRequest): This root container defines a seller's fulfillment policy
+ for a specific marketplace and category group. This type is used when creating or updating
+ a fulfillment business policy.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, SetFulfillmentPolicyResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ body=body,
+content_type=content_type,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ *,
+ client: AuthenticatedClient,
+ body: FulfillmentPolicyRequest,
+ content_type: str,
+
+) -> Optional[Union[Any, SetFulfillmentPolicyResponse]]:
+ r""" This method creates a new fulfillment policy for an eBay marketplace where the policy encapsulates
+ seller's terms for fulfilling item purchases. Fulfillment policies include the shipment options that
+ the seller offers to buyers.
A successful request returns the getFulfillmentPolicy
+ URI to the new policy in the Location response header and the ID for the new policy is
+ returned in the response payload. Tip: For details on creating and
+ using the business policies supported by the Account API, see eBay business policies.
+
+ Args:
+ content_type (str):
+ body (FulfillmentPolicyRequest): This root container defines a seller's fulfillment policy
+ for a specific marketplace and category group. This type is used when creating or updating
+ a fulfillment business policy.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, SetFulfillmentPolicyResponse]
+ """
+
+
+ return sync_detailed(
+ client=client,
+body=body,
+content_type=content_type,
+
+ ).parsed
+
+async def asyncio_detailed(
+ *,
+ client: AuthenticatedClient,
+ body: FulfillmentPolicyRequest,
+ content_type: str,
+
+) -> Response[Union[Any, SetFulfillmentPolicyResponse]]:
+ r""" This method creates a new fulfillment policy for an eBay marketplace where the policy encapsulates
+ seller's terms for fulfilling item purchases. Fulfillment policies include the shipment options that
+ the seller offers to buyers.
A successful request returns the getFulfillmentPolicy
+ URI to the new policy in the Location response header and the ID for the new policy is
+ returned in the response payload. Tip: For details on creating and
+ using the business policies supported by the Account API, see eBay business policies.
+
+ Args:
+ content_type (str):
+ body (FulfillmentPolicyRequest): This root container defines a seller's fulfillment policy
+ for a specific marketplace and category group. This type is used when creating or updating
+ a fulfillment business policy.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, SetFulfillmentPolicyResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ body=body,
+content_type=content_type,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ *,
+ client: AuthenticatedClient,
+ body: FulfillmentPolicyRequest,
+ content_type: str,
+
+) -> Optional[Union[Any, SetFulfillmentPolicyResponse]]:
+ r""" This method creates a new fulfillment policy for an eBay marketplace where the policy encapsulates
+ seller's terms for fulfilling item purchases. Fulfillment policies include the shipment options that
+ the seller offers to buyers.
A successful request returns the getFulfillmentPolicy
+ URI to the new policy in the Location response header and the ID for the new policy is
+ returned in the response payload. Tip: For details on creating and
+ using the business policies supported by the Account API, see eBay business policies.
+
+ Args:
+ content_type (str):
+ body (FulfillmentPolicyRequest): This root container defines a seller's fulfillment policy
+ for a specific marketplace and category group. This type is used when creating or updating
+ a fulfillment business policy.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, SetFulfillmentPolicyResponse]
+ """
+
+
+ return (await asyncio_detailed(
+ client=client,
+body=body,
+content_type=content_type,
+
+ )).parsed
diff --git a/ebay_client/generated/account/api/fulfillment_policy/delete_fulfillment_policy.py b/ebay_client/generated/account/api/fulfillment_policy/delete_fulfillment_policy.py
new file mode 100644
index 0000000..aeda488
--- /dev/null
+++ b/ebay_client/generated/account/api/fulfillment_policy/delete_fulfillment_policy.py
@@ -0,0 +1,122 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+
+
+
+def _get_kwargs(
+ fulfillment_policy_id: str,
+
+) -> dict[str, Any]:
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "delete",
+ "url": "/fulfillment_policy/{fulfillment_policy_id}".format(fulfillment_policy_id=fulfillment_policy_id,),
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Any]:
+ if response.status_code == 400:
+ return None
+ if response.status_code == 500:
+ return None
+ if response.status_code == 204:
+ return None
+ if response.status_code == 404:
+ return None
+ if response.status_code == 409:
+ return None
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Any]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ fulfillment_policy_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Any]:
+ """ This method deletes a fulfillment policy. Supply the ID of the policy you want to delete in the
+ fulfillmentPolicyId path parameter.
+
+ Args:
+ fulfillment_policy_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ fulfillment_policy_id=fulfillment_policy_id,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+
+async def asyncio_detailed(
+ fulfillment_policy_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Any]:
+ """ This method deletes a fulfillment policy. Supply the ID of the policy you want to delete in the
+ fulfillmentPolicyId path parameter.
+
+ Args:
+ fulfillment_policy_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ fulfillment_policy_id=fulfillment_policy_id,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
diff --git a/ebay_client/generated/account/api/fulfillment_policy/get_fulfillment_policies.py b/ebay_client/generated/account/api/fulfillment_policy/get_fulfillment_policies.py
new file mode 100644
index 0000000..b5144f9
--- /dev/null
+++ b/ebay_client/generated/account/api/fulfillment_policy/get_fulfillment_policies.py
@@ -0,0 +1,206 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.fulfillment_policy_response import FulfillmentPolicyResponse
+from ...types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+
+
+def _get_kwargs(
+ *,
+ marketplace_id: str,
+ content_language: Union[Unset, str] = UNSET,
+
+) -> dict[str, Any]:
+ headers: dict[str, Any] = {}
+ if not isinstance(content_language, Unset):
+ headers["Content-Language"] = content_language
+
+
+
+
+
+ params: dict[str, Any] = {}
+
+ params["marketplace_id"] = marketplace_id
+
+
+ params = {k: v for k, v in params.items() if v is not UNSET and v is not None}
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/fulfillment_policy",
+ "params": params,
+ }
+
+
+ _kwargs["headers"] = headers
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, FulfillmentPolicyResponse]]:
+ if response.status_code == 200:
+ response_200 = FulfillmentPolicyResponse.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, FulfillmentPolicyResponse]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ *,
+ client: AuthenticatedClient,
+ marketplace_id: str,
+ content_language: Union[Unset, str] = UNSET,
+
+) -> Response[Union[Any, FulfillmentPolicyResponse]]:
+ """ This method retrieves all the fulfillment policies configured for the marketplace you specify using
+ the marketplace_id query parameter.
+
+ Args:
+ marketplace_id (str):
+ content_language (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, FulfillmentPolicyResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ marketplace_id=marketplace_id,
+content_language=content_language,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ *,
+ client: AuthenticatedClient,
+ marketplace_id: str,
+ content_language: Union[Unset, str] = UNSET,
+
+) -> Optional[Union[Any, FulfillmentPolicyResponse]]:
+ """ This method retrieves all the fulfillment policies configured for the marketplace you specify using
+ the marketplace_id query parameter.
+
+ Args:
+ marketplace_id (str):
+ content_language (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, FulfillmentPolicyResponse]
+ """
+
+
+ return sync_detailed(
+ client=client,
+marketplace_id=marketplace_id,
+content_language=content_language,
+
+ ).parsed
+
+async def asyncio_detailed(
+ *,
+ client: AuthenticatedClient,
+ marketplace_id: str,
+ content_language: Union[Unset, str] = UNSET,
+
+) -> Response[Union[Any, FulfillmentPolicyResponse]]:
+ """ This method retrieves all the fulfillment policies configured for the marketplace you specify using
+ the marketplace_id query parameter.
+
+ Args:
+ marketplace_id (str):
+ content_language (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, FulfillmentPolicyResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ marketplace_id=marketplace_id,
+content_language=content_language,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ *,
+ client: AuthenticatedClient,
+ marketplace_id: str,
+ content_language: Union[Unset, str] = UNSET,
+
+) -> Optional[Union[Any, FulfillmentPolicyResponse]]:
+ """ This method retrieves all the fulfillment policies configured for the marketplace you specify using
+ the marketplace_id query parameter.
+
+ Args:
+ marketplace_id (str):
+ content_language (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, FulfillmentPolicyResponse]
+ """
+
+
+ return (await asyncio_detailed(
+ client=client,
+marketplace_id=marketplace_id,
+content_language=content_language,
+
+ )).parsed
diff --git a/ebay_client/generated/account/api/fulfillment_policy/get_fulfillment_policy.py b/ebay_client/generated/account/api/fulfillment_policy/get_fulfillment_policy.py
new file mode 100644
index 0000000..5deb939
--- /dev/null
+++ b/ebay_client/generated/account/api/fulfillment_policy/get_fulfillment_policy.py
@@ -0,0 +1,181 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.fulfillment_policy import FulfillmentPolicy
+from typing import cast
+
+
+
+def _get_kwargs(
+ fulfillment_policy_id: str,
+
+) -> dict[str, Any]:
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/fulfillment_policy/{fulfillment_policy_id}".format(fulfillment_policy_id=fulfillment_policy_id,),
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, FulfillmentPolicy]]:
+ if response.status_code == 200:
+ response_200 = FulfillmentPolicy.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 404:
+ response_404 = cast(Any, None)
+ return response_404
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, FulfillmentPolicy]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ fulfillment_policy_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, FulfillmentPolicy]]:
+ """ This method retrieves the complete details of a fulfillment policy. Supply the ID of the policy you
+ want to retrieve using the fulfillmentPolicyId path parameter.
+
+ Args:
+ fulfillment_policy_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, FulfillmentPolicy]]
+ """
+
+
+ kwargs = _get_kwargs(
+ fulfillment_policy_id=fulfillment_policy_id,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ fulfillment_policy_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, FulfillmentPolicy]]:
+ """ This method retrieves the complete details of a fulfillment policy. Supply the ID of the policy you
+ want to retrieve using the fulfillmentPolicyId path parameter.
+
+ Args:
+ fulfillment_policy_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, FulfillmentPolicy]
+ """
+
+
+ return sync_detailed(
+ fulfillment_policy_id=fulfillment_policy_id,
+client=client,
+
+ ).parsed
+
+async def asyncio_detailed(
+ fulfillment_policy_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, FulfillmentPolicy]]:
+ """ This method retrieves the complete details of a fulfillment policy. Supply the ID of the policy you
+ want to retrieve using the fulfillmentPolicyId path parameter.
+
+ Args:
+ fulfillment_policy_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, FulfillmentPolicy]]
+ """
+
+
+ kwargs = _get_kwargs(
+ fulfillment_policy_id=fulfillment_policy_id,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ fulfillment_policy_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, FulfillmentPolicy]]:
+ """ This method retrieves the complete details of a fulfillment policy. Supply the ID of the policy you
+ want to retrieve using the fulfillmentPolicyId path parameter.
+
+ Args:
+ fulfillment_policy_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, FulfillmentPolicy]
+ """
+
+
+ return (await asyncio_detailed(
+ fulfillment_policy_id=fulfillment_policy_id,
+client=client,
+
+ )).parsed
diff --git a/ebay_client/generated/account/api/fulfillment_policy/get_fulfillment_policy_by_name.py b/ebay_client/generated/account/api/fulfillment_policy/get_fulfillment_policy_by_name.py
new file mode 100644
index 0000000..c77c24a
--- /dev/null
+++ b/ebay_client/generated/account/api/fulfillment_policy/get_fulfillment_policy_by_name.py
@@ -0,0 +1,221 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.fulfillment_policy import FulfillmentPolicy
+from ...types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+
+
+def _get_kwargs(
+ *,
+ marketplace_id: str,
+ name: str,
+ content_language: Union[Unset, str] = UNSET,
+
+) -> dict[str, Any]:
+ headers: dict[str, Any] = {}
+ if not isinstance(content_language, Unset):
+ headers["Content-Language"] = content_language
+
+
+
+
+
+ params: dict[str, Any] = {}
+
+ params["marketplace_id"] = marketplace_id
+
+ params["name"] = name
+
+
+ params = {k: v for k, v in params.items() if v is not UNSET and v is not None}
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/fulfillment_policy/get_by_policy_name",
+ "params": params,
+ }
+
+
+ _kwargs["headers"] = headers
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, FulfillmentPolicy]]:
+ if response.status_code == 200:
+ response_200 = FulfillmentPolicy.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, FulfillmentPolicy]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ *,
+ client: AuthenticatedClient,
+ marketplace_id: str,
+ name: str,
+ content_language: Union[Unset, str] = UNSET,
+
+) -> Response[Union[Any, FulfillmentPolicy]]:
+ """ This method retrieves the details for a specific fulfillment policy. In the request, supply both the
+ policy name and its associated marketplace_id as query parameters.
+
+ Args:
+ marketplace_id (str):
+ name (str):
+ content_language (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, FulfillmentPolicy]]
+ """
+
+
+ kwargs = _get_kwargs(
+ marketplace_id=marketplace_id,
+name=name,
+content_language=content_language,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ *,
+ client: AuthenticatedClient,
+ marketplace_id: str,
+ name: str,
+ content_language: Union[Unset, str] = UNSET,
+
+) -> Optional[Union[Any, FulfillmentPolicy]]:
+ """ This method retrieves the details for a specific fulfillment policy. In the request, supply both the
+ policy name and its associated marketplace_id as query parameters.
+
+ Args:
+ marketplace_id (str):
+ name (str):
+ content_language (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, FulfillmentPolicy]
+ """
+
+
+ return sync_detailed(
+ client=client,
+marketplace_id=marketplace_id,
+name=name,
+content_language=content_language,
+
+ ).parsed
+
+async def asyncio_detailed(
+ *,
+ client: AuthenticatedClient,
+ marketplace_id: str,
+ name: str,
+ content_language: Union[Unset, str] = UNSET,
+
+) -> Response[Union[Any, FulfillmentPolicy]]:
+ """ This method retrieves the details for a specific fulfillment policy. In the request, supply both the
+ policy name and its associated marketplace_id as query parameters.
+
+ Args:
+ marketplace_id (str):
+ name (str):
+ content_language (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, FulfillmentPolicy]]
+ """
+
+
+ kwargs = _get_kwargs(
+ marketplace_id=marketplace_id,
+name=name,
+content_language=content_language,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ *,
+ client: AuthenticatedClient,
+ marketplace_id: str,
+ name: str,
+ content_language: Union[Unset, str] = UNSET,
+
+) -> Optional[Union[Any, FulfillmentPolicy]]:
+ """ This method retrieves the details for a specific fulfillment policy. In the request, supply both the
+ policy name and its associated marketplace_id as query parameters.
+
+ Args:
+ marketplace_id (str):
+ name (str):
+ content_language (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, FulfillmentPolicy]
+ """
+
+
+ return (await asyncio_detailed(
+ client=client,
+marketplace_id=marketplace_id,
+name=name,
+content_language=content_language,
+
+ )).parsed
diff --git a/ebay_client/generated/account/api/fulfillment_policy/update_fulfillment_policy.py b/ebay_client/generated/account/api/fulfillment_policy/update_fulfillment_policy.py
new file mode 100644
index 0000000..9992eeb
--- /dev/null
+++ b/ebay_client/generated/account/api/fulfillment_policy/update_fulfillment_policy.py
@@ -0,0 +1,233 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.fulfillment_policy_request import FulfillmentPolicyRequest
+from ...models.set_fulfillment_policy_response import SetFulfillmentPolicyResponse
+from typing import cast
+
+
+
+def _get_kwargs(
+ fulfillment_policy_id: str,
+ *,
+ body: FulfillmentPolicyRequest,
+ content_type: str,
+
+) -> dict[str, Any]:
+ headers: dict[str, Any] = {}
+ headers["Content-Type"] = content_type
+
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "put",
+ "url": "/fulfillment_policy/{fulfillment_policy_id}".format(fulfillment_policy_id=fulfillment_policy_id,),
+ }
+
+ _kwargs["json"] = body.to_dict()
+
+
+ headers["Content-Type"] = "application/json"
+
+ _kwargs["headers"] = headers
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, SetFulfillmentPolicyResponse]]:
+ if response.status_code == 200:
+ response_200 = SetFulfillmentPolicyResponse.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 404:
+ response_404 = cast(Any, None)
+ return response_404
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, SetFulfillmentPolicyResponse]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ fulfillment_policy_id: str,
+ *,
+ client: AuthenticatedClient,
+ body: FulfillmentPolicyRequest,
+ content_type: str,
+
+) -> Response[Union[Any, SetFulfillmentPolicyResponse]]:
+ """ This method updates an existing fulfillment policy. Specify the policy you want to update using the
+ fulfillment_policy_id path parameter. Supply a complete policy payload with the updates you
+ want to make; this call overwrites the existing policy with the new details specified in the
+ payload.
+
+ Args:
+ fulfillment_policy_id (str):
+ content_type (str):
+ body (FulfillmentPolicyRequest): This root container defines a seller's fulfillment policy
+ for a specific marketplace and category group. This type is used when creating or updating
+ a fulfillment business policy.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, SetFulfillmentPolicyResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ fulfillment_policy_id=fulfillment_policy_id,
+body=body,
+content_type=content_type,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ fulfillment_policy_id: str,
+ *,
+ client: AuthenticatedClient,
+ body: FulfillmentPolicyRequest,
+ content_type: str,
+
+) -> Optional[Union[Any, SetFulfillmentPolicyResponse]]:
+ """ This method updates an existing fulfillment policy. Specify the policy you want to update using the
+ fulfillment_policy_id path parameter. Supply a complete policy payload with the updates you
+ want to make; this call overwrites the existing policy with the new details specified in the
+ payload.
+
+ Args:
+ fulfillment_policy_id (str):
+ content_type (str):
+ body (FulfillmentPolicyRequest): This root container defines a seller's fulfillment policy
+ for a specific marketplace and category group. This type is used when creating or updating
+ a fulfillment business policy.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, SetFulfillmentPolicyResponse]
+ """
+
+
+ return sync_detailed(
+ fulfillment_policy_id=fulfillment_policy_id,
+client=client,
+body=body,
+content_type=content_type,
+
+ ).parsed
+
+async def asyncio_detailed(
+ fulfillment_policy_id: str,
+ *,
+ client: AuthenticatedClient,
+ body: FulfillmentPolicyRequest,
+ content_type: str,
+
+) -> Response[Union[Any, SetFulfillmentPolicyResponse]]:
+ """ This method updates an existing fulfillment policy. Specify the policy you want to update using the
+ fulfillment_policy_id path parameter. Supply a complete policy payload with the updates you
+ want to make; this call overwrites the existing policy with the new details specified in the
+ payload.
+
+ Args:
+ fulfillment_policy_id (str):
+ content_type (str):
+ body (FulfillmentPolicyRequest): This root container defines a seller's fulfillment policy
+ for a specific marketplace and category group. This type is used when creating or updating
+ a fulfillment business policy.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, SetFulfillmentPolicyResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ fulfillment_policy_id=fulfillment_policy_id,
+body=body,
+content_type=content_type,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ fulfillment_policy_id: str,
+ *,
+ client: AuthenticatedClient,
+ body: FulfillmentPolicyRequest,
+ content_type: str,
+
+) -> Optional[Union[Any, SetFulfillmentPolicyResponse]]:
+ """ This method updates an existing fulfillment policy. Specify the policy you want to update using the
+ fulfillment_policy_id path parameter. Supply a complete policy payload with the updates you
+ want to make; this call overwrites the existing policy with the new details specified in the
+ payload.
+
+ Args:
+ fulfillment_policy_id (str):
+ content_type (str):
+ body (FulfillmentPolicyRequest): This root container defines a seller's fulfillment policy
+ for a specific marketplace and category group. This type is used when creating or updating
+ a fulfillment business policy.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, SetFulfillmentPolicyResponse]
+ """
+
+
+ return (await asyncio_detailed(
+ fulfillment_policy_id=fulfillment_policy_id,
+client=client,
+body=body,
+content_type=content_type,
+
+ )).parsed
diff --git a/ebay_client/generated/account/api/kyc/__init__.py b/ebay_client/generated/account/api/kyc/__init__.py
new file mode 100644
index 0000000..c9921b5
--- /dev/null
+++ b/ebay_client/generated/account/api/kyc/__init__.py
@@ -0,0 +1 @@
+""" Contains endpoint functions for accessing the API """
diff --git a/ebay_client/generated/account/api/kyc/get_kyc.py b/ebay_client/generated/account/api/kyc/get_kyc.py
new file mode 100644
index 0000000..bb6873a
--- /dev/null
+++ b/ebay_client/generated/account/api/kyc/get_kyc.py
@@ -0,0 +1,168 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.kyc_response import KycResponse
+from typing import cast
+
+
+
+def _get_kwargs(
+
+) -> dict[str, Any]:
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/kyc",
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, KycResponse]]:
+ if response.status_code == 200:
+ response_200 = KycResponse.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 204:
+ response_204 = cast(Any, None)
+ return response_204
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, KycResponse]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, KycResponse]]:
+ r""" Note: This method was originally created to see which onboarding
+ requirements were still pending for sellers being onboarded for eBay managed payments, but now that
+ all seller accounts are onboarded globally, this method should now just return an empty payload with
+ a 204 No Content HTTP status code.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, KycResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, KycResponse]]:
+ r""" Note: This method was originally created to see which onboarding
+ requirements were still pending for sellers being onboarded for eBay managed payments, but now that
+ all seller accounts are onboarded globally, this method should now just return an empty payload with
+ a 204 No Content HTTP status code.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, KycResponse]
+ """
+
+
+ return sync_detailed(
+ client=client,
+
+ ).parsed
+
+async def asyncio_detailed(
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, KycResponse]]:
+ r""" Note: This method was originally created to see which onboarding
+ requirements were still pending for sellers being onboarded for eBay managed payments, but now that
+ all seller accounts are onboarded globally, this method should now just return an empty payload with
+ a 204 No Content HTTP status code.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, KycResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, KycResponse]]:
+ r""" Note: This method was originally created to see which onboarding
+ requirements were still pending for sellers being onboarded for eBay managed payments, but now that
+ all seller accounts are onboarded globally, this method should now just return an empty payload with
+ a 204 No Content HTTP status code.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, KycResponse]
+ """
+
+
+ return (await asyncio_detailed(
+ client=client,
+
+ )).parsed
diff --git a/ebay_client/generated/account/api/onboarding/__init__.py b/ebay_client/generated/account/api/onboarding/__init__.py
new file mode 100644
index 0000000..c9921b5
--- /dev/null
+++ b/ebay_client/generated/account/api/onboarding/__init__.py
@@ -0,0 +1 @@
+""" Contains endpoint functions for accessing the API """
diff --git a/ebay_client/generated/account/api/onboarding/get_payments_program_onboarding.py b/ebay_client/generated/account/api/onboarding/get_payments_program_onboarding.py
new file mode 100644
index 0000000..58a6784
--- /dev/null
+++ b/ebay_client/generated/account/api/onboarding/get_payments_program_onboarding.py
@@ -0,0 +1,202 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.payments_program_onboarding_response import PaymentsProgramOnboardingResponse
+from typing import cast
+
+
+
+def _get_kwargs(
+ marketplace_id: str,
+ payments_program_type: str,
+
+) -> dict[str, Any]:
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/payments_program/{marketplace_id}/{payments_program_type}/onboarding".format(marketplace_id=marketplace_id,payments_program_type=payments_program_type,),
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, PaymentsProgramOnboardingResponse]]:
+ if response.status_code == 200:
+ response_200 = PaymentsProgramOnboardingResponse.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 404:
+ response_404 = cast(Any, None)
+ return response_404
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, PaymentsProgramOnboardingResponse]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ marketplace_id: str,
+ payments_program_type: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, PaymentsProgramOnboardingResponse]]:
+ r""" Note: This method is no longer applicable, as all seller accounts
+ globally have been enabled for the new eBay payment and checkout flow.
This method
+ retrieves a seller's onboarding status for a payments program for a specified marketplace. The
+ overall onboarding status of the seller and the status of each onboarding step is returned.
+
+ Args:
+ marketplace_id (str):
+ payments_program_type (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, PaymentsProgramOnboardingResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ marketplace_id=marketplace_id,
+payments_program_type=payments_program_type,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ marketplace_id: str,
+ payments_program_type: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, PaymentsProgramOnboardingResponse]]:
+ r""" Note: This method is no longer applicable, as all seller accounts
+ globally have been enabled for the new eBay payment and checkout flow.
This method
+ retrieves a seller's onboarding status for a payments program for a specified marketplace. The
+ overall onboarding status of the seller and the status of each onboarding step is returned.
+
+ Args:
+ marketplace_id (str):
+ payments_program_type (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, PaymentsProgramOnboardingResponse]
+ """
+
+
+ return sync_detailed(
+ marketplace_id=marketplace_id,
+payments_program_type=payments_program_type,
+client=client,
+
+ ).parsed
+
+async def asyncio_detailed(
+ marketplace_id: str,
+ payments_program_type: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, PaymentsProgramOnboardingResponse]]:
+ r""" Note: This method is no longer applicable, as all seller accounts
+ globally have been enabled for the new eBay payment and checkout flow.
This method
+ retrieves a seller's onboarding status for a payments program for a specified marketplace. The
+ overall onboarding status of the seller and the status of each onboarding step is returned.
+
+ Args:
+ marketplace_id (str):
+ payments_program_type (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, PaymentsProgramOnboardingResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ marketplace_id=marketplace_id,
+payments_program_type=payments_program_type,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ marketplace_id: str,
+ payments_program_type: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, PaymentsProgramOnboardingResponse]]:
+ r""" Note: This method is no longer applicable, as all seller accounts
+ globally have been enabled for the new eBay payment and checkout flow.
This method
+ retrieves a seller's onboarding status for a payments program for a specified marketplace. The
+ overall onboarding status of the seller and the status of each onboarding step is returned.
+
+ Args:
+ marketplace_id (str):
+ payments_program_type (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, PaymentsProgramOnboardingResponse]
+ """
+
+
+ return (await asyncio_detailed(
+ marketplace_id=marketplace_id,
+payments_program_type=payments_program_type,
+client=client,
+
+ )).parsed
diff --git a/ebay_client/generated/account/api/payment_policy/__init__.py b/ebay_client/generated/account/api/payment_policy/__init__.py
new file mode 100644
index 0000000..c9921b5
--- /dev/null
+++ b/ebay_client/generated/account/api/payment_policy/__init__.py
@@ -0,0 +1 @@
+""" Contains endpoint functions for accessing the API """
diff --git a/ebay_client/generated/account/api/payment_policy/create_payment_policy.py b/ebay_client/generated/account/api/payment_policy/create_payment_policy.py
new file mode 100644
index 0000000..546021b
--- /dev/null
+++ b/ebay_client/generated/account/api/payment_policy/create_payment_policy.py
@@ -0,0 +1,225 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.payment_policy_request import PaymentPolicyRequest
+from ...models.set_payment_policy_response import SetPaymentPolicyResponse
+from typing import cast
+
+
+
+def _get_kwargs(
+ *,
+ body: PaymentPolicyRequest,
+ content_type: str,
+
+) -> dict[str, Any]:
+ headers: dict[str, Any] = {}
+ headers["Content-Type"] = content_type
+
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "post",
+ "url": "/payment_policy",
+ }
+
+ _kwargs["json"] = body.to_dict()
+
+
+ headers["Content-Type"] = "application/json"
+
+ _kwargs["headers"] = headers
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, SetPaymentPolicyResponse]]:
+ if response.status_code == 201:
+ response_201 = SetPaymentPolicyResponse.from_dict(response.json())
+
+
+
+ return response_201
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, SetPaymentPolicyResponse]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ *,
+ client: AuthenticatedClient,
+ body: PaymentPolicyRequest,
+ content_type: str,
+
+) -> Response[Union[Any, SetPaymentPolicyResponse]]:
+ r""" This method creates a new payment policy where the policy encapsulates seller's terms for order
+ payments.
A successful request returns the getPaymentPolicy URI to the new policy in
+ the Location response header and the ID for the new policy is returned in the response
+ payload. Tip: For details on creating and using the business policies
+ supported by the Account API, see eBay business policies.
+
+ Args:
+ content_type (str):
+ body (PaymentPolicyRequest): This root container defines a seller's payment business
+ policy for a specific marketplace and category group. This type is used when creating or
+ updating a payment business policy.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, SetPaymentPolicyResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ body=body,
+content_type=content_type,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ *,
+ client: AuthenticatedClient,
+ body: PaymentPolicyRequest,
+ content_type: str,
+
+) -> Optional[Union[Any, SetPaymentPolicyResponse]]:
+ r""" This method creates a new payment policy where the policy encapsulates seller's terms for order
+ payments.
A successful request returns the getPaymentPolicy URI to the new policy in
+ the Location response header and the ID for the new policy is returned in the response
+ payload. Tip: For details on creating and using the business policies
+ supported by the Account API, see eBay business policies.
+
+ Args:
+ content_type (str):
+ body (PaymentPolicyRequest): This root container defines a seller's payment business
+ policy for a specific marketplace and category group. This type is used when creating or
+ updating a payment business policy.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, SetPaymentPolicyResponse]
+ """
+
+
+ return sync_detailed(
+ client=client,
+body=body,
+content_type=content_type,
+
+ ).parsed
+
+async def asyncio_detailed(
+ *,
+ client: AuthenticatedClient,
+ body: PaymentPolicyRequest,
+ content_type: str,
+
+) -> Response[Union[Any, SetPaymentPolicyResponse]]:
+ r""" This method creates a new payment policy where the policy encapsulates seller's terms for order
+ payments.
A successful request returns the getPaymentPolicy URI to the new policy in
+ the Location response header and the ID for the new policy is returned in the response
+ payload. Tip: For details on creating and using the business policies
+ supported by the Account API, see eBay business policies.
+
+ Args:
+ content_type (str):
+ body (PaymentPolicyRequest): This root container defines a seller's payment business
+ policy for a specific marketplace and category group. This type is used when creating or
+ updating a payment business policy.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, SetPaymentPolicyResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ body=body,
+content_type=content_type,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ *,
+ client: AuthenticatedClient,
+ body: PaymentPolicyRequest,
+ content_type: str,
+
+) -> Optional[Union[Any, SetPaymentPolicyResponse]]:
+ r""" This method creates a new payment policy where the policy encapsulates seller's terms for order
+ payments.
A successful request returns the getPaymentPolicy URI to the new policy in
+ the Location response header and the ID for the new policy is returned in the response
+ payload. Tip: For details on creating and using the business policies
+ supported by the Account API, see eBay business policies.
+
+ Args:
+ content_type (str):
+ body (PaymentPolicyRequest): This root container defines a seller's payment business
+ policy for a specific marketplace and category group. This type is used when creating or
+ updating a payment business policy.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, SetPaymentPolicyResponse]
+ """
+
+
+ return (await asyncio_detailed(
+ client=client,
+body=body,
+content_type=content_type,
+
+ )).parsed
diff --git a/ebay_client/generated/account/api/payment_policy/delete_payment_policy.py b/ebay_client/generated/account/api/payment_policy/delete_payment_policy.py
new file mode 100644
index 0000000..36fb678
--- /dev/null
+++ b/ebay_client/generated/account/api/payment_policy/delete_payment_policy.py
@@ -0,0 +1,122 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+
+
+
+def _get_kwargs(
+ payment_policy_id: str,
+
+) -> dict[str, Any]:
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "delete",
+ "url": "/payment_policy/{payment_policy_id}".format(payment_policy_id=payment_policy_id,),
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Any]:
+ if response.status_code == 400:
+ return None
+ if response.status_code == 500:
+ return None
+ if response.status_code == 204:
+ return None
+ if response.status_code == 404:
+ return None
+ if response.status_code == 409:
+ return None
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Any]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ payment_policy_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Any]:
+ """ This method deletes a payment policy. Supply the ID of the policy you want to delete in the
+ paymentPolicyId path parameter.
+
+ Args:
+ payment_policy_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ payment_policy_id=payment_policy_id,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+
+async def asyncio_detailed(
+ payment_policy_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Any]:
+ """ This method deletes a payment policy. Supply the ID of the policy you want to delete in the
+ paymentPolicyId path parameter.
+
+ Args:
+ payment_policy_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ payment_policy_id=payment_policy_id,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
diff --git a/ebay_client/generated/account/api/payment_policy/get_payment_policies.py b/ebay_client/generated/account/api/payment_policy/get_payment_policies.py
new file mode 100644
index 0000000..9a63e0e
--- /dev/null
+++ b/ebay_client/generated/account/api/payment_policy/get_payment_policies.py
@@ -0,0 +1,206 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.payment_policy_response import PaymentPolicyResponse
+from ...types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+
+
+def _get_kwargs(
+ *,
+ marketplace_id: str,
+ content_language: Union[Unset, str] = UNSET,
+
+) -> dict[str, Any]:
+ headers: dict[str, Any] = {}
+ if not isinstance(content_language, Unset):
+ headers["Content-Language"] = content_language
+
+
+
+
+
+ params: dict[str, Any] = {}
+
+ params["marketplace_id"] = marketplace_id
+
+
+ params = {k: v for k, v in params.items() if v is not UNSET and v is not None}
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/payment_policy",
+ "params": params,
+ }
+
+
+ _kwargs["headers"] = headers
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, PaymentPolicyResponse]]:
+ if response.status_code == 200:
+ response_200 = PaymentPolicyResponse.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, PaymentPolicyResponse]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ *,
+ client: AuthenticatedClient,
+ marketplace_id: str,
+ content_language: Union[Unset, str] = UNSET,
+
+) -> Response[Union[Any, PaymentPolicyResponse]]:
+ """ This method retrieves all the payment business policies configured for the marketplace you specify
+ using the marketplace_id query parameter.
+
+ Args:
+ marketplace_id (str):
+ content_language (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, PaymentPolicyResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ marketplace_id=marketplace_id,
+content_language=content_language,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ *,
+ client: AuthenticatedClient,
+ marketplace_id: str,
+ content_language: Union[Unset, str] = UNSET,
+
+) -> Optional[Union[Any, PaymentPolicyResponse]]:
+ """ This method retrieves all the payment business policies configured for the marketplace you specify
+ using the marketplace_id query parameter.
+
+ Args:
+ marketplace_id (str):
+ content_language (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, PaymentPolicyResponse]
+ """
+
+
+ return sync_detailed(
+ client=client,
+marketplace_id=marketplace_id,
+content_language=content_language,
+
+ ).parsed
+
+async def asyncio_detailed(
+ *,
+ client: AuthenticatedClient,
+ marketplace_id: str,
+ content_language: Union[Unset, str] = UNSET,
+
+) -> Response[Union[Any, PaymentPolicyResponse]]:
+ """ This method retrieves all the payment business policies configured for the marketplace you specify
+ using the marketplace_id query parameter.
+
+ Args:
+ marketplace_id (str):
+ content_language (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, PaymentPolicyResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ marketplace_id=marketplace_id,
+content_language=content_language,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ *,
+ client: AuthenticatedClient,
+ marketplace_id: str,
+ content_language: Union[Unset, str] = UNSET,
+
+) -> Optional[Union[Any, PaymentPolicyResponse]]:
+ """ This method retrieves all the payment business policies configured for the marketplace you specify
+ using the marketplace_id query parameter.
+
+ Args:
+ marketplace_id (str):
+ content_language (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, PaymentPolicyResponse]
+ """
+
+
+ return (await asyncio_detailed(
+ client=client,
+marketplace_id=marketplace_id,
+content_language=content_language,
+
+ )).parsed
diff --git a/ebay_client/generated/account/api/payment_policy/get_payment_policy.py b/ebay_client/generated/account/api/payment_policy/get_payment_policy.py
new file mode 100644
index 0000000..5cb0350
--- /dev/null
+++ b/ebay_client/generated/account/api/payment_policy/get_payment_policy.py
@@ -0,0 +1,181 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.payment_policy import PaymentPolicy
+from typing import cast
+
+
+
+def _get_kwargs(
+ payment_policy_id: str,
+
+) -> dict[str, Any]:
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/payment_policy/{payment_policy_id}".format(payment_policy_id=payment_policy_id,),
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, PaymentPolicy]]:
+ if response.status_code == 200:
+ response_200 = PaymentPolicy.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 404:
+ response_404 = cast(Any, None)
+ return response_404
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, PaymentPolicy]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ payment_policy_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, PaymentPolicy]]:
+ """ This method retrieves the complete details of a payment policy. Supply the ID of the policy you want
+ to retrieve using the paymentPolicyId path parameter.
+
+ Args:
+ payment_policy_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, PaymentPolicy]]
+ """
+
+
+ kwargs = _get_kwargs(
+ payment_policy_id=payment_policy_id,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ payment_policy_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, PaymentPolicy]]:
+ """ This method retrieves the complete details of a payment policy. Supply the ID of the policy you want
+ to retrieve using the paymentPolicyId path parameter.
+
+ Args:
+ payment_policy_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, PaymentPolicy]
+ """
+
+
+ return sync_detailed(
+ payment_policy_id=payment_policy_id,
+client=client,
+
+ ).parsed
+
+async def asyncio_detailed(
+ payment_policy_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, PaymentPolicy]]:
+ """ This method retrieves the complete details of a payment policy. Supply the ID of the policy you want
+ to retrieve using the paymentPolicyId path parameter.
+
+ Args:
+ payment_policy_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, PaymentPolicy]]
+ """
+
+
+ kwargs = _get_kwargs(
+ payment_policy_id=payment_policy_id,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ payment_policy_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, PaymentPolicy]]:
+ """ This method retrieves the complete details of a payment policy. Supply the ID of the policy you want
+ to retrieve using the paymentPolicyId path parameter.
+
+ Args:
+ payment_policy_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, PaymentPolicy]
+ """
+
+
+ return (await asyncio_detailed(
+ payment_policy_id=payment_policy_id,
+client=client,
+
+ )).parsed
diff --git a/ebay_client/generated/account/api/payment_policy/get_payment_policy_by_name.py b/ebay_client/generated/account/api/payment_policy/get_payment_policy_by_name.py
new file mode 100644
index 0000000..254cd34
--- /dev/null
+++ b/ebay_client/generated/account/api/payment_policy/get_payment_policy_by_name.py
@@ -0,0 +1,221 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.payment_policy import PaymentPolicy
+from ...types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+
+
+def _get_kwargs(
+ *,
+ marketplace_id: str,
+ name: str,
+ content_language: Union[Unset, str] = UNSET,
+
+) -> dict[str, Any]:
+ headers: dict[str, Any] = {}
+ if not isinstance(content_language, Unset):
+ headers["Content-Language"] = content_language
+
+
+
+
+
+ params: dict[str, Any] = {}
+
+ params["marketplace_id"] = marketplace_id
+
+ params["name"] = name
+
+
+ params = {k: v for k, v in params.items() if v is not UNSET and v is not None}
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/payment_policy/get_by_policy_name",
+ "params": params,
+ }
+
+
+ _kwargs["headers"] = headers
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, PaymentPolicy]]:
+ if response.status_code == 200:
+ response_200 = PaymentPolicy.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, PaymentPolicy]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ *,
+ client: AuthenticatedClient,
+ marketplace_id: str,
+ name: str,
+ content_language: Union[Unset, str] = UNSET,
+
+) -> Response[Union[Any, PaymentPolicy]]:
+ """ This method retrieves the details of a specific payment policy. Supply both the policy
+ name and its associated marketplace_id in the request query parameters.
+
+ Args:
+ marketplace_id (str):
+ name (str):
+ content_language (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, PaymentPolicy]]
+ """
+
+
+ kwargs = _get_kwargs(
+ marketplace_id=marketplace_id,
+name=name,
+content_language=content_language,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ *,
+ client: AuthenticatedClient,
+ marketplace_id: str,
+ name: str,
+ content_language: Union[Unset, str] = UNSET,
+
+) -> Optional[Union[Any, PaymentPolicy]]:
+ """ This method retrieves the details of a specific payment policy. Supply both the policy
+ name and its associated marketplace_id in the request query parameters.
+
+ Args:
+ marketplace_id (str):
+ name (str):
+ content_language (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, PaymentPolicy]
+ """
+
+
+ return sync_detailed(
+ client=client,
+marketplace_id=marketplace_id,
+name=name,
+content_language=content_language,
+
+ ).parsed
+
+async def asyncio_detailed(
+ *,
+ client: AuthenticatedClient,
+ marketplace_id: str,
+ name: str,
+ content_language: Union[Unset, str] = UNSET,
+
+) -> Response[Union[Any, PaymentPolicy]]:
+ """ This method retrieves the details of a specific payment policy. Supply both the policy
+ name and its associated marketplace_id in the request query parameters.
+
+ Args:
+ marketplace_id (str):
+ name (str):
+ content_language (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, PaymentPolicy]]
+ """
+
+
+ kwargs = _get_kwargs(
+ marketplace_id=marketplace_id,
+name=name,
+content_language=content_language,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ *,
+ client: AuthenticatedClient,
+ marketplace_id: str,
+ name: str,
+ content_language: Union[Unset, str] = UNSET,
+
+) -> Optional[Union[Any, PaymentPolicy]]:
+ """ This method retrieves the details of a specific payment policy. Supply both the policy
+ name and its associated marketplace_id in the request query parameters.
+
+ Args:
+ marketplace_id (str):
+ name (str):
+ content_language (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, PaymentPolicy]
+ """
+
+
+ return (await asyncio_detailed(
+ client=client,
+marketplace_id=marketplace_id,
+name=name,
+content_language=content_language,
+
+ )).parsed
diff --git a/ebay_client/generated/account/api/payment_policy/update_payment_policy.py b/ebay_client/generated/account/api/payment_policy/update_payment_policy.py
new file mode 100644
index 0000000..58cec7e
--- /dev/null
+++ b/ebay_client/generated/account/api/payment_policy/update_payment_policy.py
@@ -0,0 +1,229 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.payment_policy_request import PaymentPolicyRequest
+from ...models.set_payment_policy_response import SetPaymentPolicyResponse
+from typing import cast
+
+
+
+def _get_kwargs(
+ payment_policy_id: str,
+ *,
+ body: PaymentPolicyRequest,
+ content_type: str,
+
+) -> dict[str, Any]:
+ headers: dict[str, Any] = {}
+ headers["Content-Type"] = content_type
+
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "put",
+ "url": "/payment_policy/{payment_policy_id}".format(payment_policy_id=payment_policy_id,),
+ }
+
+ _kwargs["json"] = body.to_dict()
+
+
+ headers["Content-Type"] = "application/json"
+
+ _kwargs["headers"] = headers
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, SetPaymentPolicyResponse]]:
+ if response.status_code == 200:
+ response_200 = SetPaymentPolicyResponse.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 404:
+ response_404 = cast(Any, None)
+ return response_404
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, SetPaymentPolicyResponse]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ payment_policy_id: str,
+ *,
+ client: AuthenticatedClient,
+ body: PaymentPolicyRequest,
+ content_type: str,
+
+) -> Response[Union[Any, SetPaymentPolicyResponse]]:
+ """ This method updates an existing payment policy. Specify the policy you want to update using the
+ payment_policy_id path parameter. Supply a complete policy payload with the updates you want
+ to make; this call overwrites the existing policy with the new details specified in the payload.
+
+ Args:
+ payment_policy_id (str):
+ content_type (str):
+ body (PaymentPolicyRequest): This root container defines a seller's payment business
+ policy for a specific marketplace and category group. This type is used when creating or
+ updating a payment business policy.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, SetPaymentPolicyResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ payment_policy_id=payment_policy_id,
+body=body,
+content_type=content_type,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ payment_policy_id: str,
+ *,
+ client: AuthenticatedClient,
+ body: PaymentPolicyRequest,
+ content_type: str,
+
+) -> Optional[Union[Any, SetPaymentPolicyResponse]]:
+ """ This method updates an existing payment policy. Specify the policy you want to update using the
+ payment_policy_id path parameter. Supply a complete policy payload with the updates you want
+ to make; this call overwrites the existing policy with the new details specified in the payload.
+
+ Args:
+ payment_policy_id (str):
+ content_type (str):
+ body (PaymentPolicyRequest): This root container defines a seller's payment business
+ policy for a specific marketplace and category group. This type is used when creating or
+ updating a payment business policy.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, SetPaymentPolicyResponse]
+ """
+
+
+ return sync_detailed(
+ payment_policy_id=payment_policy_id,
+client=client,
+body=body,
+content_type=content_type,
+
+ ).parsed
+
+async def asyncio_detailed(
+ payment_policy_id: str,
+ *,
+ client: AuthenticatedClient,
+ body: PaymentPolicyRequest,
+ content_type: str,
+
+) -> Response[Union[Any, SetPaymentPolicyResponse]]:
+ """ This method updates an existing payment policy. Specify the policy you want to update using the
+ payment_policy_id path parameter. Supply a complete policy payload with the updates you want
+ to make; this call overwrites the existing policy with the new details specified in the payload.
+
+ Args:
+ payment_policy_id (str):
+ content_type (str):
+ body (PaymentPolicyRequest): This root container defines a seller's payment business
+ policy for a specific marketplace and category group. This type is used when creating or
+ updating a payment business policy.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, SetPaymentPolicyResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ payment_policy_id=payment_policy_id,
+body=body,
+content_type=content_type,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ payment_policy_id: str,
+ *,
+ client: AuthenticatedClient,
+ body: PaymentPolicyRequest,
+ content_type: str,
+
+) -> Optional[Union[Any, SetPaymentPolicyResponse]]:
+ """ This method updates an existing payment policy. Specify the policy you want to update using the
+ payment_policy_id path parameter. Supply a complete policy payload with the updates you want
+ to make; this call overwrites the existing policy with the new details specified in the payload.
+
+ Args:
+ payment_policy_id (str):
+ content_type (str):
+ body (PaymentPolicyRequest): This root container defines a seller's payment business
+ policy for a specific marketplace and category group. This type is used when creating or
+ updating a payment business policy.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, SetPaymentPolicyResponse]
+ """
+
+
+ return (await asyncio_detailed(
+ payment_policy_id=payment_policy_id,
+client=client,
+body=body,
+content_type=content_type,
+
+ )).parsed
diff --git a/ebay_client/generated/account/api/payments_program/__init__.py b/ebay_client/generated/account/api/payments_program/__init__.py
new file mode 100644
index 0000000..c9921b5
--- /dev/null
+++ b/ebay_client/generated/account/api/payments_program/__init__.py
@@ -0,0 +1 @@
+""" Contains endpoint functions for accessing the API """
diff --git a/ebay_client/generated/account/api/payments_program/get_payments_program.py b/ebay_client/generated/account/api/payments_program/get_payments_program.py
new file mode 100644
index 0000000..b76c1dc
--- /dev/null
+++ b/ebay_client/generated/account/api/payments_program/get_payments_program.py
@@ -0,0 +1,206 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.payments_program_response import PaymentsProgramResponse
+from typing import cast
+
+
+
+def _get_kwargs(
+ marketplace_id: str,
+ payments_program_type: str,
+
+) -> dict[str, Any]:
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/payments_program/{marketplace_id}/{payments_program_type}".format(marketplace_id=marketplace_id,payments_program_type=payments_program_type,),
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, PaymentsProgramResponse]]:
+ if response.status_code == 200:
+ response_200 = PaymentsProgramResponse.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 404:
+ response_404 = cast(Any, None)
+ return response_404
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, PaymentsProgramResponse]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ marketplace_id: str,
+ payments_program_type: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, PaymentsProgramResponse]]:
+ r""" Note: This method is no longer applicable, as all seller accounts
+ globally have been enabled for the new eBay payment and checkout flow.
This method returns
+ whether or not the user is opted-in to the specified payments program. Sellers opt-in to payments
+ programs by marketplace and you use the marketplace_id path parameter to specify the
+ marketplace of the status flag you want returned.
+
+ Args:
+ marketplace_id (str):
+ payments_program_type (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, PaymentsProgramResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ marketplace_id=marketplace_id,
+payments_program_type=payments_program_type,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ marketplace_id: str,
+ payments_program_type: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, PaymentsProgramResponse]]:
+ r""" Note: This method is no longer applicable, as all seller accounts
+ globally have been enabled for the new eBay payment and checkout flow.
This method returns
+ whether or not the user is opted-in to the specified payments program. Sellers opt-in to payments
+ programs by marketplace and you use the marketplace_id path parameter to specify the
+ marketplace of the status flag you want returned.
+
+ Args:
+ marketplace_id (str):
+ payments_program_type (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, PaymentsProgramResponse]
+ """
+
+
+ return sync_detailed(
+ marketplace_id=marketplace_id,
+payments_program_type=payments_program_type,
+client=client,
+
+ ).parsed
+
+async def asyncio_detailed(
+ marketplace_id: str,
+ payments_program_type: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, PaymentsProgramResponse]]:
+ r""" Note: This method is no longer applicable, as all seller accounts
+ globally have been enabled for the new eBay payment and checkout flow.
This method returns
+ whether or not the user is opted-in to the specified payments program. Sellers opt-in to payments
+ programs by marketplace and you use the marketplace_id path parameter to specify the
+ marketplace of the status flag you want returned.
+
+ Args:
+ marketplace_id (str):
+ payments_program_type (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, PaymentsProgramResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ marketplace_id=marketplace_id,
+payments_program_type=payments_program_type,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ marketplace_id: str,
+ payments_program_type: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, PaymentsProgramResponse]]:
+ r""" Note: This method is no longer applicable, as all seller accounts
+ globally have been enabled for the new eBay payment and checkout flow.
This method returns
+ whether or not the user is opted-in to the specified payments program. Sellers opt-in to payments
+ programs by marketplace and you use the marketplace_id path parameter to specify the
+ marketplace of the status flag you want returned.
+
+ Args:
+ marketplace_id (str):
+ payments_program_type (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, PaymentsProgramResponse]
+ """
+
+
+ return (await asyncio_detailed(
+ marketplace_id=marketplace_id,
+payments_program_type=payments_program_type,
+client=client,
+
+ )).parsed
diff --git a/ebay_client/generated/account/api/privilege/__init__.py b/ebay_client/generated/account/api/privilege/__init__.py
new file mode 100644
index 0000000..c9921b5
--- /dev/null
+++ b/ebay_client/generated/account/api/privilege/__init__.py
@@ -0,0 +1 @@
+""" Contains endpoint functions for accessing the API """
diff --git a/ebay_client/generated/account/api/privilege/get_privileges.py b/ebay_client/generated/account/api/privilege/get_privileges.py
new file mode 100644
index 0000000..2c36cb8
--- /dev/null
+++ b/ebay_client/generated/account/api/privilege/get_privileges.py
@@ -0,0 +1,161 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.selling_privileges import SellingPrivileges
+from typing import cast
+
+
+
+def _get_kwargs(
+
+) -> dict[str, Any]:
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/privilege",
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, SellingPrivileges]]:
+ if response.status_code == 200:
+ response_200 = SellingPrivileges.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, SellingPrivileges]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, SellingPrivileges]]:
+ """ This method retrieves the seller's current set of privileges, including whether or not the seller's
+ eBay registration has been completed, as well as the details of their site-wide sellingLimit
+ (the amount and quantity they can sell on a given day).
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, SellingPrivileges]]
+ """
+
+
+ kwargs = _get_kwargs(
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, SellingPrivileges]]:
+ """ This method retrieves the seller's current set of privileges, including whether or not the seller's
+ eBay registration has been completed, as well as the details of their site-wide sellingLimit
+ (the amount and quantity they can sell on a given day).
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, SellingPrivileges]
+ """
+
+
+ return sync_detailed(
+ client=client,
+
+ ).parsed
+
+async def asyncio_detailed(
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, SellingPrivileges]]:
+ """ This method retrieves the seller's current set of privileges, including whether or not the seller's
+ eBay registration has been completed, as well as the details of their site-wide sellingLimit
+ (the amount and quantity they can sell on a given day).
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, SellingPrivileges]]
+ """
+
+
+ kwargs = _get_kwargs(
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, SellingPrivileges]]:
+ """ This method retrieves the seller's current set of privileges, including whether or not the seller's
+ eBay registration has been completed, as well as the details of their site-wide sellingLimit
+ (the amount and quantity they can sell on a given day).
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, SellingPrivileges]
+ """
+
+
+ return (await asyncio_detailed(
+ client=client,
+
+ )).parsed
diff --git a/ebay_client/generated/account/api/program/__init__.py b/ebay_client/generated/account/api/program/__init__.py
new file mode 100644
index 0000000..c9921b5
--- /dev/null
+++ b/ebay_client/generated/account/api/program/__init__.py
@@ -0,0 +1 @@
+""" Contains endpoint functions for accessing the API """
diff --git a/ebay_client/generated/account/api/program/get_opted_in_programs.py b/ebay_client/generated/account/api/program/get_opted_in_programs.py
new file mode 100644
index 0000000..daefc1a
--- /dev/null
+++ b/ebay_client/generated/account/api/program/get_opted_in_programs.py
@@ -0,0 +1,156 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.programs import Programs
+from typing import cast
+
+
+
+def _get_kwargs(
+
+) -> dict[str, Any]:
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/program/get_opted_in_programs",
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, Programs]]:
+ if response.status_code == 200:
+ response_200 = Programs.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 404:
+ response_404 = cast(Any, None)
+ return response_404
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, Programs]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, Programs]]:
+ """ This method gets a list of the seller programs that the seller has opted-in to.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, Programs]]
+ """
+
+
+ kwargs = _get_kwargs(
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, Programs]]:
+ """ This method gets a list of the seller programs that the seller has opted-in to.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, Programs]
+ """
+
+
+ return sync_detailed(
+ client=client,
+
+ ).parsed
+
+async def asyncio_detailed(
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, Programs]]:
+ """ This method gets a list of the seller programs that the seller has opted-in to.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, Programs]]
+ """
+
+
+ kwargs = _get_kwargs(
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, Programs]]:
+ """ This method gets a list of the seller programs that the seller has opted-in to.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, Programs]
+ """
+
+
+ return (await asyncio_detailed(
+ client=client,
+
+ )).parsed
diff --git a/ebay_client/generated/account/api/program/opt_in_to_program.py b/ebay_client/generated/account/api/program/opt_in_to_program.py
new file mode 100644
index 0000000..0dfb302
--- /dev/null
+++ b/ebay_client/generated/account/api/program/opt_in_to_program.py
@@ -0,0 +1,231 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.opt_in_to_program_response_200 import OptInToProgramResponse200
+from ...models.program import Program
+from typing import cast
+
+
+
+def _get_kwargs(
+ *,
+ body: Program,
+ content_type: str,
+
+) -> dict[str, Any]:
+ headers: dict[str, Any] = {}
+ headers["Content-Type"] = content_type
+
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "post",
+ "url": "/program/opt_in",
+ }
+
+ _kwargs["json"] = body.to_dict()
+
+
+ headers["Content-Type"] = "application/json"
+
+ _kwargs["headers"] = headers
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, OptInToProgramResponse200]]:
+ if response.status_code == 200:
+ response_200 = OptInToProgramResponse200.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 404:
+ response_404 = cast(Any, None)
+ return response_404
+ if response.status_code == 409:
+ response_409 = cast(Any, None)
+ return response_409
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, OptInToProgramResponse200]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ *,
+ client: AuthenticatedClient,
+ body: Program,
+ content_type: str,
+
+) -> Response[Union[Any, OptInToProgramResponse200]]:
+ r""" This method opts the seller in to an eBay seller program. Refer to the Account API overview for information
+ about available eBay seller programs.
Note: It can take up
+ to 24-hours for eBay to process your request to opt-in to a Seller Program. Use the getOptedInPrograms call to check the status of your request after the
+ processing period has passed.
+
+ Args:
+ content_type (str):
+ body (Program): The seller program to opt in to when part of an optInToProgram
+ request, or out of when part of an optOutOfProgram request.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, OptInToProgramResponse200]]
+ """
+
+
+ kwargs = _get_kwargs(
+ body=body,
+content_type=content_type,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ *,
+ client: AuthenticatedClient,
+ body: Program,
+ content_type: str,
+
+) -> Optional[Union[Any, OptInToProgramResponse200]]:
+ r""" This method opts the seller in to an eBay seller program. Refer to the Account API overview for information
+ about available eBay seller programs.
Note: It can take up
+ to 24-hours for eBay to process your request to opt-in to a Seller Program. Use the getOptedInPrograms call to check the status of your request after the
+ processing period has passed.
+
+ Args:
+ content_type (str):
+ body (Program): The seller program to opt in to when part of an optInToProgram
+ request, or out of when part of an optOutOfProgram request.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, OptInToProgramResponse200]
+ """
+
+
+ return sync_detailed(
+ client=client,
+body=body,
+content_type=content_type,
+
+ ).parsed
+
+async def asyncio_detailed(
+ *,
+ client: AuthenticatedClient,
+ body: Program,
+ content_type: str,
+
+) -> Response[Union[Any, OptInToProgramResponse200]]:
+ r""" This method opts the seller in to an eBay seller program. Refer to the Account API overview for information
+ about available eBay seller programs.
Note: It can take up
+ to 24-hours for eBay to process your request to opt-in to a Seller Program. Use the getOptedInPrograms call to check the status of your request after the
+ processing period has passed.
+
+ Args:
+ content_type (str):
+ body (Program): The seller program to opt in to when part of an optInToProgram
+ request, or out of when part of an optOutOfProgram request.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, OptInToProgramResponse200]]
+ """
+
+
+ kwargs = _get_kwargs(
+ body=body,
+content_type=content_type,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ *,
+ client: AuthenticatedClient,
+ body: Program,
+ content_type: str,
+
+) -> Optional[Union[Any, OptInToProgramResponse200]]:
+ r""" This method opts the seller in to an eBay seller program. Refer to the Account API overview for information
+ about available eBay seller programs.
Note: It can take up
+ to 24-hours for eBay to process your request to opt-in to a Seller Program. Use the getOptedInPrograms call to check the status of your request after the
+ processing period has passed.
+
+ Args:
+ content_type (str):
+ body (Program): The seller program to opt in to when part of an optInToProgram
+ request, or out of when part of an optOutOfProgram request.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, OptInToProgramResponse200]
+ """
+
+
+ return (await asyncio_detailed(
+ client=client,
+body=body,
+content_type=content_type,
+
+ )).parsed
diff --git a/ebay_client/generated/account/api/program/opt_out_of_program.py b/ebay_client/generated/account/api/program/opt_out_of_program.py
new file mode 100644
index 0000000..c1f8b6c
--- /dev/null
+++ b/ebay_client/generated/account/api/program/opt_out_of_program.py
@@ -0,0 +1,215 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.opt_out_of_program_response_200 import OptOutOfProgramResponse200
+from ...models.program import Program
+from typing import cast
+
+
+
+def _get_kwargs(
+ *,
+ body: Program,
+ content_type: str,
+
+) -> dict[str, Any]:
+ headers: dict[str, Any] = {}
+ headers["Content-Type"] = content_type
+
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "post",
+ "url": "/program/opt_out",
+ }
+
+ _kwargs["json"] = body.to_dict()
+
+
+ headers["Content-Type"] = "application/json"
+
+ _kwargs["headers"] = headers
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, OptOutOfProgramResponse200]]:
+ if response.status_code == 200:
+ response_200 = OptOutOfProgramResponse200.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 404:
+ response_404 = cast(Any, None)
+ return response_404
+ if response.status_code == 409:
+ response_409 = cast(Any, None)
+ return response_409
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, OptOutOfProgramResponse200]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ *,
+ client: AuthenticatedClient,
+ body: Program,
+ content_type: str,
+
+) -> Response[Union[Any, OptOutOfProgramResponse200]]:
+ """ This method opts the seller out of a seller program in which they are currently opted in to. A
+ seller can retrieve a list of the seller programs they are opted-in to using the
+ getOptedInPrograms method.
+
+ Args:
+ content_type (str):
+ body (Program): The seller program to opt in to when part of an optInToProgram
+ request, or out of when part of an optOutOfProgram request.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, OptOutOfProgramResponse200]]
+ """
+
+
+ kwargs = _get_kwargs(
+ body=body,
+content_type=content_type,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ *,
+ client: AuthenticatedClient,
+ body: Program,
+ content_type: str,
+
+) -> Optional[Union[Any, OptOutOfProgramResponse200]]:
+ """ This method opts the seller out of a seller program in which they are currently opted in to. A
+ seller can retrieve a list of the seller programs they are opted-in to using the
+ getOptedInPrograms method.
+
+ Args:
+ content_type (str):
+ body (Program): The seller program to opt in to when part of an optInToProgram
+ request, or out of when part of an optOutOfProgram request.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, OptOutOfProgramResponse200]
+ """
+
+
+ return sync_detailed(
+ client=client,
+body=body,
+content_type=content_type,
+
+ ).parsed
+
+async def asyncio_detailed(
+ *,
+ client: AuthenticatedClient,
+ body: Program,
+ content_type: str,
+
+) -> Response[Union[Any, OptOutOfProgramResponse200]]:
+ """ This method opts the seller out of a seller program in which they are currently opted in to. A
+ seller can retrieve a list of the seller programs they are opted-in to using the
+ getOptedInPrograms method.
+
+ Args:
+ content_type (str):
+ body (Program): The seller program to opt in to when part of an optInToProgram
+ request, or out of when part of an optOutOfProgram request.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, OptOutOfProgramResponse200]]
+ """
+
+
+ kwargs = _get_kwargs(
+ body=body,
+content_type=content_type,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ *,
+ client: AuthenticatedClient,
+ body: Program,
+ content_type: str,
+
+) -> Optional[Union[Any, OptOutOfProgramResponse200]]:
+ """ This method opts the seller out of a seller program in which they are currently opted in to. A
+ seller can retrieve a list of the seller programs they are opted-in to using the
+ getOptedInPrograms method.
+
+ Args:
+ content_type (str):
+ body (Program): The seller program to opt in to when part of an optInToProgram
+ request, or out of when part of an optOutOfProgram request.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, OptOutOfProgramResponse200]
+ """
+
+
+ return (await asyncio_detailed(
+ client=client,
+body=body,
+content_type=content_type,
+
+ )).parsed
diff --git a/ebay_client/generated/account/api/rate_table/__init__.py b/ebay_client/generated/account/api/rate_table/__init__.py
new file mode 100644
index 0000000..c9921b5
--- /dev/null
+++ b/ebay_client/generated/account/api/rate_table/__init__.py
@@ -0,0 +1 @@
+""" Contains endpoint functions for accessing the API """
diff --git a/ebay_client/generated/account/api/rate_table/get_rate_tables.py b/ebay_client/generated/account/api/rate_table/get_rate_tables.py
new file mode 100644
index 0000000..a6febcf
--- /dev/null
+++ b/ebay_client/generated/account/api/rate_table/get_rate_tables.py
@@ -0,0 +1,240 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.rate_table_response import RateTableResponse
+from ...types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+
+
+def _get_kwargs(
+ *,
+ country_code: Union[Unset, str] = UNSET,
+
+) -> dict[str, Any]:
+
+
+
+
+ params: dict[str, Any] = {}
+
+ params["country_code"] = country_code
+
+
+ params = {k: v for k, v in params.items() if v is not UNSET and v is not None}
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/rate_table",
+ "params": params,
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, RateTableResponse]]:
+ if response.status_code == 200:
+ response_200 = RateTableResponse.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, RateTableResponse]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ *,
+ client: AuthenticatedClient,
+ country_code: Union[Unset, str] = UNSET,
+
+) -> Response[Union[Any, RateTableResponse]]:
+ r""" This method retrieves a seller's shipping rate tables for the country specified in the
+ country_code query parameter. If you call this method without specifying a country code, the
+ call returns all of the seller's shipping rate tables.
The method's response includes a
+ rateTableId for each table defined by the seller. This rateTableId value is used in
+ add/revise item call or in create/update fulfillment business policy call to specify the shipping
+ rate table to use for that policy's domestic or international shipping options.
This call
+ currently supports getting rate tables related to the following marketplaces: United States, Canada,
+ United Kingdom, Germany, Australia, France, Italy, and Spain. Note: Rate tables created with the Trading API might not have been
+ assigned a rateTableId at the time of their creation. This method can assign and return
+ rateTableId values for rate tables with missing IDs if you make a request using the
+ country_code where the seller has defined rate tables.
Sellers can define up
+ to 40 shipping rate tables for their account, which lets them set up different rate tables for each
+ of the marketplaces they sell into. Go to Shipping rate
+ tables in My eBay to create and update rate tables.
+
+ Args:
+ country_code (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, RateTableResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ country_code=country_code,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ *,
+ client: AuthenticatedClient,
+ country_code: Union[Unset, str] = UNSET,
+
+) -> Optional[Union[Any, RateTableResponse]]:
+ r""" This method retrieves a seller's shipping rate tables for the country specified in the
+ country_code query parameter. If you call this method without specifying a country code, the
+ call returns all of the seller's shipping rate tables.
The method's response includes a
+ rateTableId for each table defined by the seller. This rateTableId value is used in
+ add/revise item call or in create/update fulfillment business policy call to specify the shipping
+ rate table to use for that policy's domestic or international shipping options.
This call
+ currently supports getting rate tables related to the following marketplaces: United States, Canada,
+ United Kingdom, Germany, Australia, France, Italy, and Spain. Note: Rate tables created with the Trading API might not have been
+ assigned a rateTableId at the time of their creation. This method can assign and return
+ rateTableId values for rate tables with missing IDs if you make a request using the
+ country_code where the seller has defined rate tables.
Sellers can define up
+ to 40 shipping rate tables for their account, which lets them set up different rate tables for each
+ of the marketplaces they sell into. Go to Shipping rate
+ tables in My eBay to create and update rate tables.
+
+ Args:
+ country_code (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, RateTableResponse]
+ """
+
+
+ return sync_detailed(
+ client=client,
+country_code=country_code,
+
+ ).parsed
+
+async def asyncio_detailed(
+ *,
+ client: AuthenticatedClient,
+ country_code: Union[Unset, str] = UNSET,
+
+) -> Response[Union[Any, RateTableResponse]]:
+ r""" This method retrieves a seller's shipping rate tables for the country specified in the
+ country_code query parameter. If you call this method without specifying a country code, the
+ call returns all of the seller's shipping rate tables.
The method's response includes a
+ rateTableId for each table defined by the seller. This rateTableId value is used in
+ add/revise item call or in create/update fulfillment business policy call to specify the shipping
+ rate table to use for that policy's domestic or international shipping options.
This call
+ currently supports getting rate tables related to the following marketplaces: United States, Canada,
+ United Kingdom, Germany, Australia, France, Italy, and Spain. Note: Rate tables created with the Trading API might not have been
+ assigned a rateTableId at the time of their creation. This method can assign and return
+ rateTableId values for rate tables with missing IDs if you make a request using the
+ country_code where the seller has defined rate tables.
Sellers can define up
+ to 40 shipping rate tables for their account, which lets them set up different rate tables for each
+ of the marketplaces they sell into. Go to Shipping rate
+ tables in My eBay to create and update rate tables.
+
+ Args:
+ country_code (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, RateTableResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ country_code=country_code,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ *,
+ client: AuthenticatedClient,
+ country_code: Union[Unset, str] = UNSET,
+
+) -> Optional[Union[Any, RateTableResponse]]:
+ r""" This method retrieves a seller's shipping rate tables for the country specified in the
+ country_code query parameter. If you call this method without specifying a country code, the
+ call returns all of the seller's shipping rate tables.
The method's response includes a
+ rateTableId for each table defined by the seller. This rateTableId value is used in
+ add/revise item call or in create/update fulfillment business policy call to specify the shipping
+ rate table to use for that policy's domestic or international shipping options.
This call
+ currently supports getting rate tables related to the following marketplaces: United States, Canada,
+ United Kingdom, Germany, Australia, France, Italy, and Spain. Note: Rate tables created with the Trading API might not have been
+ assigned a rateTableId at the time of their creation. This method can assign and return
+ rateTableId values for rate tables with missing IDs if you make a request using the
+ country_code where the seller has defined rate tables.
Sellers can define up
+ to 40 shipping rate tables for their account, which lets them set up different rate tables for each
+ of the marketplaces they sell into. Go to Shipping rate
+ tables in My eBay to create and update rate tables.
+
+ Args:
+ country_code (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, RateTableResponse]
+ """
+
+
+ return (await asyncio_detailed(
+ client=client,
+country_code=country_code,
+
+ )).parsed
diff --git a/ebay_client/generated/account/api/return_policy/__init__.py b/ebay_client/generated/account/api/return_policy/__init__.py
new file mode 100644
index 0000000..c9921b5
--- /dev/null
+++ b/ebay_client/generated/account/api/return_policy/__init__.py
@@ -0,0 +1 @@
+""" Contains endpoint functions for accessing the API """
diff --git a/ebay_client/generated/account/api/return_policy/create_return_policy.py b/ebay_client/generated/account/api/return_policy/create_return_policy.py
new file mode 100644
index 0000000..fd28bcd
--- /dev/null
+++ b/ebay_client/generated/account/api/return_policy/create_return_policy.py
@@ -0,0 +1,233 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.return_policy_request import ReturnPolicyRequest
+from ...models.set_return_policy_response import SetReturnPolicyResponse
+from typing import cast
+
+
+
+def _get_kwargs(
+ *,
+ body: ReturnPolicyRequest,
+ content_type: str,
+
+) -> dict[str, Any]:
+ headers: dict[str, Any] = {}
+ headers["Content-Type"] = content_type
+
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "post",
+ "url": "/return_policy",
+ }
+
+ _kwargs["json"] = body.to_dict()
+
+
+ headers["Content-Type"] = "application/json"
+
+ _kwargs["headers"] = headers
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, SetReturnPolicyResponse]]:
+ if response.status_code == 201:
+ response_201 = SetReturnPolicyResponse.from_dict(response.json())
+
+
+
+ return response_201
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, SetReturnPolicyResponse]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ *,
+ client: AuthenticatedClient,
+ body: ReturnPolicyRequest,
+ content_type: str,
+
+) -> Response[Union[Any, SetReturnPolicyResponse]]:
+ r""" This method creates a new return policy where the policy encapsulates seller's terms for returning
+ items.
Each policy targets a specific marketplace, and you can create multiple policies for
+ each marketplace. Return policies are not applicable to motor-vehicle listings.
A successful
+ request returns the getReturnPolicy URI to the new policy in the Location response
+ header and the ID for the new policy is returned in the response payload. Tip: For details on creating and using the business policies supported by
+ the Account API, see eBay
+ business policies.
+
+ Args:
+ content_type (str):
+ body (ReturnPolicyRequest): This root container defines a seller's return business policy
+ for a specific marketplace and category group. This type is used when creating or updating
+ a return business policy.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, SetReturnPolicyResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ body=body,
+content_type=content_type,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ *,
+ client: AuthenticatedClient,
+ body: ReturnPolicyRequest,
+ content_type: str,
+
+) -> Optional[Union[Any, SetReturnPolicyResponse]]:
+ r""" This method creates a new return policy where the policy encapsulates seller's terms for returning
+ items.
Each policy targets a specific marketplace, and you can create multiple policies for
+ each marketplace. Return policies are not applicable to motor-vehicle listings.
A successful
+ request returns the getReturnPolicy URI to the new policy in the Location response
+ header and the ID for the new policy is returned in the response payload. Tip: For details on creating and using the business policies supported by
+ the Account API, see eBay
+ business policies.
+
+ Args:
+ content_type (str):
+ body (ReturnPolicyRequest): This root container defines a seller's return business policy
+ for a specific marketplace and category group. This type is used when creating or updating
+ a return business policy.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, SetReturnPolicyResponse]
+ """
+
+
+ return sync_detailed(
+ client=client,
+body=body,
+content_type=content_type,
+
+ ).parsed
+
+async def asyncio_detailed(
+ *,
+ client: AuthenticatedClient,
+ body: ReturnPolicyRequest,
+ content_type: str,
+
+) -> Response[Union[Any, SetReturnPolicyResponse]]:
+ r""" This method creates a new return policy where the policy encapsulates seller's terms for returning
+ items.
Each policy targets a specific marketplace, and you can create multiple policies for
+ each marketplace. Return policies are not applicable to motor-vehicle listings.
A successful
+ request returns the getReturnPolicy URI to the new policy in the Location response
+ header and the ID for the new policy is returned in the response payload. Tip: For details on creating and using the business policies supported by
+ the Account API, see eBay
+ business policies.
+
+ Args:
+ content_type (str):
+ body (ReturnPolicyRequest): This root container defines a seller's return business policy
+ for a specific marketplace and category group. This type is used when creating or updating
+ a return business policy.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, SetReturnPolicyResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ body=body,
+content_type=content_type,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ *,
+ client: AuthenticatedClient,
+ body: ReturnPolicyRequest,
+ content_type: str,
+
+) -> Optional[Union[Any, SetReturnPolicyResponse]]:
+ r""" This method creates a new return policy where the policy encapsulates seller's terms for returning
+ items.
Each policy targets a specific marketplace, and you can create multiple policies for
+ each marketplace. Return policies are not applicable to motor-vehicle listings.
A successful
+ request returns the getReturnPolicy URI to the new policy in the Location response
+ header and the ID for the new policy is returned in the response payload. Tip: For details on creating and using the business policies supported by
+ the Account API, see eBay
+ business policies.
+
+ Args:
+ content_type (str):
+ body (ReturnPolicyRequest): This root container defines a seller's return business policy
+ for a specific marketplace and category group. This type is used when creating or updating
+ a return business policy.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, SetReturnPolicyResponse]
+ """
+
+
+ return (await asyncio_detailed(
+ client=client,
+body=body,
+content_type=content_type,
+
+ )).parsed
diff --git a/ebay_client/generated/account/api/return_policy/delete_return_policy.py b/ebay_client/generated/account/api/return_policy/delete_return_policy.py
new file mode 100644
index 0000000..dfc0e3d
--- /dev/null
+++ b/ebay_client/generated/account/api/return_policy/delete_return_policy.py
@@ -0,0 +1,122 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+
+
+
+def _get_kwargs(
+ return_policy_id: str,
+
+) -> dict[str, Any]:
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "delete",
+ "url": "/return_policy/{return_policy_id}".format(return_policy_id=return_policy_id,),
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Any]:
+ if response.status_code == 400:
+ return None
+ if response.status_code == 500:
+ return None
+ if response.status_code == 204:
+ return None
+ if response.status_code == 404:
+ return None
+ if response.status_code == 409:
+ return None
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Any]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ return_policy_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Any]:
+ """ This method deletes a return policy. Supply the ID of the policy you want to delete in the
+ returnPolicyId path parameter.
+
+ Args:
+ return_policy_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ return_policy_id=return_policy_id,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+
+async def asyncio_detailed(
+ return_policy_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Any]:
+ """ This method deletes a return policy. Supply the ID of the policy you want to delete in the
+ returnPolicyId path parameter.
+
+ Args:
+ return_policy_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ return_policy_id=return_policy_id,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
diff --git a/ebay_client/generated/account/api/return_policy/get_return_policies.py b/ebay_client/generated/account/api/return_policy/get_return_policies.py
new file mode 100644
index 0000000..6205b3d
--- /dev/null
+++ b/ebay_client/generated/account/api/return_policy/get_return_policies.py
@@ -0,0 +1,206 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.return_policy_response import ReturnPolicyResponse
+from ...types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+
+
+def _get_kwargs(
+ *,
+ marketplace_id: str,
+ content_language: Union[Unset, str] = UNSET,
+
+) -> dict[str, Any]:
+ headers: dict[str, Any] = {}
+ if not isinstance(content_language, Unset):
+ headers["Content-Language"] = content_language
+
+
+
+
+
+ params: dict[str, Any] = {}
+
+ params["marketplace_id"] = marketplace_id
+
+
+ params = {k: v for k, v in params.items() if v is not UNSET and v is not None}
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/return_policy",
+ "params": params,
+ }
+
+
+ _kwargs["headers"] = headers
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, ReturnPolicyResponse]]:
+ if response.status_code == 200:
+ response_200 = ReturnPolicyResponse.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, ReturnPolicyResponse]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ *,
+ client: AuthenticatedClient,
+ marketplace_id: str,
+ content_language: Union[Unset, str] = UNSET,
+
+) -> Response[Union[Any, ReturnPolicyResponse]]:
+ """ This method retrieves all the return policies configured for the marketplace you specify using the
+ marketplace_id query parameter.
+
+ Args:
+ marketplace_id (str):
+ content_language (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, ReturnPolicyResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ marketplace_id=marketplace_id,
+content_language=content_language,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ *,
+ client: AuthenticatedClient,
+ marketplace_id: str,
+ content_language: Union[Unset, str] = UNSET,
+
+) -> Optional[Union[Any, ReturnPolicyResponse]]:
+ """ This method retrieves all the return policies configured for the marketplace you specify using the
+ marketplace_id query parameter.
+
+ Args:
+ marketplace_id (str):
+ content_language (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, ReturnPolicyResponse]
+ """
+
+
+ return sync_detailed(
+ client=client,
+marketplace_id=marketplace_id,
+content_language=content_language,
+
+ ).parsed
+
+async def asyncio_detailed(
+ *,
+ client: AuthenticatedClient,
+ marketplace_id: str,
+ content_language: Union[Unset, str] = UNSET,
+
+) -> Response[Union[Any, ReturnPolicyResponse]]:
+ """ This method retrieves all the return policies configured for the marketplace you specify using the
+ marketplace_id query parameter.
+
+ Args:
+ marketplace_id (str):
+ content_language (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, ReturnPolicyResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ marketplace_id=marketplace_id,
+content_language=content_language,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ *,
+ client: AuthenticatedClient,
+ marketplace_id: str,
+ content_language: Union[Unset, str] = UNSET,
+
+) -> Optional[Union[Any, ReturnPolicyResponse]]:
+ """ This method retrieves all the return policies configured for the marketplace you specify using the
+ marketplace_id query parameter.
+
+ Args:
+ marketplace_id (str):
+ content_language (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, ReturnPolicyResponse]
+ """
+
+
+ return (await asyncio_detailed(
+ client=client,
+marketplace_id=marketplace_id,
+content_language=content_language,
+
+ )).parsed
diff --git a/ebay_client/generated/account/api/return_policy/get_return_policy.py b/ebay_client/generated/account/api/return_policy/get_return_policy.py
new file mode 100644
index 0000000..b7b2576
--- /dev/null
+++ b/ebay_client/generated/account/api/return_policy/get_return_policy.py
@@ -0,0 +1,181 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.return_policy import ReturnPolicy
+from typing import cast
+
+
+
+def _get_kwargs(
+ return_policy_id: str,
+
+) -> dict[str, Any]:
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/return_policy/{return_policy_id}".format(return_policy_id=return_policy_id,),
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, ReturnPolicy]]:
+ if response.status_code == 200:
+ response_200 = ReturnPolicy.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 404:
+ response_404 = cast(Any, None)
+ return response_404
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, ReturnPolicy]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ return_policy_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, ReturnPolicy]]:
+ """ This method retrieves the complete details of the return policy specified by the
+ returnPolicyId path parameter.
+
+ Args:
+ return_policy_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, ReturnPolicy]]
+ """
+
+
+ kwargs = _get_kwargs(
+ return_policy_id=return_policy_id,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ return_policy_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, ReturnPolicy]]:
+ """ This method retrieves the complete details of the return policy specified by the
+ returnPolicyId path parameter.
+
+ Args:
+ return_policy_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, ReturnPolicy]
+ """
+
+
+ return sync_detailed(
+ return_policy_id=return_policy_id,
+client=client,
+
+ ).parsed
+
+async def asyncio_detailed(
+ return_policy_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, ReturnPolicy]]:
+ """ This method retrieves the complete details of the return policy specified by the
+ returnPolicyId path parameter.
+
+ Args:
+ return_policy_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, ReturnPolicy]]
+ """
+
+
+ kwargs = _get_kwargs(
+ return_policy_id=return_policy_id,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ return_policy_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, ReturnPolicy]]:
+ """ This method retrieves the complete details of the return policy specified by the
+ returnPolicyId path parameter.
+
+ Args:
+ return_policy_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, ReturnPolicy]
+ """
+
+
+ return (await asyncio_detailed(
+ return_policy_id=return_policy_id,
+client=client,
+
+ )).parsed
diff --git a/ebay_client/generated/account/api/return_policy/get_return_policy_by_name.py b/ebay_client/generated/account/api/return_policy/get_return_policy_by_name.py
new file mode 100644
index 0000000..19f0d34
--- /dev/null
+++ b/ebay_client/generated/account/api/return_policy/get_return_policy_by_name.py
@@ -0,0 +1,221 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.return_policy import ReturnPolicy
+from ...types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+
+
+def _get_kwargs(
+ *,
+ marketplace_id: str,
+ name: str,
+ content_language: Union[Unset, str] = UNSET,
+
+) -> dict[str, Any]:
+ headers: dict[str, Any] = {}
+ if not isinstance(content_language, Unset):
+ headers["Content-Language"] = content_language
+
+
+
+
+
+ params: dict[str, Any] = {}
+
+ params["marketplace_id"] = marketplace_id
+
+ params["name"] = name
+
+
+ params = {k: v for k, v in params.items() if v is not UNSET and v is not None}
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/return_policy/get_by_policy_name",
+ "params": params,
+ }
+
+
+ _kwargs["headers"] = headers
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, ReturnPolicy]]:
+ if response.status_code == 200:
+ response_200 = ReturnPolicy.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, ReturnPolicy]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ *,
+ client: AuthenticatedClient,
+ marketplace_id: str,
+ name: str,
+ content_language: Union[Unset, str] = UNSET,
+
+) -> Response[Union[Any, ReturnPolicy]]:
+ """ This method retrieves the details of a specific return policy. Supply both the policy
+ name and its associated marketplace_id in the request query parameters.
+
+ Args:
+ marketplace_id (str):
+ name (str):
+ content_language (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, ReturnPolicy]]
+ """
+
+
+ kwargs = _get_kwargs(
+ marketplace_id=marketplace_id,
+name=name,
+content_language=content_language,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ *,
+ client: AuthenticatedClient,
+ marketplace_id: str,
+ name: str,
+ content_language: Union[Unset, str] = UNSET,
+
+) -> Optional[Union[Any, ReturnPolicy]]:
+ """ This method retrieves the details of a specific return policy. Supply both the policy
+ name and its associated marketplace_id in the request query parameters.
+
+ Args:
+ marketplace_id (str):
+ name (str):
+ content_language (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, ReturnPolicy]
+ """
+
+
+ return sync_detailed(
+ client=client,
+marketplace_id=marketplace_id,
+name=name,
+content_language=content_language,
+
+ ).parsed
+
+async def asyncio_detailed(
+ *,
+ client: AuthenticatedClient,
+ marketplace_id: str,
+ name: str,
+ content_language: Union[Unset, str] = UNSET,
+
+) -> Response[Union[Any, ReturnPolicy]]:
+ """ This method retrieves the details of a specific return policy. Supply both the policy
+ name and its associated marketplace_id in the request query parameters.
+
+ Args:
+ marketplace_id (str):
+ name (str):
+ content_language (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, ReturnPolicy]]
+ """
+
+
+ kwargs = _get_kwargs(
+ marketplace_id=marketplace_id,
+name=name,
+content_language=content_language,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ *,
+ client: AuthenticatedClient,
+ marketplace_id: str,
+ name: str,
+ content_language: Union[Unset, str] = UNSET,
+
+) -> Optional[Union[Any, ReturnPolicy]]:
+ """ This method retrieves the details of a specific return policy. Supply both the policy
+ name and its associated marketplace_id in the request query parameters.
+
+ Args:
+ marketplace_id (str):
+ name (str):
+ content_language (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, ReturnPolicy]
+ """
+
+
+ return (await asyncio_detailed(
+ client=client,
+marketplace_id=marketplace_id,
+name=name,
+content_language=content_language,
+
+ )).parsed
diff --git a/ebay_client/generated/account/api/return_policy/update_return_policy.py b/ebay_client/generated/account/api/return_policy/update_return_policy.py
new file mode 100644
index 0000000..ce5dcc0
--- /dev/null
+++ b/ebay_client/generated/account/api/return_policy/update_return_policy.py
@@ -0,0 +1,229 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.return_policy_request import ReturnPolicyRequest
+from ...models.set_return_policy_response import SetReturnPolicyResponse
+from typing import cast
+
+
+
+def _get_kwargs(
+ return_policy_id: str,
+ *,
+ body: ReturnPolicyRequest,
+ content_type: str,
+
+) -> dict[str, Any]:
+ headers: dict[str, Any] = {}
+ headers["Content-Type"] = content_type
+
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "put",
+ "url": "/return_policy/{return_policy_id}".format(return_policy_id=return_policy_id,),
+ }
+
+ _kwargs["json"] = body.to_dict()
+
+
+ headers["Content-Type"] = "application/json"
+
+ _kwargs["headers"] = headers
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, SetReturnPolicyResponse]]:
+ if response.status_code == 200:
+ response_200 = SetReturnPolicyResponse.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 404:
+ response_404 = cast(Any, None)
+ return response_404
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, SetReturnPolicyResponse]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ return_policy_id: str,
+ *,
+ client: AuthenticatedClient,
+ body: ReturnPolicyRequest,
+ content_type: str,
+
+) -> Response[Union[Any, SetReturnPolicyResponse]]:
+ """ This method updates an existing return policy. Specify the policy you want to update using the
+ return_policy_id path parameter. Supply a complete policy payload with the updates you want
+ to make; this call overwrites the existing policy with the new details specified in the payload.
+
+ Args:
+ return_policy_id (str):
+ content_type (str):
+ body (ReturnPolicyRequest): This root container defines a seller's return business policy
+ for a specific marketplace and category group. This type is used when creating or updating
+ a return business policy.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, SetReturnPolicyResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ return_policy_id=return_policy_id,
+body=body,
+content_type=content_type,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ return_policy_id: str,
+ *,
+ client: AuthenticatedClient,
+ body: ReturnPolicyRequest,
+ content_type: str,
+
+) -> Optional[Union[Any, SetReturnPolicyResponse]]:
+ """ This method updates an existing return policy. Specify the policy you want to update using the
+ return_policy_id path parameter. Supply a complete policy payload with the updates you want
+ to make; this call overwrites the existing policy with the new details specified in the payload.
+
+ Args:
+ return_policy_id (str):
+ content_type (str):
+ body (ReturnPolicyRequest): This root container defines a seller's return business policy
+ for a specific marketplace and category group. This type is used when creating or updating
+ a return business policy.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, SetReturnPolicyResponse]
+ """
+
+
+ return sync_detailed(
+ return_policy_id=return_policy_id,
+client=client,
+body=body,
+content_type=content_type,
+
+ ).parsed
+
+async def asyncio_detailed(
+ return_policy_id: str,
+ *,
+ client: AuthenticatedClient,
+ body: ReturnPolicyRequest,
+ content_type: str,
+
+) -> Response[Union[Any, SetReturnPolicyResponse]]:
+ """ This method updates an existing return policy. Specify the policy you want to update using the
+ return_policy_id path parameter. Supply a complete policy payload with the updates you want
+ to make; this call overwrites the existing policy with the new details specified in the payload.
+
+ Args:
+ return_policy_id (str):
+ content_type (str):
+ body (ReturnPolicyRequest): This root container defines a seller's return business policy
+ for a specific marketplace and category group. This type is used when creating or updating
+ a return business policy.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, SetReturnPolicyResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ return_policy_id=return_policy_id,
+body=body,
+content_type=content_type,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ return_policy_id: str,
+ *,
+ client: AuthenticatedClient,
+ body: ReturnPolicyRequest,
+ content_type: str,
+
+) -> Optional[Union[Any, SetReturnPolicyResponse]]:
+ """ This method updates an existing return policy. Specify the policy you want to update using the
+ return_policy_id path parameter. Supply a complete policy payload with the updates you want
+ to make; this call overwrites the existing policy with the new details specified in the payload.
+
+ Args:
+ return_policy_id (str):
+ content_type (str):
+ body (ReturnPolicyRequest): This root container defines a seller's return business policy
+ for a specific marketplace and category group. This type is used when creating or updating
+ a return business policy.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, SetReturnPolicyResponse]
+ """
+
+
+ return (await asyncio_detailed(
+ return_policy_id=return_policy_id,
+client=client,
+body=body,
+content_type=content_type,
+
+ )).parsed
diff --git a/ebay_client/generated/account/api/sales_tax/__init__.py b/ebay_client/generated/account/api/sales_tax/__init__.py
new file mode 100644
index 0000000..c9921b5
--- /dev/null
+++ b/ebay_client/generated/account/api/sales_tax/__init__.py
@@ -0,0 +1 @@
+""" Contains endpoint functions for accessing the API """
diff --git a/ebay_client/generated/account/api/sales_tax/bulk_create_or_replace_sales_tax.py b/ebay_client/generated/account/api/sales_tax/bulk_create_or_replace_sales_tax.py
new file mode 100644
index 0000000..a7f751b
--- /dev/null
+++ b/ebay_client/generated/account/api/sales_tax/bulk_create_or_replace_sales_tax.py
@@ -0,0 +1,265 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.bulk_sales_tax_input import BulkSalesTaxInput
+from ...models.updated_sales_tax_response import UpdatedSalesTaxResponse
+from typing import cast
+
+
+
+def _get_kwargs(
+ *,
+ body: BulkSalesTaxInput,
+
+) -> dict[str, Any]:
+ headers: dict[str, Any] = {}
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "post",
+ "url": "/bulk_create_or_replace_sales_tax",
+ }
+
+ _kwargs["json"] = body.to_dict()
+
+
+ headers["Content-Type"] = "application/json"
+
+ _kwargs["headers"] = headers
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, UpdatedSalesTaxResponse]]:
+ if response.status_code == 200:
+ response_200 = UpdatedSalesTaxResponse.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 207:
+ response_207 = cast(Any, None)
+ return response_207
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, UpdatedSalesTaxResponse]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ *,
+ client: AuthenticatedClient,
+ body: BulkSalesTaxInput,
+
+) -> Response[Union[Any, UpdatedSalesTaxResponse]]:
+ r""" This method creates or updates multiple sales-tax table entries.
Sales-tax tables can
+ be set up for countries that support different tax jurisdictions.
Note: Sales-tax tables are only available for the US (EBAY_US) and Canada
+ (EBAY_CA) marketplaces.
Each sales-tax table entry comprises the following parameters:
+ countryCodejurisdictionIdsalesTaxPercentageshippingAndHandlingTaxed
Valid jurisdiction IDs are retrieved
+ using getSalesTaxJurisdictions in the Metadata API.
For details about
+ using this call, refer to Establishing sales-tax tables.
Important! In the US, eBay now calculates,
+ collects, and remits sales tax to the proper taxing authorities in all 50 states and Washington, DC.
+ Sellers can no longer specify sales-tax rates for these jurisdictions using a tax
+ table.
However, sellers may continue to use a sales-tax table to set rates for the following
+ US territories:
- American Samoa (AS)
- Guam (GU)
- Northern Mariana Islands
+ (MP)
- Palau (PW)
- US Virgin Islands (VI)
For additional information, refer to
+
Taxes and import charges.
+
+ Args:
+ body (BulkSalesTaxInput):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, UpdatedSalesTaxResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ body=body,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ *,
+ client: AuthenticatedClient,
+ body: BulkSalesTaxInput,
+
+) -> Optional[Union[Any, UpdatedSalesTaxResponse]]:
+ r""" This method creates or updates multiple sales-tax table entries.
Sales-tax tables can
+ be set up for countries that support different tax jurisdictions.
Note: Sales-tax tables are only available for the US (EBAY_US) and Canada
+ (EBAY_CA) marketplaces.
Each sales-tax table entry comprises the following parameters:
+ countryCodejurisdictionIdsalesTaxPercentageshippingAndHandlingTaxed
Valid jurisdiction IDs are retrieved
+ using getSalesTaxJurisdictions in the Metadata API.
For details about
+ using this call, refer to Establishing sales-tax tables.
Important! In the US, eBay now calculates,
+ collects, and remits sales tax to the proper taxing authorities in all 50 states and Washington, DC.
+ Sellers can no longer specify sales-tax rates for these jurisdictions using a tax
+ table.
However, sellers may continue to use a sales-tax table to set rates for the following
+ US territories:
- American Samoa (AS)
- Guam (GU)
- Northern Mariana Islands
+ (MP)
- Palau (PW)
- US Virgin Islands (VI)
For additional information, refer to
+
Taxes and import charges.
+
+ Args:
+ body (BulkSalesTaxInput):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, UpdatedSalesTaxResponse]
+ """
+
+
+ return sync_detailed(
+ client=client,
+body=body,
+
+ ).parsed
+
+async def asyncio_detailed(
+ *,
+ client: AuthenticatedClient,
+ body: BulkSalesTaxInput,
+
+) -> Response[Union[Any, UpdatedSalesTaxResponse]]:
+ r""" This method creates or updates multiple sales-tax table entries.
Sales-tax tables can
+ be set up for countries that support different tax jurisdictions.
Note: Sales-tax tables are only available for the US (EBAY_US) and Canada
+ (EBAY_CA) marketplaces.
Each sales-tax table entry comprises the following parameters:
+ countryCodejurisdictionIdsalesTaxPercentageshippingAndHandlingTaxed
Valid jurisdiction IDs are retrieved
+ using getSalesTaxJurisdictions in the Metadata API.
For details about
+ using this call, refer to Establishing sales-tax tables.
Important! In the US, eBay now calculates,
+ collects, and remits sales tax to the proper taxing authorities in all 50 states and Washington, DC.
+ Sellers can no longer specify sales-tax rates for these jurisdictions using a tax
+ table.
However, sellers may continue to use a sales-tax table to set rates for the following
+ US territories:
- American Samoa (AS)
- Guam (GU)
- Northern Mariana Islands
+ (MP)
- Palau (PW)
- US Virgin Islands (VI)
For additional information, refer to
+
Taxes and import charges.
+
+ Args:
+ body (BulkSalesTaxInput):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, UpdatedSalesTaxResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ body=body,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ *,
+ client: AuthenticatedClient,
+ body: BulkSalesTaxInput,
+
+) -> Optional[Union[Any, UpdatedSalesTaxResponse]]:
+ r""" This method creates or updates multiple sales-tax table entries.
Sales-tax tables can
+ be set up for countries that support different tax jurisdictions.
Note: Sales-tax tables are only available for the US (EBAY_US) and Canada
+ (EBAY_CA) marketplaces.
Each sales-tax table entry comprises the following parameters:
+ countryCodejurisdictionIdsalesTaxPercentageshippingAndHandlingTaxed
Valid jurisdiction IDs are retrieved
+ using getSalesTaxJurisdictions in the Metadata API.
For details about
+ using this call, refer to Establishing sales-tax tables.
Important! In the US, eBay now calculates,
+ collects, and remits sales tax to the proper taxing authorities in all 50 states and Washington, DC.
+ Sellers can no longer specify sales-tax rates for these jurisdictions using a tax
+ table.
However, sellers may continue to use a sales-tax table to set rates for the following
+ US territories:
- American Samoa (AS)
- Guam (GU)
- Northern Mariana Islands
+ (MP)
- Palau (PW)
- US Virgin Islands (VI)
For additional information, refer to
+
Taxes and import charges.
+
+ Args:
+ body (BulkSalesTaxInput):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, UpdatedSalesTaxResponse]
+ """
+
+
+ return (await asyncio_detailed(
+ client=client,
+body=body,
+
+ )).parsed
diff --git a/ebay_client/generated/account/api/sales_tax/create_or_replace_sales_tax.py b/ebay_client/generated/account/api/sales_tax/create_or_replace_sales_tax.py
new file mode 100644
index 0000000..9e78232
--- /dev/null
+++ b/ebay_client/generated/account/api/sales_tax/create_or_replace_sales_tax.py
@@ -0,0 +1,196 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.sales_tax_base import SalesTaxBase
+from typing import cast
+
+
+
+def _get_kwargs(
+ country_code: str,
+ jurisdiction_id: str,
+ *,
+ body: SalesTaxBase,
+ content_type: str,
+
+) -> dict[str, Any]:
+ headers: dict[str, Any] = {}
+ headers["Content-Type"] = content_type
+
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "put",
+ "url": "/sales_tax/{country_code}/{jurisdiction_id}".format(country_code=country_code,jurisdiction_id=jurisdiction_id,),
+ }
+
+ _kwargs["json"] = body.to_dict()
+
+
+ headers["Content-Type"] = "application/json"
+
+ _kwargs["headers"] = headers
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Any]:
+ if response.status_code == 400:
+ return None
+ if response.status_code == 500:
+ return None
+ if response.status_code == 204:
+ return None
+ if response.status_code == 404:
+ return None
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Any]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ country_code: str,
+ jurisdiction_id: str,
+ *,
+ client: AuthenticatedClient,
+ body: SalesTaxBase,
+ content_type: str,
+
+) -> Response[Any]:
+ r""" This method creates or updates a sales-tax table entry for a jurisdiction. Specify the tax table
+ entry you want to configure using the two path parameters: countryCode and
+ jurisdictionId.
A tax table entry for a jurisdiction is comprised of two fields: one
+ for the jurisdiction's sales-tax rate and another that's a boolean value indicating whether or not
+ shipping and handling are taxed in the jurisdiction.
You can set up sales-tax tables
+ for countries that support different tax jurisdictions.
Note: Sales-tax tables are only available for the US (EBAY_US) and Canada
+ (EBAY_CA) marketplaces.
Retrieve valid jurisdiction IDs using getSalesTaxJurisdictions in the Metadata API.
For details about
+ using this call, refer to Establishing sales-tax tables.
Important! In the US, eBay now calculates,
+ collects, and remits sales tax to the proper taxing authorities in all 50 states and Washington, DC.
+ Sellers can no longer specify sales-tax rates for these jurisdictions using a tax
+ table.
However, sellers may continue to use a sales-tax table to set rates for the following
+ US territories:
- American Samoa (AS)
- Guam (GU)
- Northern Mariana Islands
+ (MP)
- Palau (PW)
- US Virgin Islands (VI)
For additional information, refer to
+
Taxes and import charges.
+
+ Args:
+ country_code (str):
+ jurisdiction_id (str):
+ content_type (str):
+ body (SalesTaxBase): This type is used by the base request of the
+ createOrReplaceSalesTax.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ country_code=country_code,
+jurisdiction_id=jurisdiction_id,
+body=body,
+content_type=content_type,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+
+async def asyncio_detailed(
+ country_code: str,
+ jurisdiction_id: str,
+ *,
+ client: AuthenticatedClient,
+ body: SalesTaxBase,
+ content_type: str,
+
+) -> Response[Any]:
+ r""" This method creates or updates a sales-tax table entry for a jurisdiction. Specify the tax table
+ entry you want to configure using the two path parameters: countryCode and
+ jurisdictionId.
A tax table entry for a jurisdiction is comprised of two fields: one
+ for the jurisdiction's sales-tax rate and another that's a boolean value indicating whether or not
+ shipping and handling are taxed in the jurisdiction.
You can set up sales-tax tables
+ for countries that support different tax jurisdictions.
Note: Sales-tax tables are only available for the US (EBAY_US) and Canada
+ (EBAY_CA) marketplaces.
Retrieve valid jurisdiction IDs using getSalesTaxJurisdictions in the Metadata API.
For details about
+ using this call, refer to Establishing sales-tax tables.
Important! In the US, eBay now calculates,
+ collects, and remits sales tax to the proper taxing authorities in all 50 states and Washington, DC.
+ Sellers can no longer specify sales-tax rates for these jurisdictions using a tax
+ table.
However, sellers may continue to use a sales-tax table to set rates for the following
+ US territories:
- American Samoa (AS)
- Guam (GU)
- Northern Mariana Islands
+ (MP)
- Palau (PW)
- US Virgin Islands (VI)
For additional information, refer to
+
Taxes and import charges.
+
+ Args:
+ country_code (str):
+ jurisdiction_id (str):
+ content_type (str):
+ body (SalesTaxBase): This type is used by the base request of the
+ createOrReplaceSalesTax.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ country_code=country_code,
+jurisdiction_id=jurisdiction_id,
+body=body,
+content_type=content_type,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
diff --git a/ebay_client/generated/account/api/sales_tax/delete_sales_tax.py b/ebay_client/generated/account/api/sales_tax/delete_sales_tax.py
new file mode 100644
index 0000000..1033fd7
--- /dev/null
+++ b/ebay_client/generated/account/api/sales_tax/delete_sales_tax.py
@@ -0,0 +1,131 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+
+
+
+def _get_kwargs(
+ country_code: str,
+ jurisdiction_id: str,
+
+) -> dict[str, Any]:
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "delete",
+ "url": "/sales_tax/{country_code}/{jurisdiction_id}".format(country_code=country_code,jurisdiction_id=jurisdiction_id,),
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Any]:
+ if response.status_code == 400:
+ return None
+ if response.status_code == 500:
+ return None
+ if response.status_code == 204:
+ return None
+ if response.status_code == 404:
+ return None
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Any]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ country_code: str,
+ jurisdiction_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Any]:
+ r""" This call deletes a sales-tax table entry for a jurisdiction. Specify the jurisdiction to delete
+ using the countryCode and jurisdictionId path parameters.
Note: Sales-tax tables are only available for the US (EBAY_US) and Canada
+ (EBAY_CA) marketplaces.
+
+ Args:
+ country_code (str):
+ jurisdiction_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ country_code=country_code,
+jurisdiction_id=jurisdiction_id,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+
+async def asyncio_detailed(
+ country_code: str,
+ jurisdiction_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Any]:
+ r""" This call deletes a sales-tax table entry for a jurisdiction. Specify the jurisdiction to delete
+ using the countryCode and jurisdictionId path parameters.
Note: Sales-tax tables are only available for the US (EBAY_US) and Canada
+ (EBAY_CA) marketplaces.
+
+ Args:
+ country_code (str):
+ jurisdiction_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ country_code=country_code,
+jurisdiction_id=jurisdiction_id,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
diff --git a/ebay_client/generated/account/api/sales_tax/get_sales_tax.py b/ebay_client/generated/account/api/sales_tax/get_sales_tax.py
new file mode 100644
index 0000000..44184d8
--- /dev/null
+++ b/ebay_client/generated/account/api/sales_tax/get_sales_tax.py
@@ -0,0 +1,257 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.sales_tax import SalesTax
+from typing import cast
+
+
+
+def _get_kwargs(
+ country_code: str,
+ jurisdiction_id: str,
+
+) -> dict[str, Any]:
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/sales_tax/{country_code}/{jurisdiction_id}".format(country_code=country_code,jurisdiction_id=jurisdiction_id,),
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, SalesTax]]:
+ if response.status_code == 200:
+ response_200 = SalesTax.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 204:
+ response_204 = cast(Any, None)
+ return response_204
+ if response.status_code == 404:
+ response_404 = cast(Any, None)
+ return response_404
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, SalesTax]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ country_code: str,
+ jurisdiction_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, SalesTax]]:
+ r""" This call retrieves the current sales-tax table entry for a specific tax jurisdiction. Specify the
+ jurisdiction to retrieve using the countryCode and jurisdictionId path parameters. All
+ four response fields will be returned if a sales-tax entry exists for the tax jurisdiction.
+ Otherwise, the response will be returned as empty.
Note:
+ Sales-tax tables are only available for the US (EBAY_US) and Canada (EBAY_CA)
+ marketplaces.
Important! In the US, eBay now calculates,
+ collects, and remits sales tax to the proper taxing authorities in all 50 states and Washington, DC.
+ Sellers can no longer specify sales-tax rates for these jurisdictions using a tax
+ table.
However, sellers may continue to use a sales-tax table to set rates for the following
+ US territories:
- American Samoa (AS)
- Guam (GU)
- Northern Mariana Islands
+ (MP)
- Palau (PW)
- US Virgin Islands (VI)
For additional information, refer to
+
Taxes and import charges.
+
+ Args:
+ country_code (str):
+ jurisdiction_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, SalesTax]]
+ """
+
+
+ kwargs = _get_kwargs(
+ country_code=country_code,
+jurisdiction_id=jurisdiction_id,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ country_code: str,
+ jurisdiction_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, SalesTax]]:
+ r""" This call retrieves the current sales-tax table entry for a specific tax jurisdiction. Specify the
+ jurisdiction to retrieve using the countryCode and jurisdictionId path parameters. All
+ four response fields will be returned if a sales-tax entry exists for the tax jurisdiction.
+ Otherwise, the response will be returned as empty.
Note:
+ Sales-tax tables are only available for the US (EBAY_US) and Canada (EBAY_CA)
+ marketplaces.
Important! In the US, eBay now calculates,
+ collects, and remits sales tax to the proper taxing authorities in all 50 states and Washington, DC.
+ Sellers can no longer specify sales-tax rates for these jurisdictions using a tax
+ table.
However, sellers may continue to use a sales-tax table to set rates for the following
+ US territories:
- American Samoa (AS)
- Guam (GU)
- Northern Mariana Islands
+ (MP)
- Palau (PW)
- US Virgin Islands (VI)
For additional information, refer to
+
Taxes and import charges.
+
+ Args:
+ country_code (str):
+ jurisdiction_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, SalesTax]
+ """
+
+
+ return sync_detailed(
+ country_code=country_code,
+jurisdiction_id=jurisdiction_id,
+client=client,
+
+ ).parsed
+
+async def asyncio_detailed(
+ country_code: str,
+ jurisdiction_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, SalesTax]]:
+ r""" This call retrieves the current sales-tax table entry for a specific tax jurisdiction. Specify the
+ jurisdiction to retrieve using the countryCode and jurisdictionId path parameters. All
+ four response fields will be returned if a sales-tax entry exists for the tax jurisdiction.
+ Otherwise, the response will be returned as empty.
Note:
+ Sales-tax tables are only available for the US (EBAY_US) and Canada (EBAY_CA)
+ marketplaces.
Important! In the US, eBay now calculates,
+ collects, and remits sales tax to the proper taxing authorities in all 50 states and Washington, DC.
+ Sellers can no longer specify sales-tax rates for these jurisdictions using a tax
+ table.
However, sellers may continue to use a sales-tax table to set rates for the following
+ US territories:
- American Samoa (AS)
- Guam (GU)
- Northern Mariana Islands
+ (MP)
- Palau (PW)
- US Virgin Islands (VI)
For additional information, refer to
+
Taxes and import charges.
+
+ Args:
+ country_code (str):
+ jurisdiction_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, SalesTax]]
+ """
+
+
+ kwargs = _get_kwargs(
+ country_code=country_code,
+jurisdiction_id=jurisdiction_id,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ country_code: str,
+ jurisdiction_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, SalesTax]]:
+ r""" This call retrieves the current sales-tax table entry for a specific tax jurisdiction. Specify the
+ jurisdiction to retrieve using the countryCode and jurisdictionId path parameters. All
+ four response fields will be returned if a sales-tax entry exists for the tax jurisdiction.
+ Otherwise, the response will be returned as empty.
Note:
+ Sales-tax tables are only available for the US (EBAY_US) and Canada (EBAY_CA)
+ marketplaces.
Important! In the US, eBay now calculates,
+ collects, and remits sales tax to the proper taxing authorities in all 50 states and Washington, DC.
+ Sellers can no longer specify sales-tax rates for these jurisdictions using a tax
+ table.
However, sellers may continue to use a sales-tax table to set rates for the following
+ US territories:
- American Samoa (AS)
- Guam (GU)
- Northern Mariana Islands
+ (MP)
- Palau (PW)
- US Virgin Islands (VI)
For additional information, refer to
+
Taxes and import charges.
+
+ Args:
+ country_code (str):
+ jurisdiction_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, SalesTax]
+ """
+
+
+ return (await asyncio_detailed(
+ country_code=country_code,
+jurisdiction_id=jurisdiction_id,
+client=client,
+
+ )).parsed
diff --git a/ebay_client/generated/account/api/sales_tax/get_sales_taxes.py b/ebay_client/generated/account/api/sales_tax/get_sales_taxes.py
new file mode 100644
index 0000000..e72bd18
--- /dev/null
+++ b/ebay_client/generated/account/api/sales_tax/get_sales_taxes.py
@@ -0,0 +1,242 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.sales_taxes import SalesTaxes
+from typing import cast
+
+
+
+def _get_kwargs(
+ *,
+ country_code: str,
+
+) -> dict[str, Any]:
+
+
+
+
+ params: dict[str, Any] = {}
+
+ params["country_code"] = country_code
+
+
+ params = {k: v for k, v in params.items() if v is not UNSET and v is not None}
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/sales_tax",
+ "params": params,
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, SalesTaxes]]:
+ if response.status_code == 200:
+ response_200 = SalesTaxes.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, SalesTaxes]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ *,
+ client: AuthenticatedClient,
+ country_code: str,
+
+) -> Response[Union[Any, SalesTaxes]]:
+ r""" Use this call to retrieve all sales tax table entries that the seller has defined for a specific
+ country. All four response fields will be returned for each tax jurisdiction that matches the search
+ criteria. If no sales tax rates are defined for the specified, a 204 No Content status
+ code is returned with no response payload.
Note: Sales-tax
+ tables are only available for the US (EBAY_US) and Canada (EBAY_CA) marketplaces.
Important! In the US, eBay now calculates,
+ collects, and remits sales tax to the proper taxing authorities in all 50 states and Washington, DC.
+ Sellers can no longer specify sales-tax rates for these jurisdictions using a tax
+ table.
However, sellers may continue to use a sales-tax table to set rates for the following
+ US territories:
- American Samoa (AS)
- Guam (GU)
- Northern Mariana Islands
+ (MP)
- Palau (PW)
- US Virgin Islands (VI)
For additional information, refer to
+
Taxes and import charges.
+
+ Args:
+ country_code (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, SalesTaxes]]
+ """
+
+
+ kwargs = _get_kwargs(
+ country_code=country_code,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ *,
+ client: AuthenticatedClient,
+ country_code: str,
+
+) -> Optional[Union[Any, SalesTaxes]]:
+ r""" Use this call to retrieve all sales tax table entries that the seller has defined for a specific
+ country. All four response fields will be returned for each tax jurisdiction that matches the search
+ criteria. If no sales tax rates are defined for the specified, a 204 No Content status
+ code is returned with no response payload.
Note: Sales-tax
+ tables are only available for the US (EBAY_US) and Canada (EBAY_CA) marketplaces.
Important! In the US, eBay now calculates,
+ collects, and remits sales tax to the proper taxing authorities in all 50 states and Washington, DC.
+ Sellers can no longer specify sales-tax rates for these jurisdictions using a tax
+ table.
However, sellers may continue to use a sales-tax table to set rates for the following
+ US territories:
- American Samoa (AS)
- Guam (GU)
- Northern Mariana Islands
+ (MP)
- Palau (PW)
- US Virgin Islands (VI)
For additional information, refer to
+
Taxes and import charges.
+
+ Args:
+ country_code (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, SalesTaxes]
+ """
+
+
+ return sync_detailed(
+ client=client,
+country_code=country_code,
+
+ ).parsed
+
+async def asyncio_detailed(
+ *,
+ client: AuthenticatedClient,
+ country_code: str,
+
+) -> Response[Union[Any, SalesTaxes]]:
+ r""" Use this call to retrieve all sales tax table entries that the seller has defined for a specific
+ country. All four response fields will be returned for each tax jurisdiction that matches the search
+ criteria. If no sales tax rates are defined for the specified, a 204 No Content status
+ code is returned with no response payload.
Note: Sales-tax
+ tables are only available for the US (EBAY_US) and Canada (EBAY_CA) marketplaces.
Important! In the US, eBay now calculates,
+ collects, and remits sales tax to the proper taxing authorities in all 50 states and Washington, DC.
+ Sellers can no longer specify sales-tax rates for these jurisdictions using a tax
+ table.
However, sellers may continue to use a sales-tax table to set rates for the following
+ US territories:
- American Samoa (AS)
- Guam (GU)
- Northern Mariana Islands
+ (MP)
- Palau (PW)
- US Virgin Islands (VI)
For additional information, refer to
+
Taxes and import charges.
+
+ Args:
+ country_code (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, SalesTaxes]]
+ """
+
+
+ kwargs = _get_kwargs(
+ country_code=country_code,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ *,
+ client: AuthenticatedClient,
+ country_code: str,
+
+) -> Optional[Union[Any, SalesTaxes]]:
+ r""" Use this call to retrieve all sales tax table entries that the seller has defined for a specific
+ country. All four response fields will be returned for each tax jurisdiction that matches the search
+ criteria. If no sales tax rates are defined for the specified, a 204 No Content status
+ code is returned with no response payload.
Note: Sales-tax
+ tables are only available for the US (EBAY_US) and Canada (EBAY_CA) marketplaces.
Important! In the US, eBay now calculates,
+ collects, and remits sales tax to the proper taxing authorities in all 50 states and Washington, DC.
+ Sellers can no longer specify sales-tax rates for these jurisdictions using a tax
+ table.
However, sellers may continue to use a sales-tax table to set rates for the following
+ US territories:
- American Samoa (AS)
- Guam (GU)
- Northern Mariana Islands
+ (MP)
- Palau (PW)
- US Virgin Islands (VI)
For additional information, refer to
+
Taxes and import charges.
+
+ Args:
+ country_code (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, SalesTaxes]
+ """
+
+
+ return (await asyncio_detailed(
+ client=client,
+country_code=country_code,
+
+ )).parsed
diff --git a/ebay_client/generated/account/api/subscription/__init__.py b/ebay_client/generated/account/api/subscription/__init__.py
new file mode 100644
index 0000000..c9921b5
--- /dev/null
+++ b/ebay_client/generated/account/api/subscription/__init__.py
@@ -0,0 +1 @@
+""" Contains endpoint functions for accessing the API """
diff --git a/ebay_client/generated/account/api/subscription/get_subscription.py b/ebay_client/generated/account/api/subscription/get_subscription.py
new file mode 100644
index 0000000..a146c68
--- /dev/null
+++ b/ebay_client/generated/account/api/subscription/get_subscription.py
@@ -0,0 +1,199 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.subscription_response import SubscriptionResponse
+from ...types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+
+
+def _get_kwargs(
+ *,
+ limit: Union[Unset, str] = UNSET,
+ continuation_token: Union[Unset, str] = UNSET,
+
+) -> dict[str, Any]:
+
+
+
+
+ params: dict[str, Any] = {}
+
+ params["limit"] = limit
+
+ params["continuation_token"] = continuation_token
+
+
+ params = {k: v for k, v in params.items() if v is not UNSET and v is not None}
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/subscription",
+ "params": params,
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, SubscriptionResponse]]:
+ if response.status_code == 200:
+ response_200 = SubscriptionResponse.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, SubscriptionResponse]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ *,
+ client: AuthenticatedClient,
+ limit: Union[Unset, str] = UNSET,
+ continuation_token: Union[Unset, str] = UNSET,
+
+) -> Response[Union[Any, SubscriptionResponse]]:
+ """ This method retrieves a list of subscriptions associated with the seller account.
+
+ Args:
+ limit (Union[Unset, str]):
+ continuation_token (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, SubscriptionResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ limit=limit,
+continuation_token=continuation_token,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ *,
+ client: AuthenticatedClient,
+ limit: Union[Unset, str] = UNSET,
+ continuation_token: Union[Unset, str] = UNSET,
+
+) -> Optional[Union[Any, SubscriptionResponse]]:
+ """ This method retrieves a list of subscriptions associated with the seller account.
+
+ Args:
+ limit (Union[Unset, str]):
+ continuation_token (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, SubscriptionResponse]
+ """
+
+
+ return sync_detailed(
+ client=client,
+limit=limit,
+continuation_token=continuation_token,
+
+ ).parsed
+
+async def asyncio_detailed(
+ *,
+ client: AuthenticatedClient,
+ limit: Union[Unset, str] = UNSET,
+ continuation_token: Union[Unset, str] = UNSET,
+
+) -> Response[Union[Any, SubscriptionResponse]]:
+ """ This method retrieves a list of subscriptions associated with the seller account.
+
+ Args:
+ limit (Union[Unset, str]):
+ continuation_token (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, SubscriptionResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ limit=limit,
+continuation_token=continuation_token,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ *,
+ client: AuthenticatedClient,
+ limit: Union[Unset, str] = UNSET,
+ continuation_token: Union[Unset, str] = UNSET,
+
+) -> Optional[Union[Any, SubscriptionResponse]]:
+ """ This method retrieves a list of subscriptions associated with the seller account.
+
+ Args:
+ limit (Union[Unset, str]):
+ continuation_token (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, SubscriptionResponse]
+ """
+
+
+ return (await asyncio_detailed(
+ client=client,
+limit=limit,
+continuation_token=continuation_token,
+
+ )).parsed
diff --git a/ebay_client/generated/account/client.py b/ebay_client/generated/account/client.py
new file mode 100644
index 0000000..998cf0b
--- /dev/null
+++ b/ebay_client/generated/account/client.py
@@ -0,0 +1,271 @@
+import ssl
+from typing import Any, Union, Optional
+
+from attrs import define, field, evolve
+import httpx
+
+
+
+
+
+@define
+class Client:
+ """A class for keeping track of data related to the API
+
+ The following are accepted as keyword arguments and will be used to construct httpx Clients internally:
+
+ ``base_url``: The base URL for the API, all requests are made to a relative path to this URL
+
+ ``cookies``: A dictionary of cookies to be sent with every request
+
+ ``headers``: A dictionary of headers to be sent with every request
+
+ ``timeout``: The maximum amount of a time a request can take. API functions will raise
+ httpx.TimeoutException if this is exceeded.
+
+ ``verify_ssl``: Whether or not to verify the SSL certificate of the API server. This should be True in production,
+ but can be set to False for testing purposes.
+
+ ``follow_redirects``: Whether or not to follow redirects. Default value is False.
+
+ ``httpx_args``: A dictionary of additional arguments to be passed to the ``httpx.Client`` and ``httpx.AsyncClient`` constructor.
+
+
+ Attributes:
+ raise_on_unexpected_status: Whether or not to raise an errors.UnexpectedStatus if the API returns a
+ status code that was not documented in the source OpenAPI document. Can also be provided as a keyword
+ argument to the constructor.
+ """
+ raise_on_unexpected_status: bool = field(default=False, kw_only=True)
+ _base_url: str = field(alias="base_url")
+ _cookies: dict[str, str] = field(factory=dict, kw_only=True, alias="cookies")
+ _headers: dict[str, str] = field(factory=dict, kw_only=True, alias="headers")
+ _timeout: Optional[httpx.Timeout] = field(default=None, kw_only=True, alias="timeout")
+ _verify_ssl: Union[str, bool, ssl.SSLContext] = field(default=True, kw_only=True, alias="verify_ssl")
+ _follow_redirects: bool = field(default=False, kw_only=True, alias="follow_redirects")
+ _httpx_args: dict[str, Any] = field(factory=dict, kw_only=True, alias="httpx_args")
+ _client: Optional[httpx.Client] = field(default=None, init=False)
+ _async_client: Optional[httpx.AsyncClient] = field(default=None, init=False)
+
+ def with_headers(self, headers: dict[str, str]) -> "Client":
+ """Get a new client matching this one with additional headers"""
+ if self._client is not None:
+ self._client.headers.update(headers)
+ if self._async_client is not None:
+ self._async_client.headers.update(headers)
+ return evolve(self, headers={**self._headers, **headers})
+
+ def with_cookies(self, cookies: dict[str, str]) -> "Client":
+ """Get a new client matching this one with additional cookies"""
+ if self._client is not None:
+ self._client.cookies.update(cookies)
+ if self._async_client is not None:
+ self._async_client.cookies.update(cookies)
+ return evolve(self, cookies={**self._cookies, **cookies})
+
+ def with_timeout(self, timeout: httpx.Timeout) -> "Client":
+ """Get a new client matching this one with a new timeout (in seconds)"""
+ if self._client is not None:
+ self._client.timeout = timeout
+ if self._async_client is not None:
+ self._async_client.timeout = timeout
+ return evolve(self, timeout=timeout)
+
+ def set_httpx_client(self, client: httpx.Client) -> "Client":
+ """Manually set the underlying httpx.Client
+
+ **NOTE**: This will override any other settings on the client, including cookies, headers, and timeout.
+ """
+ self._client = client
+ return self
+
+ def get_httpx_client(self) -> httpx.Client:
+ """Get the underlying httpx.Client, constructing a new one if not previously set"""
+ if self._client is None:
+ self._client = httpx.Client(
+ base_url=self._base_url,
+ cookies=self._cookies,
+ headers=self._headers,
+ timeout=self._timeout,
+ verify=self._verify_ssl,
+ follow_redirects=self._follow_redirects,
+ **self._httpx_args,
+ )
+ return self._client
+
+ def __enter__(self) -> "Client":
+ """Enter a context manager for self.client—you cannot enter twice (see httpx docs)"""
+ self.get_httpx_client().__enter__()
+ return self
+
+ def __exit__(self, *args: Any, **kwargs: Any) -> None:
+ """Exit a context manager for internal httpx.Client (see httpx docs)"""
+ self.get_httpx_client().__exit__(*args, **kwargs)
+
+ def set_async_httpx_client(self, async_client: httpx.AsyncClient) -> "Client":
+ """Manually the underlying httpx.AsyncClient
+
+ **NOTE**: This will override any other settings on the client, including cookies, headers, and timeout.
+ """
+ self._async_client = async_client
+ return self
+
+ def get_async_httpx_client(self) -> httpx.AsyncClient:
+ """Get the underlying httpx.AsyncClient, constructing a new one if not previously set"""
+ if self._async_client is None:
+ self._async_client = httpx.AsyncClient(
+ base_url=self._base_url,
+ cookies=self._cookies,
+ headers=self._headers,
+ timeout=self._timeout,
+ verify=self._verify_ssl,
+ follow_redirects=self._follow_redirects,
+ **self._httpx_args,
+ )
+ return self._async_client
+
+ async def __aenter__(self) -> "Client":
+ """Enter a context manager for underlying httpx.AsyncClient—you cannot enter twice (see httpx docs)"""
+ await self.get_async_httpx_client().__aenter__()
+ return self
+
+ async def __aexit__(self, *args: Any, **kwargs: Any) -> None:
+ """Exit a context manager for underlying httpx.AsyncClient (see httpx docs)"""
+ await self.get_async_httpx_client().__aexit__(*args, **kwargs)
+
+
+@define
+class AuthenticatedClient:
+ """A Client which has been authenticated for use on secured endpoints
+
+ The following are accepted as keyword arguments and will be used to construct httpx Clients internally:
+
+ ``base_url``: The base URL for the API, all requests are made to a relative path to this URL
+
+ ``cookies``: A dictionary of cookies to be sent with every request
+
+ ``headers``: A dictionary of headers to be sent with every request
+
+ ``timeout``: The maximum amount of a time a request can take. API functions will raise
+ httpx.TimeoutException if this is exceeded.
+
+ ``verify_ssl``: Whether or not to verify the SSL certificate of the API server. This should be True in production,
+ but can be set to False for testing purposes.
+
+ ``follow_redirects``: Whether or not to follow redirects. Default value is False.
+
+ ``httpx_args``: A dictionary of additional arguments to be passed to the ``httpx.Client`` and ``httpx.AsyncClient`` constructor.
+
+
+ Attributes:
+ raise_on_unexpected_status: Whether or not to raise an errors.UnexpectedStatus if the API returns a
+ status code that was not documented in the source OpenAPI document. Can also be provided as a keyword
+ argument to the constructor.
+ token: The token to use for authentication
+ prefix: The prefix to use for the Authorization header
+ auth_header_name: The name of the Authorization header
+ """
+
+ raise_on_unexpected_status: bool = field(default=False, kw_only=True)
+ _base_url: str = field(alias="base_url")
+ _cookies: dict[str, str] = field(factory=dict, kw_only=True, alias="cookies")
+ _headers: dict[str, str] = field(factory=dict, kw_only=True, alias="headers")
+ _timeout: Optional[httpx.Timeout] = field(default=None, kw_only=True, alias="timeout")
+ _verify_ssl: Union[str, bool, ssl.SSLContext] = field(default=True, kw_only=True, alias="verify_ssl")
+ _follow_redirects: bool = field(default=False, kw_only=True, alias="follow_redirects")
+ _httpx_args: dict[str, Any] = field(factory=dict, kw_only=True, alias="httpx_args")
+ _client: Optional[httpx.Client] = field(default=None, init=False)
+ _async_client: Optional[httpx.AsyncClient] = field(default=None, init=False)
+
+ token: str
+ prefix: str = "Bearer"
+ auth_header_name: str = "Authorization"
+
+ def with_headers(self, headers: dict[str, str]) -> "AuthenticatedClient":
+ """Get a new client matching this one with additional headers"""
+ if self._client is not None:
+ self._client.headers.update(headers)
+ if self._async_client is not None:
+ self._async_client.headers.update(headers)
+ return evolve(self, headers={**self._headers, **headers})
+
+ def with_cookies(self, cookies: dict[str, str]) -> "AuthenticatedClient":
+ """Get a new client matching this one with additional cookies"""
+ if self._client is not None:
+ self._client.cookies.update(cookies)
+ if self._async_client is not None:
+ self._async_client.cookies.update(cookies)
+ return evolve(self, cookies={**self._cookies, **cookies})
+
+ def with_timeout(self, timeout: httpx.Timeout) -> "AuthenticatedClient":
+ """Get a new client matching this one with a new timeout (in seconds)"""
+ if self._client is not None:
+ self._client.timeout = timeout
+ if self._async_client is not None:
+ self._async_client.timeout = timeout
+ return evolve(self, timeout=timeout)
+
+ def set_httpx_client(self, client: httpx.Client) -> "AuthenticatedClient":
+ """Manually set the underlying httpx.Client
+
+ **NOTE**: This will override any other settings on the client, including cookies, headers, and timeout.
+ """
+ self._client = client
+ return self
+
+ def get_httpx_client(self) -> httpx.Client:
+ """Get the underlying httpx.Client, constructing a new one if not previously set"""
+ if self._client is None:
+ self._headers[self.auth_header_name] = f"{self.prefix} {self.token}" if self.prefix else self.token
+ self._client = httpx.Client(
+ base_url=self._base_url,
+ cookies=self._cookies,
+ headers=self._headers,
+ timeout=self._timeout,
+ verify=self._verify_ssl,
+ follow_redirects=self._follow_redirects,
+ **self._httpx_args,
+ )
+ return self._client
+
+ def __enter__(self) -> "AuthenticatedClient":
+ """Enter a context manager for self.client—you cannot enter twice (see httpx docs)"""
+ self.get_httpx_client().__enter__()
+ return self
+
+ def __exit__(self, *args: Any, **kwargs: Any) -> None:
+ """Exit a context manager for internal httpx.Client (see httpx docs)"""
+ self.get_httpx_client().__exit__(*args, **kwargs)
+
+ def set_async_httpx_client(self, async_client: httpx.AsyncClient) -> "AuthenticatedClient":
+ """Manually the underlying httpx.AsyncClient
+
+ **NOTE**: This will override any other settings on the client, including cookies, headers, and timeout.
+ """
+ self._async_client = async_client
+ return self
+
+ def get_async_httpx_client(self) -> httpx.AsyncClient:
+ """Get the underlying httpx.AsyncClient, constructing a new one if not previously set"""
+ if self._async_client is None:
+ self._headers[self.auth_header_name] = f"{self.prefix} {self.token}" if self.prefix else self.token
+ self._async_client = httpx.AsyncClient(
+ base_url=self._base_url,
+ cookies=self._cookies,
+ headers=self._headers,
+ timeout=self._timeout,
+ verify=self._verify_ssl,
+ follow_redirects=self._follow_redirects,
+ **self._httpx_args,
+ )
+ return self._async_client
+
+ async def __aenter__(self) -> "AuthenticatedClient":
+ """Enter a context manager for underlying httpx.AsyncClient—you cannot enter twice (see httpx docs)"""
+ await self.get_async_httpx_client().__aenter__()
+ return self
+
+ async def __aexit__(self, *args: Any, **kwargs: Any) -> None:
+ """Exit a context manager for underlying httpx.AsyncClient (see httpx docs)"""
+ await self.get_async_httpx_client().__aexit__(*args, **kwargs)
+
diff --git a/ebay_client/generated/account/errors.py b/ebay_client/generated/account/errors.py
new file mode 100644
index 0000000..b912123
--- /dev/null
+++ b/ebay_client/generated/account/errors.py
@@ -0,0 +1,14 @@
+""" Contains shared errors types that can be raised from API functions """
+
+class UnexpectedStatus(Exception):
+ """Raised by api functions when the response status an undocumented status and Client.raise_on_unexpected_status is True"""
+
+ def __init__(self, status_code: int, content: bytes):
+ self.status_code = status_code
+ self.content = content
+
+ super().__init__(
+ f"Unexpected status code: {status_code}\n\nResponse content:\n{content.decode(errors='ignore')}"
+ )
+
+__all__ = ["UnexpectedStatus"]
diff --git a/ebay_client/generated/account/models/__init__.py b/ebay_client/generated/account/models/__init__.py
new file mode 100644
index 0000000..ed2fa8b
--- /dev/null
+++ b/ebay_client/generated/account/models/__init__.py
@@ -0,0 +1,115 @@
+""" Contains all the data models used in inputs/outputs """
+
+from .amount import Amount
+from .bulk_sales_tax_input import BulkSalesTaxInput
+from .category_type import CategoryType
+from .compact_custom_policy_response import CompactCustomPolicyResponse
+from .create_custom_policy_response_201 import CreateCustomPolicyResponse201
+from .custom_policy import CustomPolicy
+from .custom_policy_create_request import CustomPolicyCreateRequest
+from .custom_policy_request import CustomPolicyRequest
+from .custom_policy_response import CustomPolicyResponse
+from .deposit import Deposit
+from .error import Error
+from .error_parameter import ErrorParameter
+from .fulfillment_policy import FulfillmentPolicy
+from .fulfillment_policy_request import FulfillmentPolicyRequest
+from .fulfillment_policy_response import FulfillmentPolicyResponse
+from .international_return_override_type import InternationalReturnOverrideType
+from .kyc_check import KycCheck
+from .kyc_response import KycResponse
+from .opt_in_to_program_response_200 import OptInToProgramResponse200
+from .opt_out_of_program_response_200 import OptOutOfProgramResponse200
+from .payment_method import PaymentMethod
+from .payment_policy import PaymentPolicy
+from .payment_policy_request import PaymentPolicyRequest
+from .payment_policy_response import PaymentPolicyResponse
+from .payments_program_onboarding_response import PaymentsProgramOnboardingResponse
+from .payments_program_onboarding_steps import PaymentsProgramOnboardingSteps
+from .payments_program_response import PaymentsProgramResponse
+from .program import Program
+from .programs import Programs
+from .rate_table import RateTable
+from .rate_table_response import RateTableResponse
+from .recipient_account_reference import RecipientAccountReference
+from .region import Region
+from .region_set import RegionSet
+from .return_policy import ReturnPolicy
+from .return_policy_request import ReturnPolicyRequest
+from .return_policy_response import ReturnPolicyResponse
+from .sales_tax import SalesTax
+from .sales_tax_base import SalesTaxBase
+from .sales_tax_input import SalesTaxInput
+from .sales_taxes import SalesTaxes
+from .seller_eligibility_multi_program_response import SellerEligibilityMultiProgramResponse
+from .seller_eligibility_response import SellerEligibilityResponse
+from .selling_limit import SellingLimit
+from .selling_privileges import SellingPrivileges
+from .set_fulfillment_policy_response import SetFulfillmentPolicyResponse
+from .set_payment_policy_response import SetPaymentPolicyResponse
+from .set_return_policy_response import SetReturnPolicyResponse
+from .shipping_option import ShippingOption
+from .shipping_service import ShippingService
+from .subscription import Subscription
+from .subscription_response import SubscriptionResponse
+from .time_duration import TimeDuration
+from .updated_sales_tax_entry import UpdatedSalesTaxEntry
+from .updated_sales_tax_response import UpdatedSalesTaxResponse
+
+__all__ = (
+ "Amount",
+ "BulkSalesTaxInput",
+ "CategoryType",
+ "CompactCustomPolicyResponse",
+ "CreateCustomPolicyResponse201",
+ "CustomPolicy",
+ "CustomPolicyCreateRequest",
+ "CustomPolicyRequest",
+ "CustomPolicyResponse",
+ "Deposit",
+ "Error",
+ "ErrorParameter",
+ "FulfillmentPolicy",
+ "FulfillmentPolicyRequest",
+ "FulfillmentPolicyResponse",
+ "InternationalReturnOverrideType",
+ "KycCheck",
+ "KycResponse",
+ "OptInToProgramResponse200",
+ "OptOutOfProgramResponse200",
+ "PaymentMethod",
+ "PaymentPolicy",
+ "PaymentPolicyRequest",
+ "PaymentPolicyResponse",
+ "PaymentsProgramOnboardingResponse",
+ "PaymentsProgramOnboardingSteps",
+ "PaymentsProgramResponse",
+ "Program",
+ "Programs",
+ "RateTable",
+ "RateTableResponse",
+ "RecipientAccountReference",
+ "Region",
+ "RegionSet",
+ "ReturnPolicy",
+ "ReturnPolicyRequest",
+ "ReturnPolicyResponse",
+ "SalesTax",
+ "SalesTaxBase",
+ "SalesTaxes",
+ "SalesTaxInput",
+ "SellerEligibilityMultiProgramResponse",
+ "SellerEligibilityResponse",
+ "SellingLimit",
+ "SellingPrivileges",
+ "SetFulfillmentPolicyResponse",
+ "SetPaymentPolicyResponse",
+ "SetReturnPolicyResponse",
+ "ShippingOption",
+ "ShippingService",
+ "Subscription",
+ "SubscriptionResponse",
+ "TimeDuration",
+ "UpdatedSalesTaxEntry",
+ "UpdatedSalesTaxResponse",
+)
diff --git a/ebay_client/generated/account/models/amount.py b/ebay_client/generated/account/models/amount.py
new file mode 100644
index 0000000..66c18be
--- /dev/null
+++ b/ebay_client/generated/account/models/amount.py
@@ -0,0 +1,94 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="Amount")
+
+
+
+@_attrs_define
+class Amount:
+ """ A complex type that describes the value of a monetary amount as represented by a global currency. When passing in an
+ amount in a request payload, both currency and value fields are required, and both fields are also
+ always returned for an amount in a response field.
+
+ Attributes:
+ currency (Union[Unset, str]): The base currency applied to the value field to establish a monetary
+ amount.
The currency is represented as a 3-letter ISO 4217 currency code. For example, the code for
+ the Canadian Dollar is CAD.
Default: The default currency of the eBay marketplace
+ that hosts the listing. For implementation help, refer to eBay API documentation
+ value (Union[Unset, str]): The monetary amount in the specified currency.
+ """
+
+ currency: Union[Unset, str] = UNSET
+ value: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ currency = self.currency
+
+ value = self.value
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if currency is not UNSET:
+ field_dict["currency"] = currency
+ if value is not UNSET:
+ field_dict["value"] = value
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ currency = d.pop("currency", UNSET)
+
+ value = d.pop("value", UNSET)
+
+ amount = cls(
+ currency=currency,
+ value=value,
+ )
+
+
+ amount.additional_properties = d
+ return amount
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/account/models/bulk_sales_tax_input.py b/ebay_client/generated/account/models/bulk_sales_tax_input.py
new file mode 100644
index 0000000..6b0c8f2
--- /dev/null
+++ b/ebay_client/generated/account/models/bulk_sales_tax_input.py
@@ -0,0 +1,98 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.sales_tax_input import SalesTaxInput
+
+
+
+
+
+T = TypeVar("T", bound="BulkSalesTaxInput")
+
+
+
+@_attrs_define
+class BulkSalesTaxInput:
+ """
+ Attributes:
+ sales_tax_input_list (Union[Unset, list['SalesTaxInput']]): The array of sales-tax table entries to be created
+ or updated.
+ """
+
+ sales_tax_input_list: Union[Unset, list['SalesTaxInput']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.sales_tax_input import SalesTaxInput
+ sales_tax_input_list: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.sales_tax_input_list, Unset):
+ sales_tax_input_list = []
+ for sales_tax_input_list_item_data in self.sales_tax_input_list:
+ sales_tax_input_list_item = sales_tax_input_list_item_data.to_dict()
+ sales_tax_input_list.append(sales_tax_input_list_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if sales_tax_input_list is not UNSET:
+ field_dict["salesTaxInputList"] = sales_tax_input_list
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.sales_tax_input import SalesTaxInput
+ d = dict(src_dict)
+ sales_tax_input_list = []
+ _sales_tax_input_list = d.pop("salesTaxInputList", UNSET)
+ for sales_tax_input_list_item_data in (_sales_tax_input_list or []):
+ sales_tax_input_list_item = SalesTaxInput.from_dict(sales_tax_input_list_item_data)
+
+
+
+ sales_tax_input_list.append(sales_tax_input_list_item)
+
+
+ bulk_sales_tax_input = cls(
+ sales_tax_input_list=sales_tax_input_list,
+ )
+
+
+ bulk_sales_tax_input.additional_properties = d
+ return bulk_sales_tax_input
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/account/models/category_type.py b/ebay_client/generated/account/models/category_type.py
new file mode 100644
index 0000000..a07cd7c
--- /dev/null
+++ b/ebay_client/generated/account/models/category_type.py
@@ -0,0 +1,96 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="CategoryType")
+
+
+
+@_attrs_define
+class CategoryType:
+ """ The category type discerns whether the policy applies to motor vehicle listings, or to any other items except motor
+ vehicle listings.
Each business policy can be associated with either or both categories ('MOTORS_VEHICLES'
+ and 'ALL_EXCLUDING_MOTORS_VEHICLES'); however, return business policies are not applicable for motor vehicle
+ listings.
+
+ Attributes:
+ default (Union[Unset, bool]): Note: This field has been deprecated and
+ is no longer used.- Do not include this field in any create or update method.
- This
+ field may be returned within the payload of a get method, but it can be ignored.
+ name (Union[Unset, str]): The category type to which the policy applies (motor vehicles or non-motor vehicles).
+
Note: The MOTORS_VEHICLES category type is not
+ valid for return policies. eBay flows do not support the return of motor vehicles. For implementation
+ help, refer to eBay API
+ documentation
+ """
+
+ default: Union[Unset, bool] = UNSET
+ name: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ default = self.default
+
+ name = self.name
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if default is not UNSET:
+ field_dict["default"] = default
+ if name is not UNSET:
+ field_dict["name"] = name
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ default = d.pop("default", UNSET)
+
+ name = d.pop("name", UNSET)
+
+ category_type = cls(
+ default=default,
+ name=name,
+ )
+
+
+ category_type.additional_properties = d
+ return category_type
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/account/models/compact_custom_policy_response.py b/ebay_client/generated/account/models/compact_custom_policy_response.py
new file mode 100644
index 0000000..b9628d7
--- /dev/null
+++ b/ebay_client/generated/account/models/compact_custom_policy_response.py
@@ -0,0 +1,113 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="CompactCustomPolicyResponse")
+
+
+
+@_attrs_define
+class CompactCustomPolicyResponse:
+ """ The response payload for requests that return a list of custom policies.
+
+ Attributes:
+ custom_policy_id (Union[Unset, str]): The unique custom policy identifier for the policy being
+ returned.
Note: This value is automatically assigned by the
+ system when the policy is created.
+ label (Union[Unset, str]): Customer-facing label shown on View Item pages for items to which the policy applies.
+ This seller-defined string is displayed as a system-generated hyperlink pointing to the seller's policy
+ information.
Max length: 65
+ name (Union[Unset, str]): The seller-defined name for the custom policy. Names must be unique for policies
+ assigned to the same seller and policy type.
Note: This field is
+ visible only to the seller.
Max length: 65
+ policy_type (Union[Unset, str]): Specifies the type of Custom Policy being returned. For implementation help,
+ refer to eBay API
+ documentation
+ """
+
+ custom_policy_id: Union[Unset, str] = UNSET
+ label: Union[Unset, str] = UNSET
+ name: Union[Unset, str] = UNSET
+ policy_type: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ custom_policy_id = self.custom_policy_id
+
+ label = self.label
+
+ name = self.name
+
+ policy_type = self.policy_type
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if custom_policy_id is not UNSET:
+ field_dict["customPolicyId"] = custom_policy_id
+ if label is not UNSET:
+ field_dict["label"] = label
+ if name is not UNSET:
+ field_dict["name"] = name
+ if policy_type is not UNSET:
+ field_dict["policyType"] = policy_type
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ custom_policy_id = d.pop("customPolicyId", UNSET)
+
+ label = d.pop("label", UNSET)
+
+ name = d.pop("name", UNSET)
+
+ policy_type = d.pop("policyType", UNSET)
+
+ compact_custom_policy_response = cls(
+ custom_policy_id=custom_policy_id,
+ label=label,
+ name=name,
+ policy_type=policy_type,
+ )
+
+
+ compact_custom_policy_response.additional_properties = d
+ return compact_custom_policy_response
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/account/models/create_custom_policy_response_201.py b/ebay_client/generated/account/models/create_custom_policy_response_201.py
new file mode 100644
index 0000000..7a33c95
--- /dev/null
+++ b/ebay_client/generated/account/models/create_custom_policy_response_201.py
@@ -0,0 +1,63 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+
+
+
+
+
+
+T = TypeVar("T", bound="CreateCustomPolicyResponse201")
+
+
+
+@_attrs_define
+class CreateCustomPolicyResponse201:
+ """
+ """
+
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ create_custom_policy_response_201 = cls(
+ )
+
+
+ create_custom_policy_response_201.additional_properties = d
+ return create_custom_policy_response_201
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/account/models/custom_policy.py b/ebay_client/generated/account/models/custom_policy.py
new file mode 100644
index 0000000..202398e
--- /dev/null
+++ b/ebay_client/generated/account/models/custom_policy.py
@@ -0,0 +1,122 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="CustomPolicy")
+
+
+
+@_attrs_define
+class CustomPolicy:
+ """ This container defines a seller's custom policy identified by policy ID for the selected eBay marketplace. A
+ successful call returns the requested policy information.
+
+ Attributes:
+ custom_policy_id (Union[Unset, str]): The unique custom policy identifier for a policy.
+ description (Union[Unset, str]): Contains the seller's policy and policy terms. Buyers access this information
+ from the View Item page for items to which the policy has been applied.
Max length: 15,000
+ label (Union[Unset, str]): Customer-facing label shown on View Item pages for items to which the policy applies.
+ This seller-defined string is displayed as a system-generated hyperlink pointing to the seller's policy
+ information.
Max length: 65
+ name (Union[Unset, str]): The seller-defined name for the custom policy. Names must be unique for policies
+ assigned to the same seller and policy type.
Note: This field is
+ visible only to the seller.
Max length: 65
+ policy_type (Union[Unset, str]): Specifies the type of Custom Policy being returned. For implementation help,
+ refer to eBay API
+ documentation
+ """
+
+ custom_policy_id: Union[Unset, str] = UNSET
+ description: Union[Unset, str] = UNSET
+ label: Union[Unset, str] = UNSET
+ name: Union[Unset, str] = UNSET
+ policy_type: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ custom_policy_id = self.custom_policy_id
+
+ description = self.description
+
+ label = self.label
+
+ name = self.name
+
+ policy_type = self.policy_type
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if custom_policy_id is not UNSET:
+ field_dict["customPolicyId"] = custom_policy_id
+ if description is not UNSET:
+ field_dict["description"] = description
+ if label is not UNSET:
+ field_dict["label"] = label
+ if name is not UNSET:
+ field_dict["name"] = name
+ if policy_type is not UNSET:
+ field_dict["policyType"] = policy_type
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ custom_policy_id = d.pop("customPolicyId", UNSET)
+
+ description = d.pop("description", UNSET)
+
+ label = d.pop("label", UNSET)
+
+ name = d.pop("name", UNSET)
+
+ policy_type = d.pop("policyType", UNSET)
+
+ custom_policy = cls(
+ custom_policy_id=custom_policy_id,
+ description=description,
+ label=label,
+ name=name,
+ policy_type=policy_type,
+ )
+
+
+ custom_policy.additional_properties = d
+ return custom_policy
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/account/models/custom_policy_create_request.py b/ebay_client/generated/account/models/custom_policy_create_request.py
new file mode 100644
index 0000000..a784cea
--- /dev/null
+++ b/ebay_client/generated/account/models/custom_policy_create_request.py
@@ -0,0 +1,113 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="CustomPolicyCreateRequest")
+
+
+
+@_attrs_define
+class CustomPolicyCreateRequest:
+ """ This type is used by the request payload of the createCustomPolicy method to define a new custom policy for a
+ specific marketplace.
+
+ Attributes:
+ description (Union[Unset, str]): Contains the seller's policy and policy terms.
Max length: 15,000
+ label (Union[Unset, str]): Customer-facing label shown on View Item pages for items to which the policy applies.
+ This seller-defined string is displayed as a system-generated hyperlink pointing to the seller's policy
+ information.
Max length: 65
+ name (Union[Unset, str]): The seller-defined name for the custom policy. Names must be unique for policies
+ assigned to the same seller and policy type.
Note: This field is
+ visible only to the seller.
Max length: 65
+ policy_type (Union[Unset, str]): Specifies the type of custom policy being created.
Two Custom Policy
+ types are supported: - Product Compliance (PRODUCT_COMPLIANCE)
- Takeback (TAKE_BACK)
For
+ implementation help, refer to eBay API documentation
+ """
+
+ description: Union[Unset, str] = UNSET
+ label: Union[Unset, str] = UNSET
+ name: Union[Unset, str] = UNSET
+ policy_type: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ description = self.description
+
+ label = self.label
+
+ name = self.name
+
+ policy_type = self.policy_type
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if description is not UNSET:
+ field_dict["description"] = description
+ if label is not UNSET:
+ field_dict["label"] = label
+ if name is not UNSET:
+ field_dict["name"] = name
+ if policy_type is not UNSET:
+ field_dict["policyType"] = policy_type
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ description = d.pop("description", UNSET)
+
+ label = d.pop("label", UNSET)
+
+ name = d.pop("name", UNSET)
+
+ policy_type = d.pop("policyType", UNSET)
+
+ custom_policy_create_request = cls(
+ description=description,
+ label=label,
+ name=name,
+ policy_type=policy_type,
+ )
+
+
+ custom_policy_create_request.additional_properties = d
+ return custom_policy_create_request
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/account/models/custom_policy_request.py b/ebay_client/generated/account/models/custom_policy_request.py
new file mode 100644
index 0000000..60c740c
--- /dev/null
+++ b/ebay_client/generated/account/models/custom_policy_request.py
@@ -0,0 +1,109 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="CustomPolicyRequest")
+
+
+
+@_attrs_define
+class CustomPolicyRequest:
+ """
+ Attributes:
+ description (Union[Unset, str]): Contains the seller specified policy and policy terms.
Note: Always supply this field. If this field is not specified, any previous
+ value is removed. Call the getCustomPolicy method to return the
+ present field value for this policy.
Max length: 15,000
+ label (Union[Unset, str]): Customer-facing label shown on View Item pages for items to which the policy applies.
+ This seller-defined string is displayed as a system-generated hyperlink pointing to seller specified policy
+ information.
Note: Always supply this field. If this field is
+ not specified, any previous value is removed. Call the getCustomPolicy method to return the
+ present field value for this policy.
Max length: 65
+ name (Union[Unset, str]): The seller-defined name for the custom policy. Names must be unique for policies
+ assigned to the same seller and policy type.
Note: This field is
+ visible only to the seller.
Note: Always supply this
+ field. If this field is not specified, any previous value is removed. Call the getCustomPolicy method to return the
+ present field value for this policy.
Max length: 65
+ """
+
+ description: Union[Unset, str] = UNSET
+ label: Union[Unset, str] = UNSET
+ name: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ description = self.description
+
+ label = self.label
+
+ name = self.name
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if description is not UNSET:
+ field_dict["description"] = description
+ if label is not UNSET:
+ field_dict["label"] = label
+ if name is not UNSET:
+ field_dict["name"] = name
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ description = d.pop("description", UNSET)
+
+ label = d.pop("label", UNSET)
+
+ name = d.pop("name", UNSET)
+
+ custom_policy_request = cls(
+ description=description,
+ label=label,
+ name=name,
+ )
+
+
+ custom_policy_request.additional_properties = d
+ return custom_policy_request
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/account/models/custom_policy_response.py b/ebay_client/generated/account/models/custom_policy_response.py
new file mode 100644
index 0000000..ce2b47b
--- /dev/null
+++ b/ebay_client/generated/account/models/custom_policy_response.py
@@ -0,0 +1,152 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.compact_custom_policy_response import CompactCustomPolicyResponse
+
+
+
+
+
+T = TypeVar("T", bound="CustomPolicyResponse")
+
+
+
+@_attrs_define
+class CustomPolicyResponse:
+ """
+ Attributes:
+ custom_policies (Union[Unset, list['CompactCustomPolicyResponse']]): This array contains the custom policies
+ that match the input criteria.
+ href (Union[Unset, str]): This field is for future use.
+ limit (Union[Unset, int]): This field is for future use.
+ next_ (Union[Unset, str]): This field is for future use.
+ offset (Union[Unset, int]): This field is for future use.
+ prev (Union[Unset, str]): This field is for future use.
+ total (Union[Unset, int]): This field is for future use.
+ """
+
+ custom_policies: Union[Unset, list['CompactCustomPolicyResponse']] = UNSET
+ href: Union[Unset, str] = UNSET
+ limit: Union[Unset, int] = UNSET
+ next_: Union[Unset, str] = UNSET
+ offset: Union[Unset, int] = UNSET
+ prev: Union[Unset, str] = UNSET
+ total: Union[Unset, int] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.compact_custom_policy_response import CompactCustomPolicyResponse
+ custom_policies: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.custom_policies, Unset):
+ custom_policies = []
+ for custom_policies_item_data in self.custom_policies:
+ custom_policies_item = custom_policies_item_data.to_dict()
+ custom_policies.append(custom_policies_item)
+
+
+
+ href = self.href
+
+ limit = self.limit
+
+ next_ = self.next_
+
+ offset = self.offset
+
+ prev = self.prev
+
+ total = self.total
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if custom_policies is not UNSET:
+ field_dict["customPolicies"] = custom_policies
+ if href is not UNSET:
+ field_dict["href"] = href
+ if limit is not UNSET:
+ field_dict["limit"] = limit
+ if next_ is not UNSET:
+ field_dict["next"] = next_
+ if offset is not UNSET:
+ field_dict["offset"] = offset
+ if prev is not UNSET:
+ field_dict["prev"] = prev
+ if total is not UNSET:
+ field_dict["total"] = total
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.compact_custom_policy_response import CompactCustomPolicyResponse
+ d = dict(src_dict)
+ custom_policies = []
+ _custom_policies = d.pop("customPolicies", UNSET)
+ for custom_policies_item_data in (_custom_policies or []):
+ custom_policies_item = CompactCustomPolicyResponse.from_dict(custom_policies_item_data)
+
+
+
+ custom_policies.append(custom_policies_item)
+
+
+ href = d.pop("href", UNSET)
+
+ limit = d.pop("limit", UNSET)
+
+ next_ = d.pop("next", UNSET)
+
+ offset = d.pop("offset", UNSET)
+
+ prev = d.pop("prev", UNSET)
+
+ total = d.pop("total", UNSET)
+
+ custom_policy_response = cls(
+ custom_policies=custom_policies,
+ href=href,
+ limit=limit,
+ next_=next_,
+ offset=offset,
+ prev=prev,
+ total=total,
+ )
+
+
+ custom_policy_response.additional_properties = d
+ return custom_policy_response
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/account/models/deposit.py b/ebay_client/generated/account/models/deposit.py
new file mode 100644
index 0000000..c219377
--- /dev/null
+++ b/ebay_client/generated/account/models/deposit.py
@@ -0,0 +1,149 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.payment_method import PaymentMethod
+ from ..models.amount import Amount
+ from ..models.time_duration import TimeDuration
+
+
+
+
+
+T = TypeVar("T", bound="Deposit")
+
+
+
+@_attrs_define
+class Deposit:
+ """ This type is used to specify/indicate that an initial deposit is required for a motor vehicle listing.
+
+ Attributes:
+ amount (Union[Unset, Amount]): A complex type that describes the value of a monetary amount as represented by a
+ global currency. When passing in an amount in a request payload, both currency and value fields
+ are required, and both fields are also always returned for an amount in a response field.
+ due_in (Union[Unset, TimeDuration]): A type used to specify a period of time using a specified time-measurement
+ unit. Payment, return, and fulfillment business policies all use this type to specify time
+ windows.
Whenever a container that uses this type is used in a request, both of these fields are
+ required. Similarly, whenever a container that uses this type is returned in a response, both of these fields
+ are always returned.
+ payment_methods (Union[Unset, list['PaymentMethod']]): This array is no longer applicable and should not be used
+ since eBay now manages the electronic payment options available to buyers to pay the deposit.
+ """
+
+ amount: Union[Unset, 'Amount'] = UNSET
+ due_in: Union[Unset, 'TimeDuration'] = UNSET
+ payment_methods: Union[Unset, list['PaymentMethod']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.payment_method import PaymentMethod
+ from ..models.amount import Amount
+ from ..models.time_duration import TimeDuration
+ amount: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.amount, Unset):
+ amount = self.amount.to_dict()
+
+ due_in: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.due_in, Unset):
+ due_in = self.due_in.to_dict()
+
+ payment_methods: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.payment_methods, Unset):
+ payment_methods = []
+ for payment_methods_item_data in self.payment_methods:
+ payment_methods_item = payment_methods_item_data.to_dict()
+ payment_methods.append(payment_methods_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if amount is not UNSET:
+ field_dict["amount"] = amount
+ if due_in is not UNSET:
+ field_dict["dueIn"] = due_in
+ if payment_methods is not UNSET:
+ field_dict["paymentMethods"] = payment_methods
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.payment_method import PaymentMethod
+ from ..models.amount import Amount
+ from ..models.time_duration import TimeDuration
+ d = dict(src_dict)
+ _amount = d.pop("amount", UNSET)
+ amount: Union[Unset, Amount]
+ if isinstance(_amount, Unset):
+ amount = UNSET
+ else:
+ amount = Amount.from_dict(_amount)
+
+
+
+
+ _due_in = d.pop("dueIn", UNSET)
+ due_in: Union[Unset, TimeDuration]
+ if isinstance(_due_in, Unset):
+ due_in = UNSET
+ else:
+ due_in = TimeDuration.from_dict(_due_in)
+
+
+
+
+ payment_methods = []
+ _payment_methods = d.pop("paymentMethods", UNSET)
+ for payment_methods_item_data in (_payment_methods or []):
+ payment_methods_item = PaymentMethod.from_dict(payment_methods_item_data)
+
+
+
+ payment_methods.append(payment_methods_item)
+
+
+ deposit = cls(
+ amount=amount,
+ due_in=due_in,
+ payment_methods=payment_methods,
+ )
+
+
+ deposit.additional_properties = d
+ return deposit
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/account/models/error.py b/ebay_client/generated/account/models/error.py
new file mode 100644
index 0000000..ab2b2eb
--- /dev/null
+++ b/ebay_client/generated/account/models/error.py
@@ -0,0 +1,198 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.error_parameter import ErrorParameter
+
+
+
+
+
+T = TypeVar("T", bound="Error")
+
+
+
+@_attrs_define
+class Error:
+ """ A container that defines the elements of error and warning messages.
+
+ Attributes:
+ category (Union[Unset, str]): The category type for this error or warning. It is a string that can have one of
+ three values:Application: Indicates an exception or error occurred in the application code
+ or at runtime. Examples include catching an exception in a service's business logic, system failures, or request
+ errors from a dependency.Business: Used when your service or a dependent service refused
+ to continue processing on the resource because of a business rule violation such as "Seller does not ship item
+ to Antarctica" or "Buyer ineligible to purchase an alcoholic item". Business errors are not syntactical input
+ errors.Request: Used when there is anything wrong with the request, such as
+ authentication, syntactical errors, rate limiting or missing headers, bad HTTP header values, and so
+ on.
+ domain (Union[Unset, str]): Name of the domain ,or primary system, of the service or application where the error
+ occurred.
+ error_id (Union[Unset, int]): A positive integer that uniquely identifies the specific error condition that
+ occurred. Your application can use error codes as identifiers in your customized error-handling algorithms.
+ input_ref_ids (Union[Unset, list[str]]): Identifies specific request elements associated with the error, if any.
+ inputRefId's response is format specific. For JSON, use JSONPath notation.
+ long_message (Union[Unset, str]): A more detailed explanation of the error than given in the
+ message error field.
+ message (Union[Unset, str]): Information on how to correct the problem, in the end user's terms and language
+ where applicable. Its value is at most 50 characters long. If applicable, the value is localized in the end
+ user's requested locale.
+ output_ref_ids (Union[Unset, list[str]]): Identifies specific response elements associated with the error, if
+ any. Path format is the same as inputRefId.
+ parameters (Union[Unset, list['ErrorParameter']]): This optional list of name/value pairs that contain context-
+ specific ErrorParameter objects, with each item in the list being a parameter (or input field name)
+ that caused an error condition. Each ErrorParameter object consists of two fields, a
+ name and a value.
+ subdomain (Union[Unset, str]): If present, indicates the subsystem in which the error occurred.
+ """
+
+ category: Union[Unset, str] = UNSET
+ domain: Union[Unset, str] = UNSET
+ error_id: Union[Unset, int] = UNSET
+ input_ref_ids: Union[Unset, list[str]] = UNSET
+ long_message: Union[Unset, str] = UNSET
+ message: Union[Unset, str] = UNSET
+ output_ref_ids: Union[Unset, list[str]] = UNSET
+ parameters: Union[Unset, list['ErrorParameter']] = UNSET
+ subdomain: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.error_parameter import ErrorParameter
+ category = self.category
+
+ domain = self.domain
+
+ error_id = self.error_id
+
+ input_ref_ids: Union[Unset, list[str]] = UNSET
+ if not isinstance(self.input_ref_ids, Unset):
+ input_ref_ids = self.input_ref_ids
+
+
+
+ long_message = self.long_message
+
+ message = self.message
+
+ output_ref_ids: Union[Unset, list[str]] = UNSET
+ if not isinstance(self.output_ref_ids, Unset):
+ output_ref_ids = self.output_ref_ids
+
+
+
+ parameters: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.parameters, Unset):
+ parameters = []
+ for parameters_item_data in self.parameters:
+ parameters_item = parameters_item_data.to_dict()
+ parameters.append(parameters_item)
+
+
+
+ subdomain = self.subdomain
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if category is not UNSET:
+ field_dict["category"] = category
+ if domain is not UNSET:
+ field_dict["domain"] = domain
+ if error_id is not UNSET:
+ field_dict["errorId"] = error_id
+ if input_ref_ids is not UNSET:
+ field_dict["inputRefIds"] = input_ref_ids
+ if long_message is not UNSET:
+ field_dict["longMessage"] = long_message
+ if message is not UNSET:
+ field_dict["message"] = message
+ if output_ref_ids is not UNSET:
+ field_dict["outputRefIds"] = output_ref_ids
+ if parameters is not UNSET:
+ field_dict["parameters"] = parameters
+ if subdomain is not UNSET:
+ field_dict["subdomain"] = subdomain
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.error_parameter import ErrorParameter
+ d = dict(src_dict)
+ category = d.pop("category", UNSET)
+
+ domain = d.pop("domain", UNSET)
+
+ error_id = d.pop("errorId", UNSET)
+
+ input_ref_ids = cast(list[str], d.pop("inputRefIds", UNSET))
+
+
+ long_message = d.pop("longMessage", UNSET)
+
+ message = d.pop("message", UNSET)
+
+ output_ref_ids = cast(list[str], d.pop("outputRefIds", UNSET))
+
+
+ parameters = []
+ _parameters = d.pop("parameters", UNSET)
+ for parameters_item_data in (_parameters or []):
+ parameters_item = ErrorParameter.from_dict(parameters_item_data)
+
+
+
+ parameters.append(parameters_item)
+
+
+ subdomain = d.pop("subdomain", UNSET)
+
+ error = cls(
+ category=category,
+ domain=domain,
+ error_id=error_id,
+ input_ref_ids=input_ref_ids,
+ long_message=long_message,
+ message=message,
+ output_ref_ids=output_ref_ids,
+ parameters=parameters,
+ subdomain=subdomain,
+ )
+
+
+ error.additional_properties = d
+ return error
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/account/models/error_parameter.py b/ebay_client/generated/account/models/error_parameter.py
new file mode 100644
index 0000000..282026f
--- /dev/null
+++ b/ebay_client/generated/account/models/error_parameter.py
@@ -0,0 +1,88 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="ErrorParameter")
+
+
+
+@_attrs_define
+class ErrorParameter:
+ """ A complex type that indicates a parameter that caused an error and the value of the parameter which caused the
+ error.
+
+ Attributes:
+ name (Union[Unset, str]): Name of the parameter that caused the error.
+ value (Union[Unset, str]): The value of the parameter that caused the error.
+ """
+
+ name: Union[Unset, str] = UNSET
+ value: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ name = self.name
+
+ value = self.value
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if name is not UNSET:
+ field_dict["name"] = name
+ if value is not UNSET:
+ field_dict["value"] = value
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ name = d.pop("name", UNSET)
+
+ value = d.pop("value", UNSET)
+
+ error_parameter = cls(
+ name=name,
+ value=value,
+ )
+
+
+ error_parameter.additional_properties = d
+ return error_parameter
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/account/models/fulfillment_policy.py b/ebay_client/generated/account/models/fulfillment_policy.py
new file mode 100644
index 0000000..49cfe4b
--- /dev/null
+++ b/ebay_client/generated/account/models/fulfillment_policy.py
@@ -0,0 +1,270 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.shipping_option import ShippingOption
+ from ..models.category_type import CategoryType
+ from ..models.time_duration import TimeDuration
+ from ..models.region_set import RegionSet
+
+
+
+
+
+T = TypeVar("T", bound="FulfillmentPolicy")
+
+
+
+@_attrs_define
+class FulfillmentPolicy:
+ """ This type is used by the fulfillmentPolicy response container, a container which defines a seller's
+ fulfillment policy for a specific marketplace.
+
+ Attributes:
+ category_types (Union[Unset, list['CategoryType']]): This container indicates whether the fulfillment policy
+ applies to motor vehicle listings, or if it applies to non-motor vehicle listings.
+ description (Union[Unset, str]): A seller-defined description of the fulfillment policy. This description is
+ only for the seller's use, and is not exposed on any eBay pages. This field is returned if set for the policy.
+
Max length: 250
+ freight_shipping (Union[Unset, bool]): If returned as true, the seller offers freight shipping.
+ Freight shipping can be used for large items over 150 lbs.
+ fulfillment_policy_id (Union[Unset, str]): A unique eBay-assigned ID for the fulfillment policy. This ID is
+ generated when the policy is created.
+ global_shipping (Union[Unset, bool]): Note: This field is only applicable for the
+ eBay United Kingdom marketplace (EBAY_GB).
If returned as true, eBay's
+ Global Shipping Program will be used by the seller to ship items to international locations.
eBay
+ International Shipping is an account level setting; no field needs to be set in a Fulfillment business policy to
+ enable eBay International Shipping. If a US seller's account is opted in to eBay International Shipping, this
+ shipping option will be enabled automatically for all listings where international shipping is available. A US
+ seller who is opted in to eBay International Shipping can also specify individual international shipping service
+ options for a Fulfillment business policy.
+ handling_time (Union[Unset, TimeDuration]): A type used to specify a period of time using a specified time-
+ measurement unit. Payment, return, and fulfillment business policies all use this type to specify time
+ windows.
Whenever a container that uses this type is used in a request, both of these fields are
+ required. Similarly, whenever a container that uses this type is returned in a response, both of these fields
+ are always returned.
+ local_pickup (Union[Unset, bool]): If returned as true, local pickup is available for this policy.
+ marketplace_id (Union[Unset, str]): The ID of the eBay marketplace to which this fulfillment policy applies. For
+ implementation help, refer to eBay API documentation
+ name (Union[Unset, str]): A seller-defined name for this fulfillment policy. Names must be unique for policies
+ assigned to the same marketplace.
Max length: 64
+ pickup_drop_off (Union[Unset, bool]): If returned as true, the seller offers the "Click and
+ Collect" option.
Currently, "Click and Collect" is available only to large retail merchants the eBay AU,
+ UK, DE, FR, and IT marketplaces.
+ shipping_options (Union[Unset, list['ShippingOption']]): This array is used to provide detailed information on
+ the domestic and international shipping options available for the policy. A separate ShippingOption
+ object covers domestic shipping service options and international shipping service options (if the seller ships
+ to international locations).
The optionType field indicates whether the ShippingOption
+ object applies to domestic or international shipping, and the costType field indicates whether flat-rate
+ shipping or calculated shipping will be used. A separate ShippingServices object is used to specify
+ cost and other details for every available domestic and international shipping service option.
+ ship_to_locations (Union[Unset, RegionSet]): This type consists of the regionIncluded and
+ regionExcluded arrays, which indicate the areas to where the seller does and doesn't ship.
+ """
+
+ category_types: Union[Unset, list['CategoryType']] = UNSET
+ description: Union[Unset, str] = UNSET
+ freight_shipping: Union[Unset, bool] = UNSET
+ fulfillment_policy_id: Union[Unset, str] = UNSET
+ global_shipping: Union[Unset, bool] = UNSET
+ handling_time: Union[Unset, 'TimeDuration'] = UNSET
+ local_pickup: Union[Unset, bool] = UNSET
+ marketplace_id: Union[Unset, str] = UNSET
+ name: Union[Unset, str] = UNSET
+ pickup_drop_off: Union[Unset, bool] = UNSET
+ shipping_options: Union[Unset, list['ShippingOption']] = UNSET
+ ship_to_locations: Union[Unset, 'RegionSet'] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.shipping_option import ShippingOption
+ from ..models.category_type import CategoryType
+ from ..models.time_duration import TimeDuration
+ from ..models.region_set import RegionSet
+ category_types: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.category_types, Unset):
+ category_types = []
+ for category_types_item_data in self.category_types:
+ category_types_item = category_types_item_data.to_dict()
+ category_types.append(category_types_item)
+
+
+
+ description = self.description
+
+ freight_shipping = self.freight_shipping
+
+ fulfillment_policy_id = self.fulfillment_policy_id
+
+ global_shipping = self.global_shipping
+
+ handling_time: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.handling_time, Unset):
+ handling_time = self.handling_time.to_dict()
+
+ local_pickup = self.local_pickup
+
+ marketplace_id = self.marketplace_id
+
+ name = self.name
+
+ pickup_drop_off = self.pickup_drop_off
+
+ shipping_options: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.shipping_options, Unset):
+ shipping_options = []
+ for shipping_options_item_data in self.shipping_options:
+ shipping_options_item = shipping_options_item_data.to_dict()
+ shipping_options.append(shipping_options_item)
+
+
+
+ ship_to_locations: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.ship_to_locations, Unset):
+ ship_to_locations = self.ship_to_locations.to_dict()
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if category_types is not UNSET:
+ field_dict["categoryTypes"] = category_types
+ if description is not UNSET:
+ field_dict["description"] = description
+ if freight_shipping is not UNSET:
+ field_dict["freightShipping"] = freight_shipping
+ if fulfillment_policy_id is not UNSET:
+ field_dict["fulfillmentPolicyId"] = fulfillment_policy_id
+ if global_shipping is not UNSET:
+ field_dict["globalShipping"] = global_shipping
+ if handling_time is not UNSET:
+ field_dict["handlingTime"] = handling_time
+ if local_pickup is not UNSET:
+ field_dict["localPickup"] = local_pickup
+ if marketplace_id is not UNSET:
+ field_dict["marketplaceId"] = marketplace_id
+ if name is not UNSET:
+ field_dict["name"] = name
+ if pickup_drop_off is not UNSET:
+ field_dict["pickupDropOff"] = pickup_drop_off
+ if shipping_options is not UNSET:
+ field_dict["shippingOptions"] = shipping_options
+ if ship_to_locations is not UNSET:
+ field_dict["shipToLocations"] = ship_to_locations
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.shipping_option import ShippingOption
+ from ..models.category_type import CategoryType
+ from ..models.time_duration import TimeDuration
+ from ..models.region_set import RegionSet
+ d = dict(src_dict)
+ category_types = []
+ _category_types = d.pop("categoryTypes", UNSET)
+ for category_types_item_data in (_category_types or []):
+ category_types_item = CategoryType.from_dict(category_types_item_data)
+
+
+
+ category_types.append(category_types_item)
+
+
+ description = d.pop("description", UNSET)
+
+ freight_shipping = d.pop("freightShipping", UNSET)
+
+ fulfillment_policy_id = d.pop("fulfillmentPolicyId", UNSET)
+
+ global_shipping = d.pop("globalShipping", UNSET)
+
+ _handling_time = d.pop("handlingTime", UNSET)
+ handling_time: Union[Unset, TimeDuration]
+ if isinstance(_handling_time, Unset):
+ handling_time = UNSET
+ else:
+ handling_time = TimeDuration.from_dict(_handling_time)
+
+
+
+
+ local_pickup = d.pop("localPickup", UNSET)
+
+ marketplace_id = d.pop("marketplaceId", UNSET)
+
+ name = d.pop("name", UNSET)
+
+ pickup_drop_off = d.pop("pickupDropOff", UNSET)
+
+ shipping_options = []
+ _shipping_options = d.pop("shippingOptions", UNSET)
+ for shipping_options_item_data in (_shipping_options or []):
+ shipping_options_item = ShippingOption.from_dict(shipping_options_item_data)
+
+
+
+ shipping_options.append(shipping_options_item)
+
+
+ _ship_to_locations = d.pop("shipToLocations", UNSET)
+ ship_to_locations: Union[Unset, RegionSet]
+ if isinstance(_ship_to_locations, Unset):
+ ship_to_locations = UNSET
+ else:
+ ship_to_locations = RegionSet.from_dict(_ship_to_locations)
+
+
+
+
+ fulfillment_policy = cls(
+ category_types=category_types,
+ description=description,
+ freight_shipping=freight_shipping,
+ fulfillment_policy_id=fulfillment_policy_id,
+ global_shipping=global_shipping,
+ handling_time=handling_time,
+ local_pickup=local_pickup,
+ marketplace_id=marketplace_id,
+ name=name,
+ pickup_drop_off=pickup_drop_off,
+ shipping_options=shipping_options,
+ ship_to_locations=ship_to_locations,
+ )
+
+
+ fulfillment_policy.additional_properties = d
+ return fulfillment_policy
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/account/models/fulfillment_policy_request.py b/ebay_client/generated/account/models/fulfillment_policy_request.py
new file mode 100644
index 0000000..f0d2751
--- /dev/null
+++ b/ebay_client/generated/account/models/fulfillment_policy_request.py
@@ -0,0 +1,284 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.shipping_option import ShippingOption
+ from ..models.category_type import CategoryType
+ from ..models.time_duration import TimeDuration
+ from ..models.region_set import RegionSet
+
+
+
+
+
+T = TypeVar("T", bound="FulfillmentPolicyRequest")
+
+
+
+@_attrs_define
+class FulfillmentPolicyRequest:
+ """ This root container defines a seller's fulfillment policy for a specific marketplace and category group. This type
+ is used when creating or updating a fulfillment business policy.
+
+ Attributes:
+ category_types (Union[Unset, list['CategoryType']]): This container is used to specify whether the fulfillment
+ business policy applies to motor vehicle listings, or if it applies to non-motor vehicle listings.
+ description (Union[Unset, str]): A seller-defined description of the fulfillment policy. This description is
+ only for the seller's use, and is not exposed on any eBay pages.
Max length: 250
+ freight_shipping (Union[Unset, bool]): This field is included and set to true if freight shipping
+ is available for the item. Freight shipping can be used for large items over 150 lbs.
Default:
+ false
+ global_shipping (Union[Unset, bool]): Note: This field is only applicable for the
+ eBay United Kingdom marketplace (EBAY_GB).
This field is included and set to
+ true if the seller wants to use the Global Shipping Program for international shipments. See the Global Shipping Program help topic for more
+ details and requirements on the Global Shipping Program.
A seller can use a combination of the Global
+ Shipping Program and other international shipping services.
If set to false or if the field
+ is omitted, the seller has to manually specifying individual international shipping services (if the seller
+ ships internationally), as described in Setting up worldwide shipping.
Sellers opt in or out of the
+ Global Shipping Program through the Shipping preferences in My eBay.
eBay International Shipping is an
+ account level setting; no field needs to be set in a Fulfillment business policy to enable eBay International
+ Shipping. If a US seller's account is opted in to eBay International Shipping, this shipping option will be
+ enabled automatically for all listings where international shipping is available. A US seller who is opted in to
+ eBay International Shipping can also specify individual international shipping service options for a Fulfillment
+ business policy.Default: false
+ handling_time (Union[Unset, TimeDuration]): A type used to specify a period of time using a specified time-
+ measurement unit. Payment, return, and fulfillment business policies all use this type to specify time
+ windows.
Whenever a container that uses this type is used in a request, both of these fields are
+ required. Similarly, whenever a container that uses this type is returned in a response, both of these fields
+ are always returned.
+ local_pickup (Union[Unset, bool]): This field should be included and set to true if local pickup is
+ one of the fulfillment options available to the buyer. It is possible for the seller to make local pickup and
+ some shipping service options available to the buyer.
With local pickup, the buyer and seller make
+ arrangements for pickup time and location.
Default: false
+ marketplace_id (Union[Unset, str]): The ID of the eBay marketplace to which this fulfillment policy applies. For
+ implementation help, refer to eBay API documentation
+ name (Union[Unset, str]): A seller-defined name for this fulfillment policy. Names must be unique for policies
+ assigned to the same marketplace.
Max length: 64
+ pickup_drop_off (Union[Unset, bool]): This field should be included and set to true if the seller
+ offers the "Click and Collect" feature for an item. To enable "Click and Collect" on a listing, a seller must
+ be eligible for Click and Collect. Currently, Click and Collect is available to only large retail merchants
+ selling in the eBay AU, UK, DE, FR, and IT marketplaces.
In addition to setting this field to
+ true, the merchant must also do the following to enable the "Click and Collect" option on a
+ listing:
When a merchant successfully lists an item with Click and Collect,
+ prospective buyers within a reasonable distance from one of the merchant's stores (that has stock available)
+ will see the "Available for Click and Collect" option on the listing, along with information on the closest
+ store that has the item.
Default: false
+ shipping_options (Union[Unset, list['ShippingOption']]): This array is used to provide detailed information on
+ the domestic and international shipping options available for the policy.
A separate
+ ShippingOption object is required for domestic shipping service options and for international shipping
+ service options (if the seller ships to international locations). - The optionType field is used to
+ indicate whether the ShippingOption object applies to domestic or international shipping, and the
+ costType field is used to indicate whether flat-rate shipping or calculated shipping will be used.
+ - The rateTableId field can be used to associate a defined shipping rate table to the policy, and the
+ packageHandlingCost container can be used to set a handling charge for the policy.
A
+ separate ShippingServices object will be used to specify cost and other details for every available
+ domestic and international shipping service option.
+ ship_to_locations (Union[Unset, RegionSet]): This type consists of the regionIncluded and
+ regionExcluded arrays, which indicate the areas to where the seller does and doesn't ship.
+ """
+
+ category_types: Union[Unset, list['CategoryType']] = UNSET
+ description: Union[Unset, str] = UNSET
+ freight_shipping: Union[Unset, bool] = UNSET
+ global_shipping: Union[Unset, bool] = UNSET
+ handling_time: Union[Unset, 'TimeDuration'] = UNSET
+ local_pickup: Union[Unset, bool] = UNSET
+ marketplace_id: Union[Unset, str] = UNSET
+ name: Union[Unset, str] = UNSET
+ pickup_drop_off: Union[Unset, bool] = UNSET
+ shipping_options: Union[Unset, list['ShippingOption']] = UNSET
+ ship_to_locations: Union[Unset, 'RegionSet'] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.shipping_option import ShippingOption
+ from ..models.category_type import CategoryType
+ from ..models.time_duration import TimeDuration
+ from ..models.region_set import RegionSet
+ category_types: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.category_types, Unset):
+ category_types = []
+ for category_types_item_data in self.category_types:
+ category_types_item = category_types_item_data.to_dict()
+ category_types.append(category_types_item)
+
+
+
+ description = self.description
+
+ freight_shipping = self.freight_shipping
+
+ global_shipping = self.global_shipping
+
+ handling_time: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.handling_time, Unset):
+ handling_time = self.handling_time.to_dict()
+
+ local_pickup = self.local_pickup
+
+ marketplace_id = self.marketplace_id
+
+ name = self.name
+
+ pickup_drop_off = self.pickup_drop_off
+
+ shipping_options: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.shipping_options, Unset):
+ shipping_options = []
+ for shipping_options_item_data in self.shipping_options:
+ shipping_options_item = shipping_options_item_data.to_dict()
+ shipping_options.append(shipping_options_item)
+
+
+
+ ship_to_locations: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.ship_to_locations, Unset):
+ ship_to_locations = self.ship_to_locations.to_dict()
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if category_types is not UNSET:
+ field_dict["categoryTypes"] = category_types
+ if description is not UNSET:
+ field_dict["description"] = description
+ if freight_shipping is not UNSET:
+ field_dict["freightShipping"] = freight_shipping
+ if global_shipping is not UNSET:
+ field_dict["globalShipping"] = global_shipping
+ if handling_time is not UNSET:
+ field_dict["handlingTime"] = handling_time
+ if local_pickup is not UNSET:
+ field_dict["localPickup"] = local_pickup
+ if marketplace_id is not UNSET:
+ field_dict["marketplaceId"] = marketplace_id
+ if name is not UNSET:
+ field_dict["name"] = name
+ if pickup_drop_off is not UNSET:
+ field_dict["pickupDropOff"] = pickup_drop_off
+ if shipping_options is not UNSET:
+ field_dict["shippingOptions"] = shipping_options
+ if ship_to_locations is not UNSET:
+ field_dict["shipToLocations"] = ship_to_locations
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.shipping_option import ShippingOption
+ from ..models.category_type import CategoryType
+ from ..models.time_duration import TimeDuration
+ from ..models.region_set import RegionSet
+ d = dict(src_dict)
+ category_types = []
+ _category_types = d.pop("categoryTypes", UNSET)
+ for category_types_item_data in (_category_types or []):
+ category_types_item = CategoryType.from_dict(category_types_item_data)
+
+
+
+ category_types.append(category_types_item)
+
+
+ description = d.pop("description", UNSET)
+
+ freight_shipping = d.pop("freightShipping", UNSET)
+
+ global_shipping = d.pop("globalShipping", UNSET)
+
+ _handling_time = d.pop("handlingTime", UNSET)
+ handling_time: Union[Unset, TimeDuration]
+ if isinstance(_handling_time, Unset):
+ handling_time = UNSET
+ else:
+ handling_time = TimeDuration.from_dict(_handling_time)
+
+
+
+
+ local_pickup = d.pop("localPickup", UNSET)
+
+ marketplace_id = d.pop("marketplaceId", UNSET)
+
+ name = d.pop("name", UNSET)
+
+ pickup_drop_off = d.pop("pickupDropOff", UNSET)
+
+ shipping_options = []
+ _shipping_options = d.pop("shippingOptions", UNSET)
+ for shipping_options_item_data in (_shipping_options or []):
+ shipping_options_item = ShippingOption.from_dict(shipping_options_item_data)
+
+
+
+ shipping_options.append(shipping_options_item)
+
+
+ _ship_to_locations = d.pop("shipToLocations", UNSET)
+ ship_to_locations: Union[Unset, RegionSet]
+ if isinstance(_ship_to_locations, Unset):
+ ship_to_locations = UNSET
+ else:
+ ship_to_locations = RegionSet.from_dict(_ship_to_locations)
+
+
+
+
+ fulfillment_policy_request = cls(
+ category_types=category_types,
+ description=description,
+ freight_shipping=freight_shipping,
+ global_shipping=global_shipping,
+ handling_time=handling_time,
+ local_pickup=local_pickup,
+ marketplace_id=marketplace_id,
+ name=name,
+ pickup_drop_off=pickup_drop_off,
+ shipping_options=shipping_options,
+ ship_to_locations=ship_to_locations,
+ )
+
+
+ fulfillment_policy_request.additional_properties = d
+ return fulfillment_policy_request
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/account/models/fulfillment_policy_response.py b/ebay_client/generated/account/models/fulfillment_policy_response.py
new file mode 100644
index 0000000..b5639aa
--- /dev/null
+++ b/ebay_client/generated/account/models/fulfillment_policy_response.py
@@ -0,0 +1,158 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.fulfillment_policy import FulfillmentPolicy
+
+
+
+
+
+T = TypeVar("T", bound="FulfillmentPolicyResponse")
+
+
+
+@_attrs_define
+class FulfillmentPolicyResponse:
+ """ The response payload for the getFulfillmentPolicies method.
Note:
+ Pagination has not yet been enabled for getFulfillmentPolicies, so all of the pagination-related fields are
+ for future use.
+
+ Attributes:
+ fulfillment_policies (Union[Unset, list['FulfillmentPolicy']]): A list of all of the seller's fulfillment
+ policies defined for the specified marketplace. This array will be returned as empty if no fulfillment policies
+ are defined for the specified marketplace.
+ href (Union[Unset, str]): This field is for future use.
+ limit (Union[Unset, int]): This field is for future use.
+ next_ (Union[Unset, str]): This field is for future use.
+ offset (Union[Unset, int]): This field is for future use.
+ prev (Union[Unset, str]): This field is for future use.
+ total (Union[Unset, int]): The total number of fulfillment policies retrieved in the result set.
If no
+ fulfillment policies are defined for the specified marketplace, this field is returned with a value of
+ 0.
+ """
+
+ fulfillment_policies: Union[Unset, list['FulfillmentPolicy']] = UNSET
+ href: Union[Unset, str] = UNSET
+ limit: Union[Unset, int] = UNSET
+ next_: Union[Unset, str] = UNSET
+ offset: Union[Unset, int] = UNSET
+ prev: Union[Unset, str] = UNSET
+ total: Union[Unset, int] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.fulfillment_policy import FulfillmentPolicy
+ fulfillment_policies: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.fulfillment_policies, Unset):
+ fulfillment_policies = []
+ for fulfillment_policies_item_data in self.fulfillment_policies:
+ fulfillment_policies_item = fulfillment_policies_item_data.to_dict()
+ fulfillment_policies.append(fulfillment_policies_item)
+
+
+
+ href = self.href
+
+ limit = self.limit
+
+ next_ = self.next_
+
+ offset = self.offset
+
+ prev = self.prev
+
+ total = self.total
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if fulfillment_policies is not UNSET:
+ field_dict["fulfillmentPolicies"] = fulfillment_policies
+ if href is not UNSET:
+ field_dict["href"] = href
+ if limit is not UNSET:
+ field_dict["limit"] = limit
+ if next_ is not UNSET:
+ field_dict["next"] = next_
+ if offset is not UNSET:
+ field_dict["offset"] = offset
+ if prev is not UNSET:
+ field_dict["prev"] = prev
+ if total is not UNSET:
+ field_dict["total"] = total
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.fulfillment_policy import FulfillmentPolicy
+ d = dict(src_dict)
+ fulfillment_policies = []
+ _fulfillment_policies = d.pop("fulfillmentPolicies", UNSET)
+ for fulfillment_policies_item_data in (_fulfillment_policies or []):
+ fulfillment_policies_item = FulfillmentPolicy.from_dict(fulfillment_policies_item_data)
+
+
+
+ fulfillment_policies.append(fulfillment_policies_item)
+
+
+ href = d.pop("href", UNSET)
+
+ limit = d.pop("limit", UNSET)
+
+ next_ = d.pop("next", UNSET)
+
+ offset = d.pop("offset", UNSET)
+
+ prev = d.pop("prev", UNSET)
+
+ total = d.pop("total", UNSET)
+
+ fulfillment_policy_response = cls(
+ fulfillment_policies=fulfillment_policies,
+ href=href,
+ limit=limit,
+ next_=next_,
+ offset=offset,
+ prev=prev,
+ total=total,
+ )
+
+
+ fulfillment_policy_response.additional_properties = d
+ return fulfillment_policy_response
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/account/models/international_return_override_type.py b/ebay_client/generated/account/models/international_return_override_type.py
new file mode 100644
index 0000000..20f9f57
--- /dev/null
+++ b/ebay_client/generated/account/models/international_return_override_type.py
@@ -0,0 +1,138 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.time_duration import TimeDuration
+
+
+
+
+
+T = TypeVar("T", bound="InternationalReturnOverrideType")
+
+
+
+@_attrs_define
+class InternationalReturnOverrideType:
+ """ This type defines the fields for a seller's international return policy. Sellers have the ability to set separate
+ domestic and international return policies, but if an international return policy is not set, the same return policy
+ settings specified for the domestic return policy are also used for returns for international buyers.
+
+ Attributes:
+ return_method (Union[Unset, str]): This field sets/indicates if the seller offers replacement items to the buyer
+ in the case of an international return. The buyer must be willing to accept a replacement item; otherwise, the
+ seller will need to issue a refund for a return. For implementation help, refer to eBay API documentation
+ return_period (Union[Unset, TimeDuration]): A type used to specify a period of time using a specified time-
+ measurement unit. Payment, return, and fulfillment business policies all use this type to specify time
+ windows.
Whenever a container that uses this type is used in a request, both of these fields are
+ required. Similarly, whenever a container that uses this type is returned in a response, both of these fields
+ are always returned.
+ returns_accepted (Union[Unset, bool]): If set to true, the seller accepts international returns. If
+ set to false, the seller does not accept international returns.
This field is
+ conditionally required if the seller chooses to have a separate international return policy.
+ return_shipping_cost_payer (Union[Unset, str]): This field indicates who is responsible for paying for the
+ shipping charges for returned items. The field can be set to either BUYER or SELLER.
+
Depending on the return policy and specifics of the return, either the buyer or the seller can be
+ responsible for the return shipping costs. Note that the seller is always responsible for return shipping costs
+ for 'significantly not as described' (SNAD) issues.
This field is conditionally required if the
+ internationalOverride.returnsAccepted field is set to true. For implementation help, refer
+ to eBay API
+ documentation
+ """
+
+ return_method: Union[Unset, str] = UNSET
+ return_period: Union[Unset, 'TimeDuration'] = UNSET
+ returns_accepted: Union[Unset, bool] = UNSET
+ return_shipping_cost_payer: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.time_duration import TimeDuration
+ return_method = self.return_method
+
+ return_period: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.return_period, Unset):
+ return_period = self.return_period.to_dict()
+
+ returns_accepted = self.returns_accepted
+
+ return_shipping_cost_payer = self.return_shipping_cost_payer
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if return_method is not UNSET:
+ field_dict["returnMethod"] = return_method
+ if return_period is not UNSET:
+ field_dict["returnPeriod"] = return_period
+ if returns_accepted is not UNSET:
+ field_dict["returnsAccepted"] = returns_accepted
+ if return_shipping_cost_payer is not UNSET:
+ field_dict["returnShippingCostPayer"] = return_shipping_cost_payer
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.time_duration import TimeDuration
+ d = dict(src_dict)
+ return_method = d.pop("returnMethod", UNSET)
+
+ _return_period = d.pop("returnPeriod", UNSET)
+ return_period: Union[Unset, TimeDuration]
+ if isinstance(_return_period, Unset):
+ return_period = UNSET
+ else:
+ return_period = TimeDuration.from_dict(_return_period)
+
+
+
+
+ returns_accepted = d.pop("returnsAccepted", UNSET)
+
+ return_shipping_cost_payer = d.pop("returnShippingCostPayer", UNSET)
+
+ international_return_override_type = cls(
+ return_method=return_method,
+ return_period=return_period,
+ returns_accepted=returns_accepted,
+ return_shipping_cost_payer=return_shipping_cost_payer,
+ )
+
+
+ international_return_override_type.additional_properties = d
+ return international_return_override_type
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/account/models/kyc_check.py b/ebay_client/generated/account/models/kyc_check.py
new file mode 100644
index 0000000..5281f4d
--- /dev/null
+++ b/ebay_client/generated/account/models/kyc_check.py
@@ -0,0 +1,125 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="KycCheck")
+
+
+
+@_attrs_define
+class KycCheck:
+ """ This type is used to provide details about any KYC check that is applicable to the managed payments seller.
+
+ Attributes:
+ data_required (Union[Unset, str]): The enumeration value returned in this field categorizes the type of details
+ needed for the KYC check. More information about the check is shown in the detailMessage and other
+ applicable, corresponding fields. For implementation help, refer to eBay API documentation
+ due_date (Union[Unset, str]): The timestamp in this field indicates the date by which the seller should resolve
+ the KYC requirement.
The timestamp in this field uses the UTC date and time format described in the ISO 8601 Standard. See below
+ for this format and an example:
MM-DD-YYYY HH:MM:SS
06-05-2020 10:34:18
+ remedy_url (Union[Unset, str]): If applicable and available, a URL will be returned in this field, and the link
+ will take the seller to an eBay page where they can provide the requested information.
+ alert (Union[Unset, str]): This field gives a short summary of what is required from the seller. An example
+ might be, 'Upload bank document now.'. The detailMessage field will often provide more
+ details on what is required of the seller.
+ detail_message (Union[Unset, str]): This field gives a detailed message about what is required from the seller.
+ An example might be, 'Please upload a bank document by 2020-08-01 to get your account back in good
+ standing.'.
+ """
+
+ data_required: Union[Unset, str] = UNSET
+ due_date: Union[Unset, str] = UNSET
+ remedy_url: Union[Unset, str] = UNSET
+ alert: Union[Unset, str] = UNSET
+ detail_message: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ data_required = self.data_required
+
+ due_date = self.due_date
+
+ remedy_url = self.remedy_url
+
+ alert = self.alert
+
+ detail_message = self.detail_message
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if data_required is not UNSET:
+ field_dict["dataRequired"] = data_required
+ if due_date is not UNSET:
+ field_dict["dueDate"] = due_date
+ if remedy_url is not UNSET:
+ field_dict["remedyUrl"] = remedy_url
+ if alert is not UNSET:
+ field_dict["alert"] = alert
+ if detail_message is not UNSET:
+ field_dict["detailMessage"] = detail_message
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ data_required = d.pop("dataRequired", UNSET)
+
+ due_date = d.pop("dueDate", UNSET)
+
+ remedy_url = d.pop("remedyUrl", UNSET)
+
+ alert = d.pop("alert", UNSET)
+
+ detail_message = d.pop("detailMessage", UNSET)
+
+ kyc_check = cls(
+ data_required=data_required,
+ due_date=due_date,
+ remedy_url=remedy_url,
+ alert=alert,
+ detail_message=detail_message,
+ )
+
+
+ kyc_check.additional_properties = d
+ return kyc_check
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/account/models/kyc_response.py b/ebay_client/generated/account/models/kyc_response.py
new file mode 100644
index 0000000..8dffdca
--- /dev/null
+++ b/ebay_client/generated/account/models/kyc_response.py
@@ -0,0 +1,102 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.kyc_check import KycCheck
+
+
+
+
+
+T = TypeVar("T", bound="KycResponse")
+
+
+
+@_attrs_define
+class KycResponse:
+ """ This is the base response type of the getKYC method.
+
+ Attributes:
+ kyc_checks (Union[Unset, list['KycCheck']]): This array contains one or more KYC checks required from a managed
+ payments seller. The seller may need to provide more documentation and/or information about themselves, their
+ company, or the bank account they are using for seller payouts.
If no KYC checks are currently required
+ from the seller, this array is not returned, and the seller only receives a 204 No Content HTTP
+ status code.
+ """
+
+ kyc_checks: Union[Unset, list['KycCheck']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.kyc_check import KycCheck
+ kyc_checks: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.kyc_checks, Unset):
+ kyc_checks = []
+ for kyc_checks_item_data in self.kyc_checks:
+ kyc_checks_item = kyc_checks_item_data.to_dict()
+ kyc_checks.append(kyc_checks_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if kyc_checks is not UNSET:
+ field_dict["kycChecks"] = kyc_checks
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.kyc_check import KycCheck
+ d = dict(src_dict)
+ kyc_checks = []
+ _kyc_checks = d.pop("kycChecks", UNSET)
+ for kyc_checks_item_data in (_kyc_checks or []):
+ kyc_checks_item = KycCheck.from_dict(kyc_checks_item_data)
+
+
+
+ kyc_checks.append(kyc_checks_item)
+
+
+ kyc_response = cls(
+ kyc_checks=kyc_checks,
+ )
+
+
+ kyc_response.additional_properties = d
+ return kyc_response
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/account/models/opt_in_to_program_response_200.py b/ebay_client/generated/account/models/opt_in_to_program_response_200.py
new file mode 100644
index 0000000..368c1d1
--- /dev/null
+++ b/ebay_client/generated/account/models/opt_in_to_program_response_200.py
@@ -0,0 +1,63 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+
+
+
+
+
+
+T = TypeVar("T", bound="OptInToProgramResponse200")
+
+
+
+@_attrs_define
+class OptInToProgramResponse200:
+ """
+ """
+
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ opt_in_to_program_response_200 = cls(
+ )
+
+
+ opt_in_to_program_response_200.additional_properties = d
+ return opt_in_to_program_response_200
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/account/models/opt_out_of_program_response_200.py b/ebay_client/generated/account/models/opt_out_of_program_response_200.py
new file mode 100644
index 0000000..fce27b5
--- /dev/null
+++ b/ebay_client/generated/account/models/opt_out_of_program_response_200.py
@@ -0,0 +1,63 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+
+
+
+
+
+
+T = TypeVar("T", bound="OptOutOfProgramResponse200")
+
+
+
+@_attrs_define
+class OptOutOfProgramResponse200:
+ """
+ """
+
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ opt_out_of_program_response_200 = cls(
+ )
+
+
+ opt_out_of_program_response_200.additional_properties = d
+ return opt_out_of_program_response_200
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/account/models/payment_method.py b/ebay_client/generated/account/models/payment_method.py
new file mode 100644
index 0000000..02d6978
--- /dev/null
+++ b/ebay_client/generated/account/models/payment_method.py
@@ -0,0 +1,127 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.recipient_account_reference import RecipientAccountReference
+
+
+
+
+
+T = TypeVar("T", bound="PaymentMethod")
+
+
+
+@_attrs_define
+class PaymentMethod:
+ """ This type is used by the paymentMethods container, which is used by the seller to specify one or more offline
+ payment methods.
Note: eBay now controls all electronic payment methods
+ available for a marketplace, so a seller will no longer use this type to specify any electronic payment
+ methods.
+
+ Attributes:
+ brands (Union[Unset, list[str]]): Note: This array is no longer applicable and
+ should not be used. eBay now controls all electronic payment methods available for a marketplace, and a seller
+ never has to specify any electronic payment methods, including any credit card brands accepted.
+ payment_method_type (Union[Unset, str]): This array is only applicable for listings supporting offline payment
+ methods. See the PaymentMethodTypeEnum type for supported offline payment method enum values. If offline
+ payments are enabled for the policy, provide at least one offline payment method.
For implementation help,
+ refer to eBay API
+ documentation
+ recipient_account_reference (Union[Unset, RecipientAccountReference]): Note: This
+ type is no longer applicable. eBay now controls all electronic payment methods available for a marketplace, and
+ a seller never has to specify any electronic payment methods.
+ """
+
+ brands: Union[Unset, list[str]] = UNSET
+ payment_method_type: Union[Unset, str] = UNSET
+ recipient_account_reference: Union[Unset, 'RecipientAccountReference'] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.recipient_account_reference import RecipientAccountReference
+ brands: Union[Unset, list[str]] = UNSET
+ if not isinstance(self.brands, Unset):
+ brands = self.brands
+
+
+
+ payment_method_type = self.payment_method_type
+
+ recipient_account_reference: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.recipient_account_reference, Unset):
+ recipient_account_reference = self.recipient_account_reference.to_dict()
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if brands is not UNSET:
+ field_dict["brands"] = brands
+ if payment_method_type is not UNSET:
+ field_dict["paymentMethodType"] = payment_method_type
+ if recipient_account_reference is not UNSET:
+ field_dict["recipientAccountReference"] = recipient_account_reference
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.recipient_account_reference import RecipientAccountReference
+ d = dict(src_dict)
+ brands = cast(list[str], d.pop("brands", UNSET))
+
+
+ payment_method_type = d.pop("paymentMethodType", UNSET)
+
+ _recipient_account_reference = d.pop("recipientAccountReference", UNSET)
+ recipient_account_reference: Union[Unset, RecipientAccountReference]
+ if isinstance(_recipient_account_reference, Unset):
+ recipient_account_reference = UNSET
+ else:
+ recipient_account_reference = RecipientAccountReference.from_dict(_recipient_account_reference)
+
+
+
+
+ payment_method = cls(
+ brands=brands,
+ payment_method_type=payment_method_type,
+ recipient_account_reference=recipient_account_reference,
+ )
+
+
+ payment_method.additional_properties = d
+ return payment_method
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/account/models/payment_policy.py b/ebay_client/generated/account/models/payment_policy.py
new file mode 100644
index 0000000..ae54641
--- /dev/null
+++ b/ebay_client/generated/account/models/payment_policy.py
@@ -0,0 +1,247 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.payment_method import PaymentMethod
+ from ..models.category_type import CategoryType
+ from ..models.time_duration import TimeDuration
+ from ..models.deposit import Deposit
+
+
+
+
+
+T = TypeVar("T", bound="PaymentPolicy")
+
+
+
+@_attrs_define
+class PaymentPolicy:
+ """ This type is used by the paymentPolicy response container, a container which defines a seller's payment
+ business policy for a specific marketplace.
+
+ Attributes:
+ category_types (Union[Unset, list['CategoryType']]): This container indicates whether the payment policy applies
+ to motor vehicle listings, or if it applies to non-motor vehicle listings.
+ deposit (Union[Unset, Deposit]): This type is used to specify/indicate that an initial deposit is required for a
+ motor vehicle listing.
+ description (Union[Unset, str]): A seller-defined description of the payment policy. This description is only
+ for the seller's use, and is not exposed on any eBay pages.
Max length: 250
+ full_payment_due_in (Union[Unset, TimeDuration]): A type used to specify a period of time using a specified
+ time-measurement unit. Payment, return, and fulfillment business policies all use this type to specify time
+ windows.
Whenever a container that uses this type is used in a request, both of these fields are
+ required. Similarly, whenever a container that uses this type is returned in a response, both of these fields
+ are always returned.
+ immediate_pay (Union[Unset, bool]): If this field is returned as true, immediate payment is
+ required from the buyer for: - A fixed-price item
- An auction item where the buyer uses the 'Buy it
+ Now' option
- A deposit for a motor vehicle listing
It is possible for the seller to set this
+ field as true in the payment business policy, but it will not apply in some scenarios. For example,
+ immediate payment is not applicable for auction listings that have a winning bidder, for buyer purchases that
+ involve the Best Offer feature, or for transactions that happen offline between the buyer and seller.
+ marketplace_id (Union[Unset, str]): The ID of the eBay marketplace to which the payment business policy applies.
+ For implementation help, refer to eBay API documentation
+ name (Union[Unset, str]): A seller-defined name for this payment policy. Names must be unique for policies
+ assigned to the same marketplace.
Max length: 64
+ payment_instructions (Union[Unset, str]): Although this field may be returned for some older payment business
+ policies, payment instructions are no longer supported by payment business policies. If this field is returned,
+ it can be ignored and these payment instructions will not appear in any listings that use the corresponding
+ business policy.
Max length: 1000
+ payment_methods (Union[Unset, list['PaymentMethod']]): This container is returned to show the payment methods
+ that are accepted for the payment business policy.
Sellers do not have to specify any electronic
+ payment methods for listings, so this array will often be returned empty unless the payment business policy is
+ intended for motor vehicle listings or other items in categories where offline payments are required or
+ supported.
+ payment_policy_id (Union[Unset, str]): A unique eBay-assigned ID for a payment business policy. This ID is
+ generated when the policy is created.
+ """
+
+ category_types: Union[Unset, list['CategoryType']] = UNSET
+ deposit: Union[Unset, 'Deposit'] = UNSET
+ description: Union[Unset, str] = UNSET
+ full_payment_due_in: Union[Unset, 'TimeDuration'] = UNSET
+ immediate_pay: Union[Unset, bool] = UNSET
+ marketplace_id: Union[Unset, str] = UNSET
+ name: Union[Unset, str] = UNSET
+ payment_instructions: Union[Unset, str] = UNSET
+ payment_methods: Union[Unset, list['PaymentMethod']] = UNSET
+ payment_policy_id: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.payment_method import PaymentMethod
+ from ..models.category_type import CategoryType
+ from ..models.time_duration import TimeDuration
+ from ..models.deposit import Deposit
+ category_types: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.category_types, Unset):
+ category_types = []
+ for category_types_item_data in self.category_types:
+ category_types_item = category_types_item_data.to_dict()
+ category_types.append(category_types_item)
+
+
+
+ deposit: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.deposit, Unset):
+ deposit = self.deposit.to_dict()
+
+ description = self.description
+
+ full_payment_due_in: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.full_payment_due_in, Unset):
+ full_payment_due_in = self.full_payment_due_in.to_dict()
+
+ immediate_pay = self.immediate_pay
+
+ marketplace_id = self.marketplace_id
+
+ name = self.name
+
+ payment_instructions = self.payment_instructions
+
+ payment_methods: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.payment_methods, Unset):
+ payment_methods = []
+ for payment_methods_item_data in self.payment_methods:
+ payment_methods_item = payment_methods_item_data.to_dict()
+ payment_methods.append(payment_methods_item)
+
+
+
+ payment_policy_id = self.payment_policy_id
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if category_types is not UNSET:
+ field_dict["categoryTypes"] = category_types
+ if deposit is not UNSET:
+ field_dict["deposit"] = deposit
+ if description is not UNSET:
+ field_dict["description"] = description
+ if full_payment_due_in is not UNSET:
+ field_dict["fullPaymentDueIn"] = full_payment_due_in
+ if immediate_pay is not UNSET:
+ field_dict["immediatePay"] = immediate_pay
+ if marketplace_id is not UNSET:
+ field_dict["marketplaceId"] = marketplace_id
+ if name is not UNSET:
+ field_dict["name"] = name
+ if payment_instructions is not UNSET:
+ field_dict["paymentInstructions"] = payment_instructions
+ if payment_methods is not UNSET:
+ field_dict["paymentMethods"] = payment_methods
+ if payment_policy_id is not UNSET:
+ field_dict["paymentPolicyId"] = payment_policy_id
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.payment_method import PaymentMethod
+ from ..models.category_type import CategoryType
+ from ..models.time_duration import TimeDuration
+ from ..models.deposit import Deposit
+ d = dict(src_dict)
+ category_types = []
+ _category_types = d.pop("categoryTypes", UNSET)
+ for category_types_item_data in (_category_types or []):
+ category_types_item = CategoryType.from_dict(category_types_item_data)
+
+
+
+ category_types.append(category_types_item)
+
+
+ _deposit = d.pop("deposit", UNSET)
+ deposit: Union[Unset, Deposit]
+ if isinstance(_deposit, Unset):
+ deposit = UNSET
+ else:
+ deposit = Deposit.from_dict(_deposit)
+
+
+
+
+ description = d.pop("description", UNSET)
+
+ _full_payment_due_in = d.pop("fullPaymentDueIn", UNSET)
+ full_payment_due_in: Union[Unset, TimeDuration]
+ if isinstance(_full_payment_due_in, Unset):
+ full_payment_due_in = UNSET
+ else:
+ full_payment_due_in = TimeDuration.from_dict(_full_payment_due_in)
+
+
+
+
+ immediate_pay = d.pop("immediatePay", UNSET)
+
+ marketplace_id = d.pop("marketplaceId", UNSET)
+
+ name = d.pop("name", UNSET)
+
+ payment_instructions = d.pop("paymentInstructions", UNSET)
+
+ payment_methods = []
+ _payment_methods = d.pop("paymentMethods", UNSET)
+ for payment_methods_item_data in (_payment_methods or []):
+ payment_methods_item = PaymentMethod.from_dict(payment_methods_item_data)
+
+
+
+ payment_methods.append(payment_methods_item)
+
+
+ payment_policy_id = d.pop("paymentPolicyId", UNSET)
+
+ payment_policy = cls(
+ category_types=category_types,
+ deposit=deposit,
+ description=description,
+ full_payment_due_in=full_payment_due_in,
+ immediate_pay=immediate_pay,
+ marketplace_id=marketplace_id,
+ name=name,
+ payment_instructions=payment_instructions,
+ payment_methods=payment_methods,
+ payment_policy_id=payment_policy_id,
+ )
+
+
+ payment_policy.additional_properties = d
+ return payment_policy
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/account/models/payment_policy_request.py b/ebay_client/generated/account/models/payment_policy_request.py
new file mode 100644
index 0000000..6068cd0
--- /dev/null
+++ b/ebay_client/generated/account/models/payment_policy_request.py
@@ -0,0 +1,233 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.payment_method import PaymentMethod
+ from ..models.category_type import CategoryType
+ from ..models.time_duration import TimeDuration
+ from ..models.deposit import Deposit
+
+
+
+
+
+T = TypeVar("T", bound="PaymentPolicyRequest")
+
+
+
+@_attrs_define
+class PaymentPolicyRequest:
+ """ This root container defines a seller's payment business policy for a specific marketplace and category group. This
+ type is used when creating or updating a payment business policy.
+
+ Attributes:
+ category_types (Union[Unset, list['CategoryType']]): This container is used to specify whether the payment
+ business policy applies to motor vehicle listings, or if it applies to non-motor vehicle listings.
+ deposit (Union[Unset, Deposit]): This type is used to specify/indicate that an initial deposit is required for a
+ motor vehicle listing.
+ description (Union[Unset, str]): A seller-defined description of the payment business policy. This description
+ is only for the seller's use, and is not exposed on any eBay pages.
Max length: 250
+ full_payment_due_in (Union[Unset, TimeDuration]): A type used to specify a period of time using a specified
+ time-measurement unit. Payment, return, and fulfillment business policies all use this type to specify time
+ windows.
Whenever a container that uses this type is used in a request, both of these fields are
+ required. Similarly, whenever a container that uses this type is returned in a response, both of these fields
+ are always returned.
+ immediate_pay (Union[Unset, bool]): This field should be included and set to true if the seller
+ wants to require immediate payment from the buyer for: - A fixed-price item
- An auction item where
+ the buyer is using the 'Buy it Now' option
- A deposit for a motor vehicle
+ listing
Default: False
+ marketplace_id (Union[Unset, str]): The ID of the eBay marketplace to which this payment business policy
+ applies. For implementation help, refer to eBay API documentation
+ name (Union[Unset, str]): A seller-defined name for this payment business policy. Names must be unique for
+ policies assigned to the same marketplace.
Max length: 64
+ payment_instructions (Union[Unset, str]): Note: DO NOT USE THIS FIELD. Payment
+ instructions are no longer supported by payment business policies.
A free-form string field that allows
+ sellers to add detailed payment instructions to their listings.
+ payment_methods (Union[Unset, list['PaymentMethod']]): Note: This field applies only
+ when the seller needs to specify one or more offline payment methods. eBay now manages the electronic payment
+ options available to buyers to pay for the item.
This array is used to specify one or more offline payment
+ methods that will be accepted for payment that occurs off of eBay's platform.
+ """
+
+ category_types: Union[Unset, list['CategoryType']] = UNSET
+ deposit: Union[Unset, 'Deposit'] = UNSET
+ description: Union[Unset, str] = UNSET
+ full_payment_due_in: Union[Unset, 'TimeDuration'] = UNSET
+ immediate_pay: Union[Unset, bool] = UNSET
+ marketplace_id: Union[Unset, str] = UNSET
+ name: Union[Unset, str] = UNSET
+ payment_instructions: Union[Unset, str] = UNSET
+ payment_methods: Union[Unset, list['PaymentMethod']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.payment_method import PaymentMethod
+ from ..models.category_type import CategoryType
+ from ..models.time_duration import TimeDuration
+ from ..models.deposit import Deposit
+ category_types: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.category_types, Unset):
+ category_types = []
+ for category_types_item_data in self.category_types:
+ category_types_item = category_types_item_data.to_dict()
+ category_types.append(category_types_item)
+
+
+
+ deposit: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.deposit, Unset):
+ deposit = self.deposit.to_dict()
+
+ description = self.description
+
+ full_payment_due_in: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.full_payment_due_in, Unset):
+ full_payment_due_in = self.full_payment_due_in.to_dict()
+
+ immediate_pay = self.immediate_pay
+
+ marketplace_id = self.marketplace_id
+
+ name = self.name
+
+ payment_instructions = self.payment_instructions
+
+ payment_methods: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.payment_methods, Unset):
+ payment_methods = []
+ for payment_methods_item_data in self.payment_methods:
+ payment_methods_item = payment_methods_item_data.to_dict()
+ payment_methods.append(payment_methods_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if category_types is not UNSET:
+ field_dict["categoryTypes"] = category_types
+ if deposit is not UNSET:
+ field_dict["deposit"] = deposit
+ if description is not UNSET:
+ field_dict["description"] = description
+ if full_payment_due_in is not UNSET:
+ field_dict["fullPaymentDueIn"] = full_payment_due_in
+ if immediate_pay is not UNSET:
+ field_dict["immediatePay"] = immediate_pay
+ if marketplace_id is not UNSET:
+ field_dict["marketplaceId"] = marketplace_id
+ if name is not UNSET:
+ field_dict["name"] = name
+ if payment_instructions is not UNSET:
+ field_dict["paymentInstructions"] = payment_instructions
+ if payment_methods is not UNSET:
+ field_dict["paymentMethods"] = payment_methods
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.payment_method import PaymentMethod
+ from ..models.category_type import CategoryType
+ from ..models.time_duration import TimeDuration
+ from ..models.deposit import Deposit
+ d = dict(src_dict)
+ category_types = []
+ _category_types = d.pop("categoryTypes", UNSET)
+ for category_types_item_data in (_category_types or []):
+ category_types_item = CategoryType.from_dict(category_types_item_data)
+
+
+
+ category_types.append(category_types_item)
+
+
+ _deposit = d.pop("deposit", UNSET)
+ deposit: Union[Unset, Deposit]
+ if isinstance(_deposit, Unset):
+ deposit = UNSET
+ else:
+ deposit = Deposit.from_dict(_deposit)
+
+
+
+
+ description = d.pop("description", UNSET)
+
+ _full_payment_due_in = d.pop("fullPaymentDueIn", UNSET)
+ full_payment_due_in: Union[Unset, TimeDuration]
+ if isinstance(_full_payment_due_in, Unset):
+ full_payment_due_in = UNSET
+ else:
+ full_payment_due_in = TimeDuration.from_dict(_full_payment_due_in)
+
+
+
+
+ immediate_pay = d.pop("immediatePay", UNSET)
+
+ marketplace_id = d.pop("marketplaceId", UNSET)
+
+ name = d.pop("name", UNSET)
+
+ payment_instructions = d.pop("paymentInstructions", UNSET)
+
+ payment_methods = []
+ _payment_methods = d.pop("paymentMethods", UNSET)
+ for payment_methods_item_data in (_payment_methods or []):
+ payment_methods_item = PaymentMethod.from_dict(payment_methods_item_data)
+
+
+
+ payment_methods.append(payment_methods_item)
+
+
+ payment_policy_request = cls(
+ category_types=category_types,
+ deposit=deposit,
+ description=description,
+ full_payment_due_in=full_payment_due_in,
+ immediate_pay=immediate_pay,
+ marketplace_id=marketplace_id,
+ name=name,
+ payment_instructions=payment_instructions,
+ payment_methods=payment_methods,
+ )
+
+
+ payment_policy_request.additional_properties = d
+ return payment_policy_request
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/account/models/payment_policy_response.py b/ebay_client/generated/account/models/payment_policy_response.py
new file mode 100644
index 0000000..952f32a
--- /dev/null
+++ b/ebay_client/generated/account/models/payment_policy_response.py
@@ -0,0 +1,158 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.payment_policy import PaymentPolicy
+
+
+
+
+
+T = TypeVar("T", bound="PaymentPolicyResponse")
+
+
+
+@_attrs_define
+class PaymentPolicyResponse:
+ """ The response payload for the getPaymentPolicies method.
Note:
+ Pagination has not yet been enabled for getPaymentPolicies, so all of the pagination-related fields are for
+ future use.
+
+ Attributes:
+ href (Union[Unset, str]): This field is for future use.
+ limit (Union[Unset, int]): This field is for future use.
+ next_ (Union[Unset, str]): This field is for future use.
+ offset (Union[Unset, int]): This field is for future use.
+ payment_policies (Union[Unset, list['PaymentPolicy']]): A list of all of the seller's payment business policies
+ defined for the specified marketplace. This array will be returned as empty if no payment business policies are
+ defined for the specified marketplace.
+ prev (Union[Unset, str]): This field is for future use.
+ total (Union[Unset, int]): The total number of payment business policies retrieved in the result set.
+
If no payment business policies are defined for the specified marketplace, this field is returned with a
+ value of 0.
+ """
+
+ href: Union[Unset, str] = UNSET
+ limit: Union[Unset, int] = UNSET
+ next_: Union[Unset, str] = UNSET
+ offset: Union[Unset, int] = UNSET
+ payment_policies: Union[Unset, list['PaymentPolicy']] = UNSET
+ prev: Union[Unset, str] = UNSET
+ total: Union[Unset, int] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.payment_policy import PaymentPolicy
+ href = self.href
+
+ limit = self.limit
+
+ next_ = self.next_
+
+ offset = self.offset
+
+ payment_policies: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.payment_policies, Unset):
+ payment_policies = []
+ for payment_policies_item_data in self.payment_policies:
+ payment_policies_item = payment_policies_item_data.to_dict()
+ payment_policies.append(payment_policies_item)
+
+
+
+ prev = self.prev
+
+ total = self.total
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if href is not UNSET:
+ field_dict["href"] = href
+ if limit is not UNSET:
+ field_dict["limit"] = limit
+ if next_ is not UNSET:
+ field_dict["next"] = next_
+ if offset is not UNSET:
+ field_dict["offset"] = offset
+ if payment_policies is not UNSET:
+ field_dict["paymentPolicies"] = payment_policies
+ if prev is not UNSET:
+ field_dict["prev"] = prev
+ if total is not UNSET:
+ field_dict["total"] = total
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.payment_policy import PaymentPolicy
+ d = dict(src_dict)
+ href = d.pop("href", UNSET)
+
+ limit = d.pop("limit", UNSET)
+
+ next_ = d.pop("next", UNSET)
+
+ offset = d.pop("offset", UNSET)
+
+ payment_policies = []
+ _payment_policies = d.pop("paymentPolicies", UNSET)
+ for payment_policies_item_data in (_payment_policies or []):
+ payment_policies_item = PaymentPolicy.from_dict(payment_policies_item_data)
+
+
+
+ payment_policies.append(payment_policies_item)
+
+
+ prev = d.pop("prev", UNSET)
+
+ total = d.pop("total", UNSET)
+
+ payment_policy_response = cls(
+ href=href,
+ limit=limit,
+ next_=next_,
+ offset=offset,
+ payment_policies=payment_policies,
+ prev=prev,
+ total=total,
+ )
+
+
+ payment_policy_response.additional_properties = d
+ return payment_policy_response
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/account/models/payments_program_onboarding_response.py b/ebay_client/generated/account/models/payments_program_onboarding_response.py
new file mode 100644
index 0000000..a6cdd12
--- /dev/null
+++ b/ebay_client/generated/account/models/payments_program_onboarding_response.py
@@ -0,0 +1,112 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.payments_program_onboarding_steps import PaymentsProgramOnboardingSteps
+
+
+
+
+
+T = TypeVar("T", bound="PaymentsProgramOnboardingResponse")
+
+
+
+@_attrs_define
+class PaymentsProgramOnboardingResponse:
+ """ Type used by the payments program onboarding response
+
+ Attributes:
+ onboarding_status (Union[Unset, str]): This enumeration value indicates the eligibility of payment onboarding
+ for the registered site. For implementation help, refer to eBay API documentation
+ steps (Union[Unset, list['PaymentsProgramOnboardingSteps']]): An array of the active process steps for payment
+ onboarding and the status of each step. This array includes the step name, step
+ status, and a webUrl to the IN_PROGRESS step. The step names are
+ returned in sequential order.
+ """
+
+ onboarding_status: Union[Unset, str] = UNSET
+ steps: Union[Unset, list['PaymentsProgramOnboardingSteps']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.payments_program_onboarding_steps import PaymentsProgramOnboardingSteps
+ onboarding_status = self.onboarding_status
+
+ steps: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.steps, Unset):
+ steps = []
+ for steps_item_data in self.steps:
+ steps_item = steps_item_data.to_dict()
+ steps.append(steps_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if onboarding_status is not UNSET:
+ field_dict["onboardingStatus"] = onboarding_status
+ if steps is not UNSET:
+ field_dict["steps"] = steps
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.payments_program_onboarding_steps import PaymentsProgramOnboardingSteps
+ d = dict(src_dict)
+ onboarding_status = d.pop("onboardingStatus", UNSET)
+
+ steps = []
+ _steps = d.pop("steps", UNSET)
+ for steps_item_data in (_steps or []):
+ steps_item = PaymentsProgramOnboardingSteps.from_dict(steps_item_data)
+
+
+
+ steps.append(steps_item)
+
+
+ payments_program_onboarding_response = cls(
+ onboarding_status=onboarding_status,
+ steps=steps,
+ )
+
+
+ payments_program_onboarding_response.additional_properties = d
+ return payments_program_onboarding_response
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/account/models/payments_program_onboarding_steps.py b/ebay_client/generated/account/models/payments_program_onboarding_steps.py
new file mode 100644
index 0000000..59dcc85
--- /dev/null
+++ b/ebay_client/generated/account/models/payments_program_onboarding_steps.py
@@ -0,0 +1,101 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="PaymentsProgramOnboardingSteps")
+
+
+
+@_attrs_define
+class PaymentsProgramOnboardingSteps:
+ """ The payments program onboarding steps, status, and link.
+
+ Attributes:
+ name (Union[Unset, str]): The name of the step in the steps array. Over time, these names are subject to change
+ as processes change. The output sample contains example step names. Review an actual call response for updated
+ step names.
+ status (Union[Unset, str]): This enumeration value indicates the status of the associated step. Note: Only one step can be IN_PROGRESS at a time.
For
+ implementation help, refer to eBay API documentation
+ web_url (Union[Unset, str]): This URL provides access to the IN_PROGRESS step.
+ """
+
+ name: Union[Unset, str] = UNSET
+ status: Union[Unset, str] = UNSET
+ web_url: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ name = self.name
+
+ status = self.status
+
+ web_url = self.web_url
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if name is not UNSET:
+ field_dict["name"] = name
+ if status is not UNSET:
+ field_dict["status"] = status
+ if web_url is not UNSET:
+ field_dict["webUrl"] = web_url
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ name = d.pop("name", UNSET)
+
+ status = d.pop("status", UNSET)
+
+ web_url = d.pop("webUrl", UNSET)
+
+ payments_program_onboarding_steps = cls(
+ name=name,
+ status=status,
+ web_url=web_url,
+ )
+
+
+ payments_program_onboarding_steps.additional_properties = d
+ return payments_program_onboarding_steps
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/account/models/payments_program_response.py b/ebay_client/generated/account/models/payments_program_response.py
new file mode 100644
index 0000000..15067f3
--- /dev/null
+++ b/ebay_client/generated/account/models/payments_program_response.py
@@ -0,0 +1,118 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="PaymentsProgramResponse")
+
+
+
+@_attrs_define
+class PaymentsProgramResponse:
+ """ The response object containing the sellers status with regards to the specified payment program.
+
+ Attributes:
+ marketplace_id (Union[Unset, str]): The ID of the eBay marketplace to which the payment program applies. For
+ implementation help, refer to eBay API documentation
+ payments_program_type (Union[Unset, str]): This parameter specifies the payment program whose status is returned
+ by the call.
Currently the only supported payments program is EBAY_PAYMENTS. For
+ implementation help, refer to eBay API documentation
+ status (Union[Unset, str]): The enumeration value returned in this field indicates whether or not the seller's
+ account is enabled for the payments program. For implementation help, refer to eBay API
+ documentation
+ was_previously_opted_in (Union[Unset, bool]): If returned as true, the seller was at one point
+ opted-in to the associated payment program, but they later opted out of the program. A value of
+ false indicates the seller never opted-in to the program or if they did opt-in to the program, they
+ never opted-out of it.
It's important to note that the setting of this field does not indicate the
+ seller's current status regarding the payment program. It is possible for this field to return true
+ while the status field returns OPTED_IN.
+ """
+
+ marketplace_id: Union[Unset, str] = UNSET
+ payments_program_type: Union[Unset, str] = UNSET
+ status: Union[Unset, str] = UNSET
+ was_previously_opted_in: Union[Unset, bool] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ marketplace_id = self.marketplace_id
+
+ payments_program_type = self.payments_program_type
+
+ status = self.status
+
+ was_previously_opted_in = self.was_previously_opted_in
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if marketplace_id is not UNSET:
+ field_dict["marketplaceId"] = marketplace_id
+ if payments_program_type is not UNSET:
+ field_dict["paymentsProgramType"] = payments_program_type
+ if status is not UNSET:
+ field_dict["status"] = status
+ if was_previously_opted_in is not UNSET:
+ field_dict["wasPreviouslyOptedIn"] = was_previously_opted_in
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ marketplace_id = d.pop("marketplaceId", UNSET)
+
+ payments_program_type = d.pop("paymentsProgramType", UNSET)
+
+ status = d.pop("status", UNSET)
+
+ was_previously_opted_in = d.pop("wasPreviouslyOptedIn", UNSET)
+
+ payments_program_response = cls(
+ marketplace_id=marketplace_id,
+ payments_program_type=payments_program_type,
+ status=status,
+ was_previously_opted_in=was_previously_opted_in,
+ )
+
+
+ payments_program_response.additional_properties = d
+ return payments_program_response
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/account/models/program.py b/ebay_client/generated/account/models/program.py
new file mode 100644
index 0000000..ead0184
--- /dev/null
+++ b/ebay_client/generated/account/models/program.py
@@ -0,0 +1,83 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="Program")
+
+
+
+@_attrs_define
+class Program:
+ """ The seller program to opt in to when part of an optInToProgram request, or out of when part of an
+ optOutOfProgram request.
+
+ Attributes:
+ program_type (Union[Unset, str]): The seller program to opt in to when part of an optInToProgram request,
+ or out of when part of an optOutOfProgram request. When returned in an getOptedInPrograms
+ response, a separate programType field is returned for each seller program that the seller is opted in
+ to. For implementation help, refer to eBay API documentation
+ """
+
+ program_type: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ program_type = self.program_type
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if program_type is not UNSET:
+ field_dict["programType"] = program_type
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ program_type = d.pop("programType", UNSET)
+
+ program = cls(
+ program_type=program_type,
+ )
+
+
+ program.additional_properties = d
+ return program
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/account/models/programs.py b/ebay_client/generated/account/models/programs.py
new file mode 100644
index 0000000..6f414a7
--- /dev/null
+++ b/ebay_client/generated/account/models/programs.py
@@ -0,0 +1,99 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.program import Program
+
+
+
+
+
+T = TypeVar("T", bound="Programs")
+
+
+
+@_attrs_define
+class Programs:
+ """ The base response type of the getOptedInPrograms method.
+
+ Attributes:
+ programs (Union[Unset, list['Program']]): An array of seller programs that the seller's account is opted in to.
+ An empty array is returned if the seller is not opted in to any of the seller programs.
+ """
+
+ programs: Union[Unset, list['Program']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.program import Program
+ programs: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.programs, Unset):
+ programs = []
+ for programs_item_data in self.programs:
+ programs_item = programs_item_data.to_dict()
+ programs.append(programs_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if programs is not UNSET:
+ field_dict["programs"] = programs
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.program import Program
+ d = dict(src_dict)
+ programs = []
+ _programs = d.pop("programs", UNSET)
+ for programs_item_data in (_programs or []):
+ programs_item = Program.from_dict(programs_item_data)
+
+
+
+ programs.append(programs_item)
+
+
+ programs = cls(
+ programs=programs,
+ )
+
+
+ programs.additional_properties = d
+ return programs
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/account/models/rate_table.py b/ebay_client/generated/account/models/rate_table.py
new file mode 100644
index 0000000..436e8f0
--- /dev/null
+++ b/ebay_client/generated/account/models/rate_table.py
@@ -0,0 +1,114 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="RateTable")
+
+
+
+@_attrs_define
+class RateTable:
+ """ This type is used to provide details about each shipping rate table that is returned in the getRateTables
+ response.
+
+ Attributes:
+ country_code (Union[Unset, str]): A two-letter ISO 3166 country code representing the eBay marketplace where
+ the shipping rate table is defined. For implementation help, refer to eBay API documentation
+ locality (Union[Unset, str]): This enumeration value returned here indicates whether the shipping rate table is
+ a domestic or international shipping rate table. For implementation help, refer to eBay API
+ documentation
+ name (Union[Unset, str]): The seller-defined name for the shipping rate table.
+ rate_table_id (Union[Unset, str]): A unique eBay-assigned ID for a seller's shipping rate table. These
+ rateTableId values are used to associate shipping rate tables to fulfillment business policies or
+ directly to listings through an add/revise/relist call in the Trading API.
+ """
+
+ country_code: Union[Unset, str] = UNSET
+ locality: Union[Unset, str] = UNSET
+ name: Union[Unset, str] = UNSET
+ rate_table_id: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ country_code = self.country_code
+
+ locality = self.locality
+
+ name = self.name
+
+ rate_table_id = self.rate_table_id
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if country_code is not UNSET:
+ field_dict["countryCode"] = country_code
+ if locality is not UNSET:
+ field_dict["locality"] = locality
+ if name is not UNSET:
+ field_dict["name"] = name
+ if rate_table_id is not UNSET:
+ field_dict["rateTableId"] = rate_table_id
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ country_code = d.pop("countryCode", UNSET)
+
+ locality = d.pop("locality", UNSET)
+
+ name = d.pop("name", UNSET)
+
+ rate_table_id = d.pop("rateTableId", UNSET)
+
+ rate_table = cls(
+ country_code=country_code,
+ locality=locality,
+ name=name,
+ rate_table_id=rate_table_id,
+ )
+
+
+ rate_table.additional_properties = d
+ return rate_table
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/account/models/rate_table_response.py b/ebay_client/generated/account/models/rate_table_response.py
new file mode 100644
index 0000000..22973e3
--- /dev/null
+++ b/ebay_client/generated/account/models/rate_table_response.py
@@ -0,0 +1,100 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.rate_table import RateTable
+
+
+
+
+
+T = TypeVar("T", bound="RateTableResponse")
+
+
+
+@_attrs_define
+class RateTableResponse:
+ """ This type is the base response of the getRateTables method.
+
+ Attributes:
+ rate_tables (Union[Unset, list['RateTable']]): An array of all shipping rate tables defined for a marketplace
+ (or all marketplaces if no country_code query parameter is used). This array will be returned as empty if
+ the seller has no defined shipping rate tables for the specified marketplace.
+ """
+
+ rate_tables: Union[Unset, list['RateTable']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.rate_table import RateTable
+ rate_tables: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.rate_tables, Unset):
+ rate_tables = []
+ for rate_tables_item_data in self.rate_tables:
+ rate_tables_item = rate_tables_item_data.to_dict()
+ rate_tables.append(rate_tables_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if rate_tables is not UNSET:
+ field_dict["rateTables"] = rate_tables
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.rate_table import RateTable
+ d = dict(src_dict)
+ rate_tables = []
+ _rate_tables = d.pop("rateTables", UNSET)
+ for rate_tables_item_data in (_rate_tables or []):
+ rate_tables_item = RateTable.from_dict(rate_tables_item_data)
+
+
+
+ rate_tables.append(rate_tables_item)
+
+
+ rate_table_response = cls(
+ rate_tables=rate_tables,
+ )
+
+
+ rate_table_response.additional_properties = d
+ return rate_table_response
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/account/models/recipient_account_reference.py b/ebay_client/generated/account/models/recipient_account_reference.py
new file mode 100644
index 0000000..ad7c0db
--- /dev/null
+++ b/ebay_client/generated/account/models/recipient_account_reference.py
@@ -0,0 +1,93 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="RecipientAccountReference")
+
+
+
+@_attrs_define
+class RecipientAccountReference:
+ """ Note: This type is no longer applicable. eBay now controls all electronic payment
+ methods available for a marketplace, and a seller never has to specify any electronic payment methods.
+
+ Attributes:
+ reference_id (Union[Unset, str]): Note: DO NOT USE THIS FIELD. eBay now controls
+ all electronic payment methods available for a marketplace, and a seller never has to specify any electronic
+ payment methods.
+ reference_type (Union[Unset, str]): Note: DO NOT USE THIS FIELD. eBay now
+ controls all electronic payment methods available for a marketplace, and a seller never has to specify any
+ electronic payment methods. For implementation help, refer to eBay API documentation
+ """
+
+ reference_id: Union[Unset, str] = UNSET
+ reference_type: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ reference_id = self.reference_id
+
+ reference_type = self.reference_type
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if reference_id is not UNSET:
+ field_dict["referenceId"] = reference_id
+ if reference_type is not UNSET:
+ field_dict["referenceType"] = reference_type
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ reference_id = d.pop("referenceId", UNSET)
+
+ reference_type = d.pop("referenceType", UNSET)
+
+ recipient_account_reference = cls(
+ reference_id=reference_id,
+ reference_type=reference_type,
+ )
+
+
+ recipient_account_reference.additional_properties = d
+ return recipient_account_reference
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/account/models/region.py b/ebay_client/generated/account/models/region.py
new file mode 100644
index 0000000..fc5fed8
--- /dev/null
+++ b/ebay_client/generated/account/models/region.py
@@ -0,0 +1,98 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="Region")
+
+
+
+@_attrs_define
+class Region:
+ """ This type is used to define specific shipping regions. There are four 'levels' of shipping regions, including large
+ geographical regions (like 'Asia', 'Europe', or 'Middle East'), individual countries, US states or Canadian
+ provinces, and special locations/domestic regions within a country (like 'Alaska/Hawaii' or 'PO Box').
+
+ Attributes:
+ region_name (Union[Unset, str]): A string that indicates the name of a region, as defined by eBay. A "region"
+ can be either a 'world region' (e.g., the "Middle East" or "Southeast Asia"), a country (represented with a two-
+ letter country code), a state or province (represented with a two-letter code), or a special domestic region
+ within a country.
The GeteBayDetails
+ call in the Trading API can be used to retrieve the world regions and special domestic regions within a specific
+ country. To get these enumeration values, call GeteBayDetails with the DetailName value set to
+ ExcludeShippingLocationDetails.
+ region_type (Union[Unset, str]): Reserved for future use. For
+ implementation help, refer to eBay API documentation
+ """
+
+ region_name: Union[Unset, str] = UNSET
+ region_type: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ region_name = self.region_name
+
+ region_type = self.region_type
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if region_name is not UNSET:
+ field_dict["regionName"] = region_name
+ if region_type is not UNSET:
+ field_dict["regionType"] = region_type
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ region_name = d.pop("regionName", UNSET)
+
+ region_type = d.pop("regionType", UNSET)
+
+ region = cls(
+ region_name=region_name,
+ region_type=region_type,
+ )
+
+
+ region.additional_properties = d
+ return region
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/account/models/region_set.py b/ebay_client/generated/account/models/region_set.py
new file mode 100644
index 0000000..ce96b97
--- /dev/null
+++ b/ebay_client/generated/account/models/region_set.py
@@ -0,0 +1,136 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.region import Region
+
+
+
+
+
+T = TypeVar("T", bound="RegionSet")
+
+
+
+@_attrs_define
+class RegionSet:
+ """ This type consists of the regionIncluded and regionExcluded arrays, which indicate the areas to where
+ the seller does and doesn't ship.
+
+ Attributes:
+ region_excluded (Union[Unset, list['Region']]): An array of one or more regionName values that specify
+ the areas to where a seller does not ship. A regionExcluded list should only be set in the top-level
+ shipToLocations container and not within the shippingServices.shipToLocations container used to
+ specify which shipping regions are serviced by each available shipping service option. Many sellers are
+ willing to ship to many international locations, but they may want to exclude some world regions or some
+ countries as places they are willing to ship to.
This array will be returned as empty if no shipping
+ regions are excluded with the fulfillment business policy.
Note: The
+ regionExcluded array is not applicable for motor vehicle business policies on the US, CA, or UK
+ marketplaces. If this array is used in a createFulfillmentPolicy or updateFulfillmentPolicy
+ request, it will be ignored.
+ region_included (Union[Unset, list['Region']]): An array of one or more regionName fields that specify
+ the areas to where a seller ships.
Each eBay marketplace supports its own set of allowable shipping
+ locations.
Note: The regionIncluded array is not applicable for
+ motor vehicle business policies on the US, CA, or UK marketplaces. If this array is used in a
+ createFulfillmentPolicy or updateFulfillmentPolicy request, it will be ignored.
+ """
+
+ region_excluded: Union[Unset, list['Region']] = UNSET
+ region_included: Union[Unset, list['Region']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.region import Region
+ region_excluded: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.region_excluded, Unset):
+ region_excluded = []
+ for region_excluded_item_data in self.region_excluded:
+ region_excluded_item = region_excluded_item_data.to_dict()
+ region_excluded.append(region_excluded_item)
+
+
+
+ region_included: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.region_included, Unset):
+ region_included = []
+ for region_included_item_data in self.region_included:
+ region_included_item = region_included_item_data.to_dict()
+ region_included.append(region_included_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if region_excluded is not UNSET:
+ field_dict["regionExcluded"] = region_excluded
+ if region_included is not UNSET:
+ field_dict["regionIncluded"] = region_included
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.region import Region
+ d = dict(src_dict)
+ region_excluded = []
+ _region_excluded = d.pop("regionExcluded", UNSET)
+ for region_excluded_item_data in (_region_excluded or []):
+ region_excluded_item = Region.from_dict(region_excluded_item_data)
+
+
+
+ region_excluded.append(region_excluded_item)
+
+
+ region_included = []
+ _region_included = d.pop("regionIncluded", UNSET)
+ for region_included_item_data in (_region_included or []):
+ region_included_item = Region.from_dict(region_included_item_data)
+
+
+
+ region_included.append(region_included_item)
+
+
+ region_set = cls(
+ region_excluded=region_excluded,
+ region_included=region_included,
+ )
+
+
+ region_set.additional_properties = d
+ return region_set
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/account/models/return_policy.py b/ebay_client/generated/account/models/return_policy.py
new file mode 100644
index 0000000..480244b
--- /dev/null
+++ b/ebay_client/generated/account/models/return_policy.py
@@ -0,0 +1,286 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.category_type import CategoryType
+ from ..models.time_duration import TimeDuration
+ from ..models.international_return_override_type import InternationalReturnOverrideType
+
+
+
+
+
+T = TypeVar("T", bound="ReturnPolicy")
+
+
+
+@_attrs_define
+class ReturnPolicy:
+ """ This type is used by the returnPolicy response container, a container which defines a seller's return
+ business policy for a specific marketplace.
+
+ Attributes:
+ category_types (Union[Unset, list['CategoryType']]): This container indicates which category group that the
+ return policy applies to.
Note: Return business policies are not
+ applicable to motor vehicle listings, so the categoryTypes.name value will always be
+ ALL_EXCLUDING_MOTORS_VEHICLES for return business policies.
+ description (Union[Unset, str]): A seller-defined description of the return business policy. This description is
+ only for the seller's use, and is not exposed on any eBay pages.
Max length: 250
+ extended_holiday_returns_offered (Union[Unset, bool]):
Important! This field is deprecated, since eBay no longer supports extended holiday
+ returns. Any value supplied in this field is neither read nor returned.
+ international_override (Union[Unset, InternationalReturnOverrideType]): This type defines the fields for a
+ seller's international return policy. Sellers have the ability to set separate domestic and international return
+ policies, but if an international return policy is not set, the same return policy settings specified for the
+ domestic return policy are also used for returns for international buyers.
+ marketplace_id (Union[Unset, str]): The ID of the eBay marketplace to which this return business policy applies.
+ For implementation help, refer to eBay API documentation
+ name (Union[Unset, str]): A seller-defined name for this return business policy. Names must be unique for
+ policies assigned to the same marketplace.
Max length: 64
+ refund_method (Union[Unset, str]): This field indicates the refund method offered by the seller. Its value will
+ be MONEY_BACK unless the seller is enabled for Buy online, Pickup in Store or Click and
+ Collect, and then it might be MERCHANDISE_CREDIT. Getting their money back for returned items
+ is always an option for buyers, regardless of what the seller sets in this field. For implementation help, refer
+ to eBay API
+ documentation
+ restocking_fee_percentage (Union[Unset, str]): Important! This field is deprecated, since eBay no longer allows sellers to charge a
+ restocking fee for buyer remorse returns. If this field is included, it is ignored and it is no longer
+ returned.
+ return_instructions (Union[Unset, str]): This text-based field provides more details on seller-specified return
+ instructions. This field is only returned if set for the return business policy.
Important! This field is no longer supported on many eBay marketplaces. To
+ see if a marketplace and eBay category does support this field, call getReturnPolicies method of the
+ Metadata API. Then you will look for the policyDescriptionEnabled field with a value of
+ true for the eBay category.
Max length: 5000 (8000 for DE)
+ return_method (Union[Unset, str]): This field is only returned if the seller is willing to offer a replacement
+ item as an alternative to 'Money Back'. For implementation help, refer to eBay API documentation
+ return_period (Union[Unset, TimeDuration]): A type used to specify a period of time using a specified time-
+ measurement unit. Payment, return, and fulfillment business policies all use this type to specify time
+ windows.
Whenever a container that uses this type is used in a request, both of these fields are
+ required. Similarly, whenever a container that uses this type is returned in a response, both of these fields
+ are always returned.
+ return_policy_id (Union[Unset, str]): A unique eBay-assigned ID for a return business policy. This ID is
+ generated when the policy is created.
+ returns_accepted (Union[Unset, bool]): If this field is returned as true, the seller accepts
+ returns. If set to false, the seller does not accept returns.
Note: Top-Rated sellers must accept item returns and the handlingTime
+ should be set to zero days or one day for a listing to receive a Top-Rated Plus badge on the View Item or search
+ result pages. For more information on eBay's Top-Rated seller program, see Becoming a Top Rated Seller and qualifying for Top Rated
+ Plus benefits.
+ return_shipping_cost_payer (Union[Unset, str]): This field indicates who is responsible for paying for the
+ shipping charges for returned items. The field can be set to either BUYER or SELLER.
+
Depending on the return policy and specifics of the return, either the buyer or the seller can be
+ responsible for the return shipping costs. Note that the seller is always responsible for return shipping costs
+ for SNAD-related issues. For implementation help, refer to eBay API documentation
+ """
+
+ category_types: Union[Unset, list['CategoryType']] = UNSET
+ description: Union[Unset, str] = UNSET
+ extended_holiday_returns_offered: Union[Unset, bool] = UNSET
+ international_override: Union[Unset, 'InternationalReturnOverrideType'] = UNSET
+ marketplace_id: Union[Unset, str] = UNSET
+ name: Union[Unset, str] = UNSET
+ refund_method: Union[Unset, str] = UNSET
+ restocking_fee_percentage: Union[Unset, str] = UNSET
+ return_instructions: Union[Unset, str] = UNSET
+ return_method: Union[Unset, str] = UNSET
+ return_period: Union[Unset, 'TimeDuration'] = UNSET
+ return_policy_id: Union[Unset, str] = UNSET
+ returns_accepted: Union[Unset, bool] = UNSET
+ return_shipping_cost_payer: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.category_type import CategoryType
+ from ..models.time_duration import TimeDuration
+ from ..models.international_return_override_type import InternationalReturnOverrideType
+ category_types: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.category_types, Unset):
+ category_types = []
+ for category_types_item_data in self.category_types:
+ category_types_item = category_types_item_data.to_dict()
+ category_types.append(category_types_item)
+
+
+
+ description = self.description
+
+ extended_holiday_returns_offered = self.extended_holiday_returns_offered
+
+ international_override: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.international_override, Unset):
+ international_override = self.international_override.to_dict()
+
+ marketplace_id = self.marketplace_id
+
+ name = self.name
+
+ refund_method = self.refund_method
+
+ restocking_fee_percentage = self.restocking_fee_percentage
+
+ return_instructions = self.return_instructions
+
+ return_method = self.return_method
+
+ return_period: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.return_period, Unset):
+ return_period = self.return_period.to_dict()
+
+ return_policy_id = self.return_policy_id
+
+ returns_accepted = self.returns_accepted
+
+ return_shipping_cost_payer = self.return_shipping_cost_payer
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if category_types is not UNSET:
+ field_dict["categoryTypes"] = category_types
+ if description is not UNSET:
+ field_dict["description"] = description
+ if extended_holiday_returns_offered is not UNSET:
+ field_dict["extendedHolidayReturnsOffered"] = extended_holiday_returns_offered
+ if international_override is not UNSET:
+ field_dict["internationalOverride"] = international_override
+ if marketplace_id is not UNSET:
+ field_dict["marketplaceId"] = marketplace_id
+ if name is not UNSET:
+ field_dict["name"] = name
+ if refund_method is not UNSET:
+ field_dict["refundMethod"] = refund_method
+ if restocking_fee_percentage is not UNSET:
+ field_dict["restockingFeePercentage"] = restocking_fee_percentage
+ if return_instructions is not UNSET:
+ field_dict["returnInstructions"] = return_instructions
+ if return_method is not UNSET:
+ field_dict["returnMethod"] = return_method
+ if return_period is not UNSET:
+ field_dict["returnPeriod"] = return_period
+ if return_policy_id is not UNSET:
+ field_dict["returnPolicyId"] = return_policy_id
+ if returns_accepted is not UNSET:
+ field_dict["returnsAccepted"] = returns_accepted
+ if return_shipping_cost_payer is not UNSET:
+ field_dict["returnShippingCostPayer"] = return_shipping_cost_payer
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.category_type import CategoryType
+ from ..models.time_duration import TimeDuration
+ from ..models.international_return_override_type import InternationalReturnOverrideType
+ d = dict(src_dict)
+ category_types = []
+ _category_types = d.pop("categoryTypes", UNSET)
+ for category_types_item_data in (_category_types or []):
+ category_types_item = CategoryType.from_dict(category_types_item_data)
+
+
+
+ category_types.append(category_types_item)
+
+
+ description = d.pop("description", UNSET)
+
+ extended_holiday_returns_offered = d.pop("extendedHolidayReturnsOffered", UNSET)
+
+ _international_override = d.pop("internationalOverride", UNSET)
+ international_override: Union[Unset, InternationalReturnOverrideType]
+ if isinstance(_international_override, Unset):
+ international_override = UNSET
+ else:
+ international_override = InternationalReturnOverrideType.from_dict(_international_override)
+
+
+
+
+ marketplace_id = d.pop("marketplaceId", UNSET)
+
+ name = d.pop("name", UNSET)
+
+ refund_method = d.pop("refundMethod", UNSET)
+
+ restocking_fee_percentage = d.pop("restockingFeePercentage", UNSET)
+
+ return_instructions = d.pop("returnInstructions", UNSET)
+
+ return_method = d.pop("returnMethod", UNSET)
+
+ _return_period = d.pop("returnPeriod", UNSET)
+ return_period: Union[Unset, TimeDuration]
+ if isinstance(_return_period, Unset):
+ return_period = UNSET
+ else:
+ return_period = TimeDuration.from_dict(_return_period)
+
+
+
+
+ return_policy_id = d.pop("returnPolicyId", UNSET)
+
+ returns_accepted = d.pop("returnsAccepted", UNSET)
+
+ return_shipping_cost_payer = d.pop("returnShippingCostPayer", UNSET)
+
+ return_policy = cls(
+ category_types=category_types,
+ description=description,
+ extended_holiday_returns_offered=extended_holiday_returns_offered,
+ international_override=international_override,
+ marketplace_id=marketplace_id,
+ name=name,
+ refund_method=refund_method,
+ restocking_fee_percentage=restocking_fee_percentage,
+ return_instructions=return_instructions,
+ return_method=return_method,
+ return_period=return_period,
+ return_policy_id=return_policy_id,
+ returns_accepted=returns_accepted,
+ return_shipping_cost_payer=return_shipping_cost_payer,
+ )
+
+
+ return_policy.additional_properties = d
+ return return_policy
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/account/models/return_policy_request.py b/ebay_client/generated/account/models/return_policy_request.py
new file mode 100644
index 0000000..c6865c7
--- /dev/null
+++ b/ebay_client/generated/account/models/return_policy_request.py
@@ -0,0 +1,280 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.category_type import CategoryType
+ from ..models.time_duration import TimeDuration
+ from ..models.international_return_override_type import InternationalReturnOverrideType
+
+
+
+
+
+T = TypeVar("T", bound="ReturnPolicyRequest")
+
+
+
+@_attrs_define
+class ReturnPolicyRequest:
+ """ This root container defines a seller's return business policy for a specific marketplace and category group. This
+ type is used when creating or updating a return business policy.
+
+ Attributes:
+ category_types (Union[Unset, list['CategoryType']]): This container indicates which category group that the
+ return policy applies to.
Note: Return business policies are not
+ applicable to motor vehicle listings, so the categoryTypes.name value must be set to
+ ALL_EXCLUDING_MOTORS_VEHICLES for return business policies.
+ description (Union[Unset, str]): A seller-defined description of the return business policy. This description is
+ only for the seller's use, and is not exposed on any eBay pages.
Max length: 250
+ extended_holiday_returns_offered (Union[Unset, bool]): Important! This field is deprecated, since eBay no longer supports extended holiday
+ returns. Any value supplied in this field is neither read nor returned.
+ international_override (Union[Unset, InternationalReturnOverrideType]): This type defines the fields for a
+ seller's international return policy. Sellers have the ability to set separate domestic and international return
+ policies, but if an international return policy is not set, the same return policy settings specified for the
+ domestic return policy are also used for returns for international buyers.
+ marketplace_id (Union[Unset, str]): The ID of the eBay marketplace to which this return business policy applies.
+ For implementation help, refer to eBay API documentation
+ name (Union[Unset, str]): A seller-defined name for this return business policy. Names must be unique for
+ policies assigned to the same marketplace.
Max length: 64
+ refund_method (Union[Unset, str]): This field sets the refund method to use for returned items. Its value
+ defaults to MONEY_BACK if omitted, so this field is only needed for Buy online, Pickup in
+ Store or Click and Collect items where the seller is willing to offer merchandise credit as an
+ additional refund method to buyers. Getting their money back for returned items is always an option for buyers,
+ regardless of what the seller sets in this field.Important! If this field is not included in a return business policy, it will default to
+ MONEY_BACK.
For implementation help, refer to eBay API documentation
+ restocking_fee_percentage (Union[Unset, str]): Important! This field is deprecated, since eBay no longer allows sellers to charge a
+ restocking fee for buyer remorse returns. If this field is included, it is ignored.
+ return_instructions (Union[Unset, str]): This text-based field provides more details on seller-specified return
+ instructions.
Important! This field is no
+ longer supported on many eBay marketplaces. To see if a marketplace and eBay category does support this field,
+ call getReturnPolicies
+ method of the Metadata API. Then you will look for the policyDescriptionEnabled field with a value
+ of true for the eBay category.
Max length: 5000 (8000 for DE)
+ return_method (Union[Unset, str]): This field can be used if the seller is willing and able to offer a
+ replacement item as an alternative to 'Money Back'. For implementation help, refer to eBay API documentation
+ return_period (Union[Unset, TimeDuration]): A type used to specify a period of time using a specified time-
+ measurement unit. Payment, return, and fulfillment business policies all use this type to specify time
+ windows.
Whenever a container that uses this type is used in a request, both of these fields are
+ required. Similarly, whenever a container that uses this type is returned in a response, both of these fields
+ are always returned.
+ returns_accepted (Union[Unset, bool]): If set to true, the seller accepts returns. If set to
+ false, the seller does not accept returns.
Note:Top-
+ Rated sellers must accept item returns and the handlingTime should be set to zero days or one day for a
+ listing to receive a Top-Rated Plus badge on the View Item or search result pages. For more information on
+ eBay's Top-Rated seller program, see Becoming a Top
+ Rated Seller and qualifying for Top Rated Plus benefits.
+ return_shipping_cost_payer (Union[Unset, str]): This field indicates who is responsible for paying for the
+ shipping charges for returned items. The field can be set to either BUYER or SELLER.
+ Note: Eligible Parts & Accessories (P&A)
+ listings require sellers to offer buyers free returns with a minimum return period of 30 days. See Support for easy returns in Parts and Accessories for details.
Depending on
+ the return policy and specifics of the return, either the buyer or the seller can be responsible for the return
+ shipping costs. Note that the seller is always responsible for return shipping costs for SNAD-related issues.
+
This field is conditionally required if returnsAccepted is set to true. For
+ implementation help, refer to eBay API documentation
+ """
+
+ category_types: Union[Unset, list['CategoryType']] = UNSET
+ description: Union[Unset, str] = UNSET
+ extended_holiday_returns_offered: Union[Unset, bool] = UNSET
+ international_override: Union[Unset, 'InternationalReturnOverrideType'] = UNSET
+ marketplace_id: Union[Unset, str] = UNSET
+ name: Union[Unset, str] = UNSET
+ refund_method: Union[Unset, str] = UNSET
+ restocking_fee_percentage: Union[Unset, str] = UNSET
+ return_instructions: Union[Unset, str] = UNSET
+ return_method: Union[Unset, str] = UNSET
+ return_period: Union[Unset, 'TimeDuration'] = UNSET
+ returns_accepted: Union[Unset, bool] = UNSET
+ return_shipping_cost_payer: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.category_type import CategoryType
+ from ..models.time_duration import TimeDuration
+ from ..models.international_return_override_type import InternationalReturnOverrideType
+ category_types: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.category_types, Unset):
+ category_types = []
+ for category_types_item_data in self.category_types:
+ category_types_item = category_types_item_data.to_dict()
+ category_types.append(category_types_item)
+
+
+
+ description = self.description
+
+ extended_holiday_returns_offered = self.extended_holiday_returns_offered
+
+ international_override: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.international_override, Unset):
+ international_override = self.international_override.to_dict()
+
+ marketplace_id = self.marketplace_id
+
+ name = self.name
+
+ refund_method = self.refund_method
+
+ restocking_fee_percentage = self.restocking_fee_percentage
+
+ return_instructions = self.return_instructions
+
+ return_method = self.return_method
+
+ return_period: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.return_period, Unset):
+ return_period = self.return_period.to_dict()
+
+ returns_accepted = self.returns_accepted
+
+ return_shipping_cost_payer = self.return_shipping_cost_payer
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if category_types is not UNSET:
+ field_dict["categoryTypes"] = category_types
+ if description is not UNSET:
+ field_dict["description"] = description
+ if extended_holiday_returns_offered is not UNSET:
+ field_dict["extendedHolidayReturnsOffered"] = extended_holiday_returns_offered
+ if international_override is not UNSET:
+ field_dict["internationalOverride"] = international_override
+ if marketplace_id is not UNSET:
+ field_dict["marketplaceId"] = marketplace_id
+ if name is not UNSET:
+ field_dict["name"] = name
+ if refund_method is not UNSET:
+ field_dict["refundMethod"] = refund_method
+ if restocking_fee_percentage is not UNSET:
+ field_dict["restockingFeePercentage"] = restocking_fee_percentage
+ if return_instructions is not UNSET:
+ field_dict["returnInstructions"] = return_instructions
+ if return_method is not UNSET:
+ field_dict["returnMethod"] = return_method
+ if return_period is not UNSET:
+ field_dict["returnPeriod"] = return_period
+ if returns_accepted is not UNSET:
+ field_dict["returnsAccepted"] = returns_accepted
+ if return_shipping_cost_payer is not UNSET:
+ field_dict["returnShippingCostPayer"] = return_shipping_cost_payer
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.category_type import CategoryType
+ from ..models.time_duration import TimeDuration
+ from ..models.international_return_override_type import InternationalReturnOverrideType
+ d = dict(src_dict)
+ category_types = []
+ _category_types = d.pop("categoryTypes", UNSET)
+ for category_types_item_data in (_category_types or []):
+ category_types_item = CategoryType.from_dict(category_types_item_data)
+
+
+
+ category_types.append(category_types_item)
+
+
+ description = d.pop("description", UNSET)
+
+ extended_holiday_returns_offered = d.pop("extendedHolidayReturnsOffered", UNSET)
+
+ _international_override = d.pop("internationalOverride", UNSET)
+ international_override: Union[Unset, InternationalReturnOverrideType]
+ if isinstance(_international_override, Unset):
+ international_override = UNSET
+ else:
+ international_override = InternationalReturnOverrideType.from_dict(_international_override)
+
+
+
+
+ marketplace_id = d.pop("marketplaceId", UNSET)
+
+ name = d.pop("name", UNSET)
+
+ refund_method = d.pop("refundMethod", UNSET)
+
+ restocking_fee_percentage = d.pop("restockingFeePercentage", UNSET)
+
+ return_instructions = d.pop("returnInstructions", UNSET)
+
+ return_method = d.pop("returnMethod", UNSET)
+
+ _return_period = d.pop("returnPeriod", UNSET)
+ return_period: Union[Unset, TimeDuration]
+ if isinstance(_return_period, Unset):
+ return_period = UNSET
+ else:
+ return_period = TimeDuration.from_dict(_return_period)
+
+
+
+
+ returns_accepted = d.pop("returnsAccepted", UNSET)
+
+ return_shipping_cost_payer = d.pop("returnShippingCostPayer", UNSET)
+
+ return_policy_request = cls(
+ category_types=category_types,
+ description=description,
+ extended_holiday_returns_offered=extended_holiday_returns_offered,
+ international_override=international_override,
+ marketplace_id=marketplace_id,
+ name=name,
+ refund_method=refund_method,
+ restocking_fee_percentage=restocking_fee_percentage,
+ return_instructions=return_instructions,
+ return_method=return_method,
+ return_period=return_period,
+ returns_accepted=returns_accepted,
+ return_shipping_cost_payer=return_shipping_cost_payer,
+ )
+
+
+ return_policy_request.additional_properties = d
+ return return_policy_request
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/account/models/return_policy_response.py b/ebay_client/generated/account/models/return_policy_response.py
new file mode 100644
index 0000000..c69f61d
--- /dev/null
+++ b/ebay_client/generated/account/models/return_policy_response.py
@@ -0,0 +1,158 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.return_policy import ReturnPolicy
+
+
+
+
+
+T = TypeVar("T", bound="ReturnPolicyResponse")
+
+
+
+@_attrs_define
+class ReturnPolicyResponse:
+ """ The response payload for the getReturnPolicies method.
Note:
+ Pagination has not yet been enabled for getReturnPolicies, so all of the pagination-related fields are for
+ future use.
+
+ Attributes:
+ href (Union[Unset, str]): This field is for future use.
+ limit (Union[Unset, int]): This field is for future use.
+ next_ (Union[Unset, str]): This field is for future use.
+ offset (Union[Unset, int]): This field is for future use.
+ prev (Union[Unset, str]): This field is for future use.
+ return_policies (Union[Unset, list['ReturnPolicy']]): A list of all of the seller's return business policies
+ defined for the specified marketplace. This array will be returned as empty if no return business policies are
+ defined for the specified marketplace.
+ total (Union[Unset, int]): The total number of return business policies retrieved in the result set.
If
+ no return business policies are defined for the specified marketplace, this field is returned with a value of
+ 0.
+ """
+
+ href: Union[Unset, str] = UNSET
+ limit: Union[Unset, int] = UNSET
+ next_: Union[Unset, str] = UNSET
+ offset: Union[Unset, int] = UNSET
+ prev: Union[Unset, str] = UNSET
+ return_policies: Union[Unset, list['ReturnPolicy']] = UNSET
+ total: Union[Unset, int] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.return_policy import ReturnPolicy
+ href = self.href
+
+ limit = self.limit
+
+ next_ = self.next_
+
+ offset = self.offset
+
+ prev = self.prev
+
+ return_policies: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.return_policies, Unset):
+ return_policies = []
+ for return_policies_item_data in self.return_policies:
+ return_policies_item = return_policies_item_data.to_dict()
+ return_policies.append(return_policies_item)
+
+
+
+ total = self.total
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if href is not UNSET:
+ field_dict["href"] = href
+ if limit is not UNSET:
+ field_dict["limit"] = limit
+ if next_ is not UNSET:
+ field_dict["next"] = next_
+ if offset is not UNSET:
+ field_dict["offset"] = offset
+ if prev is not UNSET:
+ field_dict["prev"] = prev
+ if return_policies is not UNSET:
+ field_dict["returnPolicies"] = return_policies
+ if total is not UNSET:
+ field_dict["total"] = total
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.return_policy import ReturnPolicy
+ d = dict(src_dict)
+ href = d.pop("href", UNSET)
+
+ limit = d.pop("limit", UNSET)
+
+ next_ = d.pop("next", UNSET)
+
+ offset = d.pop("offset", UNSET)
+
+ prev = d.pop("prev", UNSET)
+
+ return_policies = []
+ _return_policies = d.pop("returnPolicies", UNSET)
+ for return_policies_item_data in (_return_policies or []):
+ return_policies_item = ReturnPolicy.from_dict(return_policies_item_data)
+
+
+
+ return_policies.append(return_policies_item)
+
+
+ total = d.pop("total", UNSET)
+
+ return_policy_response = cls(
+ href=href,
+ limit=limit,
+ next_=next_,
+ offset=offset,
+ prev=prev,
+ return_policies=return_policies,
+ total=total,
+ )
+
+
+ return_policy_response.additional_properties = d
+ return return_policy_response
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/account/models/sales_tax.py b/ebay_client/generated/account/models/sales_tax.py
new file mode 100644
index 0000000..3649d24
--- /dev/null
+++ b/ebay_client/generated/account/models/sales_tax.py
@@ -0,0 +1,117 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="SalesTax")
+
+
+
+@_attrs_define
+class SalesTax:
+ """ This type is used to provide sales tax settings for a specific tax jurisdiction.
+
+ Attributes:
+ country_code (Union[Unset, str]): The country code enumeration value identifies the country to which this sales
+ tax rate applies.
Note: Sales-tax tables are available only for the US and
+ Canada marketplaces. Therefore, the only supported values
+ are: For implementation help, refer to eBay API documentation
+ sales_tax_jurisdiction_id (Union[Unset, str]): A unique ID that identifies the sales tax jurisdiction to which
+ the sales tax rate applies.
Note: When the returned
+ countryCode is US, the only supported return values for
+ salesTaxJurisdictionId are:AS (American Samoa)GU
+ (GuamMP Northern Mariana IslandsPW (Palau)VI (US
+ Virgin Islands)
+ sales_tax_percentage (Union[Unset, str]): The sales tax rate that will be applied to sales price. The
+ shippingAndHandlingTaxed value will indicate whether or not sales tax is also applied to shipping and
+ handling charges
Although it is a string, a percentage value is returned here, such as 7.75
+ shipping_and_handling_taxed (Union[Unset, bool]): If returned as true, sales tax is also applied to
+ shipping and handling charges, and not just the total sales price of the order.
+ """
+
+ country_code: Union[Unset, str] = UNSET
+ sales_tax_jurisdiction_id: Union[Unset, str] = UNSET
+ sales_tax_percentage: Union[Unset, str] = UNSET
+ shipping_and_handling_taxed: Union[Unset, bool] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ country_code = self.country_code
+
+ sales_tax_jurisdiction_id = self.sales_tax_jurisdiction_id
+
+ sales_tax_percentage = self.sales_tax_percentage
+
+ shipping_and_handling_taxed = self.shipping_and_handling_taxed
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if country_code is not UNSET:
+ field_dict["countryCode"] = country_code
+ if sales_tax_jurisdiction_id is not UNSET:
+ field_dict["salesTaxJurisdictionId"] = sales_tax_jurisdiction_id
+ if sales_tax_percentage is not UNSET:
+ field_dict["salesTaxPercentage"] = sales_tax_percentage
+ if shipping_and_handling_taxed is not UNSET:
+ field_dict["shippingAndHandlingTaxed"] = shipping_and_handling_taxed
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ country_code = d.pop("countryCode", UNSET)
+
+ sales_tax_jurisdiction_id = d.pop("salesTaxJurisdictionId", UNSET)
+
+ sales_tax_percentage = d.pop("salesTaxPercentage", UNSET)
+
+ shipping_and_handling_taxed = d.pop("shippingAndHandlingTaxed", UNSET)
+
+ sales_tax = cls(
+ country_code=country_code,
+ sales_tax_jurisdiction_id=sales_tax_jurisdiction_id,
+ sales_tax_percentage=sales_tax_percentage,
+ shipping_and_handling_taxed=shipping_and_handling_taxed,
+ )
+
+
+ sales_tax.additional_properties = d
+ return sales_tax
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/account/models/sales_tax_base.py b/ebay_client/generated/account/models/sales_tax_base.py
new file mode 100644
index 0000000..79bb9b0
--- /dev/null
+++ b/ebay_client/generated/account/models/sales_tax_base.py
@@ -0,0 +1,92 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="SalesTaxBase")
+
+
+
+@_attrs_define
+class SalesTaxBase:
+ """ This type is used by the base request of the createOrReplaceSalesTax.
+
+ Attributes:
+ sales_tax_percentage (Union[Unset, str]): This field is used to set the sales tax rate for the tax jurisdiction
+ set in the call URI. When applicable to an order, this sales tax rate will be applied to sales price. The
+ shippingAndHandlingTaxed value will indicate whether or not sales tax is also applied to shipping and
+ handling charges
Although it is a string, a percentage value is set here, such as 7.75.
+ shipping_and_handling_taxed (Union[Unset, bool]): This field is set to true if the seller wishes to
+ apply sales tax to shipping and handling charges, and not just the total sales price of the order. Otherwise,
+ this field's value should be set to false.
+ """
+
+ sales_tax_percentage: Union[Unset, str] = UNSET
+ shipping_and_handling_taxed: Union[Unset, bool] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ sales_tax_percentage = self.sales_tax_percentage
+
+ shipping_and_handling_taxed = self.shipping_and_handling_taxed
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if sales_tax_percentage is not UNSET:
+ field_dict["salesTaxPercentage"] = sales_tax_percentage
+ if shipping_and_handling_taxed is not UNSET:
+ field_dict["shippingAndHandlingTaxed"] = shipping_and_handling_taxed
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ sales_tax_percentage = d.pop("salesTaxPercentage", UNSET)
+
+ shipping_and_handling_taxed = d.pop("shippingAndHandlingTaxed", UNSET)
+
+ sales_tax_base = cls(
+ sales_tax_percentage=sales_tax_percentage,
+ shipping_and_handling_taxed=shipping_and_handling_taxed,
+ )
+
+
+ sales_tax_base.additional_properties = d
+ return sales_tax_base
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/account/models/sales_tax_input.py b/ebay_client/generated/account/models/sales_tax_input.py
new file mode 100644
index 0000000..09723f7
--- /dev/null
+++ b/ebay_client/generated/account/models/sales_tax_input.py
@@ -0,0 +1,119 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="SalesTaxInput")
+
+
+
+@_attrs_define
+class SalesTaxInput:
+ """
+ Attributes:
+ country_code (Union[Unset, str]): This parameter specifies the two-letter ISO
+ 3166 code of the country for which a sales-tax table entry is to be created or updated.
Note: Sales-tax tables are available only for the US and Canada marketplaces.
+ Therefore, the only supported values are:
+ sales_tax_jurisdiction_id (Union[Unset, str]): This parameter specifies the ID of the tax jurisdiction for which
+ a sales-tax table entry is to be created or updated.
Valid jurisdiction IDs can be retrieved using the getSalesTaxJurisdiction method of the Metadata API.
Note: When
+ countryCode is set to US, the only supported values for jurisdictionId
+ are:AS (American Samoa)GU (Guam)MP (Northern
+ Mariana Islands)PW (Palau)VI (US Virgin Islands)
+ sales_tax_percentage (Union[Unset, str]): This parameter specifies the sales tax rate for the specified
+ salesTaxJurisdictionId. When applicable to an order, this sales tax rate will be applied to the sales
+ price. The shippingAndHandlingTaxed value indicates whether or not sales tax is also applied to shipping
+ and handling charges
Although it is a string, a percentage value is set here, such as 7.75.
+ shipping_and_handling_taxed (Union[Unset, bool]): This parameter is set to true if the seller
+ wishes to apply sales tax to shipping and handling charges and not just the total sales price of an order.
+ Otherwise, this parameter's value should be set to false.
+ """
+
+ country_code: Union[Unset, str] = UNSET
+ sales_tax_jurisdiction_id: Union[Unset, str] = UNSET
+ sales_tax_percentage: Union[Unset, str] = UNSET
+ shipping_and_handling_taxed: Union[Unset, bool] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ country_code = self.country_code
+
+ sales_tax_jurisdiction_id = self.sales_tax_jurisdiction_id
+
+ sales_tax_percentage = self.sales_tax_percentage
+
+ shipping_and_handling_taxed = self.shipping_and_handling_taxed
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if country_code is not UNSET:
+ field_dict["countryCode"] = country_code
+ if sales_tax_jurisdiction_id is not UNSET:
+ field_dict["salesTaxJurisdictionId"] = sales_tax_jurisdiction_id
+ if sales_tax_percentage is not UNSET:
+ field_dict["salesTaxPercentage"] = sales_tax_percentage
+ if shipping_and_handling_taxed is not UNSET:
+ field_dict["shippingAndHandlingTaxed"] = shipping_and_handling_taxed
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ country_code = d.pop("countryCode", UNSET)
+
+ sales_tax_jurisdiction_id = d.pop("salesTaxJurisdictionId", UNSET)
+
+ sales_tax_percentage = d.pop("salesTaxPercentage", UNSET)
+
+ shipping_and_handling_taxed = d.pop("shippingAndHandlingTaxed", UNSET)
+
+ sales_tax_input = cls(
+ country_code=country_code,
+ sales_tax_jurisdiction_id=sales_tax_jurisdiction_id,
+ sales_tax_percentage=sales_tax_percentage,
+ shipping_and_handling_taxed=shipping_and_handling_taxed,
+ )
+
+
+ sales_tax_input.additional_properties = d
+ return sales_tax_input
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/account/models/sales_taxes.py b/ebay_client/generated/account/models/sales_taxes.py
new file mode 100644
index 0000000..94a2851
--- /dev/null
+++ b/ebay_client/generated/account/models/sales_taxes.py
@@ -0,0 +1,100 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.sales_tax import SalesTax
+
+
+
+
+
+T = TypeVar("T", bound="SalesTaxes")
+
+
+
+@_attrs_define
+class SalesTaxes:
+ """ This type is used by the root response of the getSalesTaxes method.
+
+ Attributes:
+ sales_taxes (Union[Unset, list['SalesTax']]): An array of one or more sales-tax rate entries for a specified
+ country.
If no sales-tax rate entries are set up, no response payload is returned, but an HTTP status
+ code of 204 No Content is returned.
+ """
+
+ sales_taxes: Union[Unset, list['SalesTax']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.sales_tax import SalesTax
+ sales_taxes: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.sales_taxes, Unset):
+ sales_taxes = []
+ for sales_taxes_item_data in self.sales_taxes:
+ sales_taxes_item = sales_taxes_item_data.to_dict()
+ sales_taxes.append(sales_taxes_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if sales_taxes is not UNSET:
+ field_dict["salesTaxes"] = sales_taxes
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.sales_tax import SalesTax
+ d = dict(src_dict)
+ sales_taxes = []
+ _sales_taxes = d.pop("salesTaxes", UNSET)
+ for sales_taxes_item_data in (_sales_taxes or []):
+ sales_taxes_item = SalesTax.from_dict(sales_taxes_item_data)
+
+
+
+ sales_taxes.append(sales_taxes_item)
+
+
+ sales_taxes = cls(
+ sales_taxes=sales_taxes,
+ )
+
+
+ sales_taxes.additional_properties = d
+ return sales_taxes
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/account/models/seller_eligibility_multi_program_response.py b/ebay_client/generated/account/models/seller_eligibility_multi_program_response.py
new file mode 100644
index 0000000..aba52be
--- /dev/null
+++ b/ebay_client/generated/account/models/seller_eligibility_multi_program_response.py
@@ -0,0 +1,100 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.seller_eligibility_response import SellerEligibilityResponse
+
+
+
+
+
+T = TypeVar("T", bound="SellerEligibilityMultiProgramResponse")
+
+
+
+@_attrs_define
+class SellerEligibilityMultiProgramResponse:
+ """ The base response of the getAdvertisingEligibility method that contains the seller eligibility information
+ for one or more advertising programs.
+
+ Attributes:
+ advertising_eligibility (Union[Unset, list['SellerEligibilityResponse']]): An array of response fields that
+ define the seller eligibility for eBay advertising programs.
+ """
+
+ advertising_eligibility: Union[Unset, list['SellerEligibilityResponse']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.seller_eligibility_response import SellerEligibilityResponse
+ advertising_eligibility: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.advertising_eligibility, Unset):
+ advertising_eligibility = []
+ for advertising_eligibility_item_data in self.advertising_eligibility:
+ advertising_eligibility_item = advertising_eligibility_item_data.to_dict()
+ advertising_eligibility.append(advertising_eligibility_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if advertising_eligibility is not UNSET:
+ field_dict["advertisingEligibility"] = advertising_eligibility
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.seller_eligibility_response import SellerEligibilityResponse
+ d = dict(src_dict)
+ advertising_eligibility = []
+ _advertising_eligibility = d.pop("advertisingEligibility", UNSET)
+ for advertising_eligibility_item_data in (_advertising_eligibility or []):
+ advertising_eligibility_item = SellerEligibilityResponse.from_dict(advertising_eligibility_item_data)
+
+
+
+ advertising_eligibility.append(advertising_eligibility_item)
+
+
+ seller_eligibility_multi_program_response = cls(
+ advertising_eligibility=advertising_eligibility,
+ )
+
+
+ seller_eligibility_multi_program_response.additional_properties = d
+ return seller_eligibility_multi_program_response
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/account/models/seller_eligibility_response.py b/ebay_client/generated/account/models/seller_eligibility_response.py
new file mode 100644
index 0000000..b5c186e
--- /dev/null
+++ b/ebay_client/generated/account/models/seller_eligibility_response.py
@@ -0,0 +1,103 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="SellerEligibilityResponse")
+
+
+
+@_attrs_define
+class SellerEligibilityResponse:
+ """ A type that is used to provide the seller's eligibility status for an eBay advertising program.
+
+ Attributes:
+ program_type (Union[Unset, str]): The eBay advertising program for which a seller may be eligible. For
+ implementation help, refer to eBay API documentation
+ reason (Union[Unset, str]): The reason why a seller is ineligible for the specified eBay advertising program.
This field is only returned if the seller is ineligible for the eBay advertising program. For
+ implementation help, refer to eBay API documentation
+ status (Union[Unset, str]): The seller eligibility status for the specified eBay advertising program. For
+ implementation help, refer to eBay API documentation
+ """
+
+ program_type: Union[Unset, str] = UNSET
+ reason: Union[Unset, str] = UNSET
+ status: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ program_type = self.program_type
+
+ reason = self.reason
+
+ status = self.status
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if program_type is not UNSET:
+ field_dict["programType"] = program_type
+ if reason is not UNSET:
+ field_dict["reason"] = reason
+ if status is not UNSET:
+ field_dict["status"] = status
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ program_type = d.pop("programType", UNSET)
+
+ reason = d.pop("reason", UNSET)
+
+ status = d.pop("status", UNSET)
+
+ seller_eligibility_response = cls(
+ program_type=program_type,
+ reason=reason,
+ status=status,
+ )
+
+
+ seller_eligibility_response.additional_properties = d
+ return seller_eligibility_response
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/account/models/selling_limit.py b/ebay_client/generated/account/models/selling_limit.py
new file mode 100644
index 0000000..6c6b6d1
--- /dev/null
+++ b/ebay_client/generated/account/models/selling_limit.py
@@ -0,0 +1,106 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.amount import Amount
+
+
+
+
+
+T = TypeVar("T", bound="SellingLimit")
+
+
+
+@_attrs_define
+class SellingLimit:
+ """ Type used by the sellingLimit container, a container that lists the monthly cap for the quantity of items
+ sold and total sales amount allowed for the seller's account.
+
+ Attributes:
+ amount (Union[Unset, Amount]): A complex type that describes the value of a monetary amount as represented by a
+ global currency. When passing in an amount in a request payload, both currency and value fields
+ are required, and both fields are also always returned for an amount in a response field.
+ quantity (Union[Unset, int]): This field shows the monthly cap for total quantity sold allowed for the seller's
+ account. This field may not be returned if a seller does not have a monthly cap for total quantity sold.
+ """
+
+ amount: Union[Unset, 'Amount'] = UNSET
+ quantity: Union[Unset, int] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.amount import Amount
+ amount: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.amount, Unset):
+ amount = self.amount.to_dict()
+
+ quantity = self.quantity
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if amount is not UNSET:
+ field_dict["amount"] = amount
+ if quantity is not UNSET:
+ field_dict["quantity"] = quantity
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.amount import Amount
+ d = dict(src_dict)
+ _amount = d.pop("amount", UNSET)
+ amount: Union[Unset, Amount]
+ if isinstance(_amount, Unset):
+ amount = UNSET
+ else:
+ amount = Amount.from_dict(_amount)
+
+
+
+
+ quantity = d.pop("quantity", UNSET)
+
+ selling_limit = cls(
+ amount=amount,
+ quantity=quantity,
+ )
+
+
+ selling_limit.additional_properties = d
+ return selling_limit
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/account/models/selling_privileges.py b/ebay_client/generated/account/models/selling_privileges.py
new file mode 100644
index 0000000..027f30b
--- /dev/null
+++ b/ebay_client/generated/account/models/selling_privileges.py
@@ -0,0 +1,105 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.selling_limit import SellingLimit
+
+
+
+
+
+T = TypeVar("T", bound="SellingPrivileges")
+
+
+
+@_attrs_define
+class SellingPrivileges:
+ """ This type is used by the base response of the getPrivileges method.
+
+ Attributes:
+ seller_registration_completed (Union[Unset, bool]): If this field is returned as true, the seller's
+ registration is completed. If this field is returned as false, the registration process is not
+ complete.
+ selling_limit (Union[Unset, SellingLimit]): Type used by the sellingLimit container, a container that
+ lists the monthly cap for the quantity of items sold and total sales amount allowed for the seller's account.
+ """
+
+ seller_registration_completed: Union[Unset, bool] = UNSET
+ selling_limit: Union[Unset, 'SellingLimit'] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.selling_limit import SellingLimit
+ seller_registration_completed = self.seller_registration_completed
+
+ selling_limit: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.selling_limit, Unset):
+ selling_limit = self.selling_limit.to_dict()
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if seller_registration_completed is not UNSET:
+ field_dict["sellerRegistrationCompleted"] = seller_registration_completed
+ if selling_limit is not UNSET:
+ field_dict["sellingLimit"] = selling_limit
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.selling_limit import SellingLimit
+ d = dict(src_dict)
+ seller_registration_completed = d.pop("sellerRegistrationCompleted", UNSET)
+
+ _selling_limit = d.pop("sellingLimit", UNSET)
+ selling_limit: Union[Unset, SellingLimit]
+ if isinstance(_selling_limit, Unset):
+ selling_limit = UNSET
+ else:
+ selling_limit = SellingLimit.from_dict(_selling_limit)
+
+
+
+
+ selling_privileges = cls(
+ seller_registration_completed=seller_registration_completed,
+ selling_limit=selling_limit,
+ )
+
+
+ selling_privileges.additional_properties = d
+ return selling_privileges
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/account/models/set_fulfillment_policy_response.py b/ebay_client/generated/account/models/set_fulfillment_policy_response.py
new file mode 100644
index 0000000..e09e9d9
--- /dev/null
+++ b/ebay_client/generated/account/models/set_fulfillment_policy_response.py
@@ -0,0 +1,305 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.category_type import CategoryType
+ from ..models.shipping_option import ShippingOption
+ from ..models.time_duration import TimeDuration
+ from ..models.error import Error
+ from ..models.region_set import RegionSet
+
+
+
+
+
+T = TypeVar("T", bound="SetFulfillmentPolicyResponse")
+
+
+
+@_attrs_define
+class SetFulfillmentPolicyResponse:
+ """ Complex type that that gets populated with a response containing a fulfillment policy.
+
+ Attributes:
+ category_types (Union[Unset, list['CategoryType']]): This container indicates whether the fulfillment business
+ policy applies to motor vehicle listings, or if it applies to non-motor vehicle listings.
+ description (Union[Unset, str]): A seller-defined description of the fulfillment policy. This description is
+ only for the seller's use, and is not exposed on any eBay pages. This field is returned if set for the policy.
+
Max length: 250
+ freight_shipping (Union[Unset, bool]): If returned as true, the seller offers freight shipping.
+ Freight shipping can be used for large items over 150 lbs.
+ fulfillment_policy_id (Union[Unset, str]): A unique eBay-assigned ID for a fulfillment business policy. This ID
+ is generated when the policy is created.
+ global_shipping (Union[Unset, bool]): Note: This field is only applicable for the
+ eBay United Kingdom marketplace (EBAY_GB).
This field is included and set to
+ true if the seller wants to use the Global Shipping Program for international shipments. See the Global Shipping Program help topic for more
+ details and requirements on the Global Shipping Program.
A seller can use a combination of the Global
+ Shipping Program and other international shipping services.
If set to false or if the field
+ is omitted, the seller has to manually specifying individual international shipping services (if the seller
+ ships internationally), as described in Setting up worldwide shipping.
Sellers opt in or out of the
+ Global Shipping Program through the Shipping preferences in My eBay.
eBay International Shipping is an
+ account level setting; no field needs to be set in a Fulfillment business policy to enable eBay International
+ Shipping. If a US seller's account is opted in to eBay International Shipping, this shipping option will be
+ enabled automatically for all listings where international shipping is available. A US seller who is opted in to
+ eBay International Shipping can also specify individual international shipping service options for a Fulfillment
+ business policy.
+ handling_time (Union[Unset, TimeDuration]): A type used to specify a period of time using a specified time-
+ measurement unit. Payment, return, and fulfillment business policies all use this type to specify time
+ windows.
Whenever a container that uses this type is used in a request, both of these fields are
+ required. Similarly, whenever a container that uses this type is returned in a response, both of these fields
+ are always returned.
+ local_pickup (Union[Unset, bool]): If returned as true, local pickup is available for items using
+ this policy.
+ marketplace_id (Union[Unset, str]): The ID of the eBay marketplace to which this fulfillment business policy
+ applies. For implementation help, refer to eBay API documentation
+ name (Union[Unset, str]): A seller-defined name for this fulfillment business policy.
Max length:
+ 64
+ pickup_drop_off (Union[Unset, bool]): If returned as true, the seller offers the "Click and
+ Collect" option.
Currently, "Click and Collect" is available only to large retail merchants the eBay AU,
+ UK, DE, FR, and IT marketplaces.
+ shipping_options (Union[Unset, list['ShippingOption']]): This array is used to provide detailed information on
+ the domestic and international shipping options available for the policy. A separate ShippingOption
+ object covers domestic shipping service options and international shipping service options (if the seller ships
+ to international locations).
The optionType field indicates whether the ShippingOption
+ object applies to domestic or international shipping, and the costType field indicates whether flat-rate
+ shipping or calculated shipping will be used. A separate ShippingServices object is used to specify
+ cost and other details for every available domestic and international shipping service option.
+ ship_to_locations (Union[Unset, RegionSet]): This type consists of the regionIncluded and
+ regionExcluded arrays, which indicate the areas to where the seller does and doesn't ship.
+ warnings (Union[Unset, list['Error']]): An array of one or more errors or warnings that were generated during
+ the processing of the request. If there were no issues with the request, this array will return empty.
+ """
+
+ category_types: Union[Unset, list['CategoryType']] = UNSET
+ description: Union[Unset, str] = UNSET
+ freight_shipping: Union[Unset, bool] = UNSET
+ fulfillment_policy_id: Union[Unset, str] = UNSET
+ global_shipping: Union[Unset, bool] = UNSET
+ handling_time: Union[Unset, 'TimeDuration'] = UNSET
+ local_pickup: Union[Unset, bool] = UNSET
+ marketplace_id: Union[Unset, str] = UNSET
+ name: Union[Unset, str] = UNSET
+ pickup_drop_off: Union[Unset, bool] = UNSET
+ shipping_options: Union[Unset, list['ShippingOption']] = UNSET
+ ship_to_locations: Union[Unset, 'RegionSet'] = UNSET
+ warnings: Union[Unset, list['Error']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.category_type import CategoryType
+ from ..models.shipping_option import ShippingOption
+ from ..models.time_duration import TimeDuration
+ from ..models.error import Error
+ from ..models.region_set import RegionSet
+ category_types: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.category_types, Unset):
+ category_types = []
+ for category_types_item_data in self.category_types:
+ category_types_item = category_types_item_data.to_dict()
+ category_types.append(category_types_item)
+
+
+
+ description = self.description
+
+ freight_shipping = self.freight_shipping
+
+ fulfillment_policy_id = self.fulfillment_policy_id
+
+ global_shipping = self.global_shipping
+
+ handling_time: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.handling_time, Unset):
+ handling_time = self.handling_time.to_dict()
+
+ local_pickup = self.local_pickup
+
+ marketplace_id = self.marketplace_id
+
+ name = self.name
+
+ pickup_drop_off = self.pickup_drop_off
+
+ shipping_options: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.shipping_options, Unset):
+ shipping_options = []
+ for shipping_options_item_data in self.shipping_options:
+ shipping_options_item = shipping_options_item_data.to_dict()
+ shipping_options.append(shipping_options_item)
+
+
+
+ ship_to_locations: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.ship_to_locations, Unset):
+ ship_to_locations = self.ship_to_locations.to_dict()
+
+ warnings: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.warnings, Unset):
+ warnings = []
+ for warnings_item_data in self.warnings:
+ warnings_item = warnings_item_data.to_dict()
+ warnings.append(warnings_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if category_types is not UNSET:
+ field_dict["categoryTypes"] = category_types
+ if description is not UNSET:
+ field_dict["description"] = description
+ if freight_shipping is not UNSET:
+ field_dict["freightShipping"] = freight_shipping
+ if fulfillment_policy_id is not UNSET:
+ field_dict["fulfillmentPolicyId"] = fulfillment_policy_id
+ if global_shipping is not UNSET:
+ field_dict["globalShipping"] = global_shipping
+ if handling_time is not UNSET:
+ field_dict["handlingTime"] = handling_time
+ if local_pickup is not UNSET:
+ field_dict["localPickup"] = local_pickup
+ if marketplace_id is not UNSET:
+ field_dict["marketplaceId"] = marketplace_id
+ if name is not UNSET:
+ field_dict["name"] = name
+ if pickup_drop_off is not UNSET:
+ field_dict["pickupDropOff"] = pickup_drop_off
+ if shipping_options is not UNSET:
+ field_dict["shippingOptions"] = shipping_options
+ if ship_to_locations is not UNSET:
+ field_dict["shipToLocations"] = ship_to_locations
+ if warnings is not UNSET:
+ field_dict["warnings"] = warnings
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.category_type import CategoryType
+ from ..models.shipping_option import ShippingOption
+ from ..models.time_duration import TimeDuration
+ from ..models.error import Error
+ from ..models.region_set import RegionSet
+ d = dict(src_dict)
+ category_types = []
+ _category_types = d.pop("categoryTypes", UNSET)
+ for category_types_item_data in (_category_types or []):
+ category_types_item = CategoryType.from_dict(category_types_item_data)
+
+
+
+ category_types.append(category_types_item)
+
+
+ description = d.pop("description", UNSET)
+
+ freight_shipping = d.pop("freightShipping", UNSET)
+
+ fulfillment_policy_id = d.pop("fulfillmentPolicyId", UNSET)
+
+ global_shipping = d.pop("globalShipping", UNSET)
+
+ _handling_time = d.pop("handlingTime", UNSET)
+ handling_time: Union[Unset, TimeDuration]
+ if isinstance(_handling_time, Unset):
+ handling_time = UNSET
+ else:
+ handling_time = TimeDuration.from_dict(_handling_time)
+
+
+
+
+ local_pickup = d.pop("localPickup", UNSET)
+
+ marketplace_id = d.pop("marketplaceId", UNSET)
+
+ name = d.pop("name", UNSET)
+
+ pickup_drop_off = d.pop("pickupDropOff", UNSET)
+
+ shipping_options = []
+ _shipping_options = d.pop("shippingOptions", UNSET)
+ for shipping_options_item_data in (_shipping_options or []):
+ shipping_options_item = ShippingOption.from_dict(shipping_options_item_data)
+
+
+
+ shipping_options.append(shipping_options_item)
+
+
+ _ship_to_locations = d.pop("shipToLocations", UNSET)
+ ship_to_locations: Union[Unset, RegionSet]
+ if isinstance(_ship_to_locations, Unset):
+ ship_to_locations = UNSET
+ else:
+ ship_to_locations = RegionSet.from_dict(_ship_to_locations)
+
+
+
+
+ warnings = []
+ _warnings = d.pop("warnings", UNSET)
+ for warnings_item_data in (_warnings or []):
+ warnings_item = Error.from_dict(warnings_item_data)
+
+
+
+ warnings.append(warnings_item)
+
+
+ set_fulfillment_policy_response = cls(
+ category_types=category_types,
+ description=description,
+ freight_shipping=freight_shipping,
+ fulfillment_policy_id=fulfillment_policy_id,
+ global_shipping=global_shipping,
+ handling_time=handling_time,
+ local_pickup=local_pickup,
+ marketplace_id=marketplace_id,
+ name=name,
+ pickup_drop_off=pickup_drop_off,
+ shipping_options=shipping_options,
+ ship_to_locations=ship_to_locations,
+ warnings=warnings,
+ )
+
+
+ set_fulfillment_policy_response.additional_properties = d
+ return set_fulfillment_policy_response
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/account/models/set_payment_policy_response.py b/ebay_client/generated/account/models/set_payment_policy_response.py
new file mode 100644
index 0000000..958494a
--- /dev/null
+++ b/ebay_client/generated/account/models/set_payment_policy_response.py
@@ -0,0 +1,276 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.category_type import CategoryType
+ from ..models.time_duration import TimeDuration
+ from ..models.error import Error
+ from ..models.payment_method import PaymentMethod
+ from ..models.deposit import Deposit
+
+
+
+
+
+T = TypeVar("T", bound="SetPaymentPolicyResponse")
+
+
+
+@_attrs_define
+class SetPaymentPolicyResponse:
+ """ Complex type that that gets populated with a response containing a payment policy.
+
+ Attributes:
+ category_types (Union[Unset, list['CategoryType']]): This container indicates whether the payment business
+ policy applies to motor vehicle listings, or if it applies to non-motor vehicle listings.
+ deposit (Union[Unset, Deposit]): This type is used to specify/indicate that an initial deposit is required for a
+ motor vehicle listing.
+ description (Union[Unset, str]): A seller-defined description of the payment business policy. This description
+ is only for the seller's use, and is not exposed on any eBay pages. This field is returned if set for the
+ policy.
Max length: 250
+ full_payment_due_in (Union[Unset, TimeDuration]): A type used to specify a period of time using a specified
+ time-measurement unit. Payment, return, and fulfillment business policies all use this type to specify time
+ windows.
Whenever a container that uses this type is used in a request, both of these fields are
+ required. Similarly, whenever a container that uses this type is returned in a response, both of these fields
+ are always returned.
+ immediate_pay (Union[Unset, bool]): The value returned in this field will reflect the value set by the seller in
+ the immediatePay request field. A value of true indicates that immediate payment is required
+ from the buyer for: - A fixed-price item
- An auction item where the buyer is using the 'Buy it Now'
+ option
- A deposit for a motor vehicle listing
It is possible for the seller to set this
+ field as true in the payment business policy, but it will not apply in some scenarios. For example,
+ immediate payment is not applicable for auction listings that have a winning bidder, for buyer purchases that
+ involve the Best Offer feature, or for transactions that happen offline between the buyer and seller.
+ marketplace_id (Union[Unset, str]): The ID of the eBay marketplace to which this payment business policy
+ applies. For implementation help, refer to eBay API documentation
+ name (Union[Unset, str]): A seller-defined name for this payment business policy. Names must be unique for
+ policies assigned to the same marketplace.
Max length: 64
+ payment_instructions (Union[Unset, str]): Note: NO LONGER SUPPORTED. Although this
+ field may be returned for some older payment business policies, payment instructions are no longer supported by
+ payment business policies. If this field is returned, it can be ignored and these payment instructions will not
+ appear in any listings that use the corresponding business policy.
A free-form string field that allows
+ sellers to add detailed payment instructions to their listings.
+ payment_methods (Union[Unset, list['PaymentMethod']]): This array shows the available payment methods that the
+ seller has set for the payment business policy.
Sellers do not have to specify any electronic payment
+ methods for listings, so this array will often be returned empty unless the payment business policy is intended
+ for motor vehicle listings or other items in categories where offline payments are required or supported.
+ payment_policy_id (Union[Unset, str]): A unique eBay-assigned ID for a payment business policy. This ID is
+ generated when the policy is created.
+ warnings (Union[Unset, list['Error']]): An array of one or more errors or warnings that were generated during
+ the processing of the request. If there were no issues with the request, this array will return empty.
+ """
+
+ category_types: Union[Unset, list['CategoryType']] = UNSET
+ deposit: Union[Unset, 'Deposit'] = UNSET
+ description: Union[Unset, str] = UNSET
+ full_payment_due_in: Union[Unset, 'TimeDuration'] = UNSET
+ immediate_pay: Union[Unset, bool] = UNSET
+ marketplace_id: Union[Unset, str] = UNSET
+ name: Union[Unset, str] = UNSET
+ payment_instructions: Union[Unset, str] = UNSET
+ payment_methods: Union[Unset, list['PaymentMethod']] = UNSET
+ payment_policy_id: Union[Unset, str] = UNSET
+ warnings: Union[Unset, list['Error']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.category_type import CategoryType
+ from ..models.time_duration import TimeDuration
+ from ..models.error import Error
+ from ..models.payment_method import PaymentMethod
+ from ..models.deposit import Deposit
+ category_types: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.category_types, Unset):
+ category_types = []
+ for category_types_item_data in self.category_types:
+ category_types_item = category_types_item_data.to_dict()
+ category_types.append(category_types_item)
+
+
+
+ deposit: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.deposit, Unset):
+ deposit = self.deposit.to_dict()
+
+ description = self.description
+
+ full_payment_due_in: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.full_payment_due_in, Unset):
+ full_payment_due_in = self.full_payment_due_in.to_dict()
+
+ immediate_pay = self.immediate_pay
+
+ marketplace_id = self.marketplace_id
+
+ name = self.name
+
+ payment_instructions = self.payment_instructions
+
+ payment_methods: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.payment_methods, Unset):
+ payment_methods = []
+ for payment_methods_item_data in self.payment_methods:
+ payment_methods_item = payment_methods_item_data.to_dict()
+ payment_methods.append(payment_methods_item)
+
+
+
+ payment_policy_id = self.payment_policy_id
+
+ warnings: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.warnings, Unset):
+ warnings = []
+ for warnings_item_data in self.warnings:
+ warnings_item = warnings_item_data.to_dict()
+ warnings.append(warnings_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if category_types is not UNSET:
+ field_dict["categoryTypes"] = category_types
+ if deposit is not UNSET:
+ field_dict["deposit"] = deposit
+ if description is not UNSET:
+ field_dict["description"] = description
+ if full_payment_due_in is not UNSET:
+ field_dict["fullPaymentDueIn"] = full_payment_due_in
+ if immediate_pay is not UNSET:
+ field_dict["immediatePay"] = immediate_pay
+ if marketplace_id is not UNSET:
+ field_dict["marketplaceId"] = marketplace_id
+ if name is not UNSET:
+ field_dict["name"] = name
+ if payment_instructions is not UNSET:
+ field_dict["paymentInstructions"] = payment_instructions
+ if payment_methods is not UNSET:
+ field_dict["paymentMethods"] = payment_methods
+ if payment_policy_id is not UNSET:
+ field_dict["paymentPolicyId"] = payment_policy_id
+ if warnings is not UNSET:
+ field_dict["warnings"] = warnings
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.category_type import CategoryType
+ from ..models.time_duration import TimeDuration
+ from ..models.error import Error
+ from ..models.payment_method import PaymentMethod
+ from ..models.deposit import Deposit
+ d = dict(src_dict)
+ category_types = []
+ _category_types = d.pop("categoryTypes", UNSET)
+ for category_types_item_data in (_category_types or []):
+ category_types_item = CategoryType.from_dict(category_types_item_data)
+
+
+
+ category_types.append(category_types_item)
+
+
+ _deposit = d.pop("deposit", UNSET)
+ deposit: Union[Unset, Deposit]
+ if isinstance(_deposit, Unset):
+ deposit = UNSET
+ else:
+ deposit = Deposit.from_dict(_deposit)
+
+
+
+
+ description = d.pop("description", UNSET)
+
+ _full_payment_due_in = d.pop("fullPaymentDueIn", UNSET)
+ full_payment_due_in: Union[Unset, TimeDuration]
+ if isinstance(_full_payment_due_in, Unset):
+ full_payment_due_in = UNSET
+ else:
+ full_payment_due_in = TimeDuration.from_dict(_full_payment_due_in)
+
+
+
+
+ immediate_pay = d.pop("immediatePay", UNSET)
+
+ marketplace_id = d.pop("marketplaceId", UNSET)
+
+ name = d.pop("name", UNSET)
+
+ payment_instructions = d.pop("paymentInstructions", UNSET)
+
+ payment_methods = []
+ _payment_methods = d.pop("paymentMethods", UNSET)
+ for payment_methods_item_data in (_payment_methods or []):
+ payment_methods_item = PaymentMethod.from_dict(payment_methods_item_data)
+
+
+
+ payment_methods.append(payment_methods_item)
+
+
+ payment_policy_id = d.pop("paymentPolicyId", UNSET)
+
+ warnings = []
+ _warnings = d.pop("warnings", UNSET)
+ for warnings_item_data in (_warnings or []):
+ warnings_item = Error.from_dict(warnings_item_data)
+
+
+
+ warnings.append(warnings_item)
+
+
+ set_payment_policy_response = cls(
+ category_types=category_types,
+ deposit=deposit,
+ description=description,
+ full_payment_due_in=full_payment_due_in,
+ immediate_pay=immediate_pay,
+ marketplace_id=marketplace_id,
+ name=name,
+ payment_instructions=payment_instructions,
+ payment_methods=payment_methods,
+ payment_policy_id=payment_policy_id,
+ warnings=warnings,
+ )
+
+
+ set_payment_policy_response.additional_properties = d
+ return set_payment_policy_response
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/account/models/set_return_policy_response.py b/ebay_client/generated/account/models/set_return_policy_response.py
new file mode 100644
index 0000000..9b7d9ed
--- /dev/null
+++ b/ebay_client/generated/account/models/set_return_policy_response.py
@@ -0,0 +1,307 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.time_duration import TimeDuration
+ from ..models.category_type import CategoryType
+ from ..models.error import Error
+ from ..models.international_return_override_type import InternationalReturnOverrideType
+
+
+
+
+
+T = TypeVar("T", bound="SetReturnPolicyResponse")
+
+
+
+@_attrs_define
+class SetReturnPolicyResponse:
+ """ A complex type that is populated with a response containing a return policies.
+
+ Attributes:
+ category_types (Union[Unset, list['CategoryType']]): This field always returns
+ ALL_EXCLUDING_MOTORS_VEHICLES for return business policies, since return business policies are not
+ applicable to motor vehicle listings.
+ description (Union[Unset, str]): A seller-defined description of the return business policy. This description is
+ only for the seller's use, and is not exposed on any eBay pages. This field is returned if set for the policy.
+
Max length: 250
+ extended_holiday_returns_offered (Union[Unset, bool]): Important! This field is deprecated, since eBay no longer supports extended holiday
+ returns. This field should no longer be returned.
+ international_override (Union[Unset, InternationalReturnOverrideType]): This type defines the fields for a
+ seller's international return policy. Sellers have the ability to set separate domestic and international return
+ policies, but if an international return policy is not set, the same return policy settings specified for the
+ domestic return policy are also used for returns for international buyers.
+ marketplace_id (Union[Unset, str]): The ID of the eBay marketplace to which this return business policy applies.
+ For implementation help, refer to eBay API documentation
+ name (Union[Unset, str]): A seller-defined name for this return business policy. Names must be unique for
+ policies assigned to the same marketplace.
Max length: 64
+ refund_method (Union[Unset, str]): If a seller indicates that they will accept buyer returns, this value will be
+ MONEY_BACK. For implementation help, refer to eBay API documentation
+ restocking_fee_percentage (Union[Unset, str]): Important! This field is deprecated, since eBay no longer allows sellers to charge a
+ restocking fee for buyer remorse returns.
+ return_instructions (Union[Unset, str]): This text-based field provides more details on seller-specified return
+ instructions.
Important! This field is no
+ longer supported on many eBay marketplaces. To see if a marketplace and eBay category does support this field,
+ call getReturnPolicies
+ method of the Metadata API. Then you will look for the policyDescriptionEnabled field with a value
+ of true for the eBay category.
Max length: 5000 (8000 for DE)
+ return_method (Union[Unset, str]): This field will be returned if the seller is willing and able to offer a
+ replacement item as an alternative to 'Money Back'. For implementation help, refer to eBay API documentation
+ return_period (Union[Unset, TimeDuration]): A type used to specify a period of time using a specified time-
+ measurement unit. Payment, return, and fulfillment business policies all use this type to specify time
+ windows.
Whenever a container that uses this type is used in a request, both of these fields are
+ required. Similarly, whenever a container that uses this type is returned in a response, both of these fields
+ are always returned.
+ return_policy_id (Union[Unset, str]): A unique eBay-assigned ID for a return business policy. This ID is
+ generated when the policy is created.
+ returns_accepted (Union[Unset, bool]): If set to true, the seller accepts returns. If set to
+ false, this field indicates that the seller does not accept returns.
+ return_shipping_cost_payer (Union[Unset, str]): This field indicates who is responsible for paying for the
+ shipping charges for returned items. The field can be set to either BUYER or SELLER.
+ Note: Eligible Parts & Accessories (P&A)
+ listings require sellers to offer buyers free returns with a minimum return period of 30 days. See Support for easy returns in Parts and Accessories for details.
Note that the
+ seller is always responsible for return shipping costs for SNAD-related issues.
This container will be
+ returned unless the business policy states that the seller does not accept returns. For implementation help,
+ refer to eBay
+ API documentation
+ warnings (Union[Unset, list['Error']]): An array of one or more errors or warnings that were generated during
+ the processing of the request. If there were no issues with the request, this array will return empty.
+ """
+
+ category_types: Union[Unset, list['CategoryType']] = UNSET
+ description: Union[Unset, str] = UNSET
+ extended_holiday_returns_offered: Union[Unset, bool] = UNSET
+ international_override: Union[Unset, 'InternationalReturnOverrideType'] = UNSET
+ marketplace_id: Union[Unset, str] = UNSET
+ name: Union[Unset, str] = UNSET
+ refund_method: Union[Unset, str] = UNSET
+ restocking_fee_percentage: Union[Unset, str] = UNSET
+ return_instructions: Union[Unset, str] = UNSET
+ return_method: Union[Unset, str] = UNSET
+ return_period: Union[Unset, 'TimeDuration'] = UNSET
+ return_policy_id: Union[Unset, str] = UNSET
+ returns_accepted: Union[Unset, bool] = UNSET
+ return_shipping_cost_payer: Union[Unset, str] = UNSET
+ warnings: Union[Unset, list['Error']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.time_duration import TimeDuration
+ from ..models.category_type import CategoryType
+ from ..models.error import Error
+ from ..models.international_return_override_type import InternationalReturnOverrideType
+ category_types: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.category_types, Unset):
+ category_types = []
+ for category_types_item_data in self.category_types:
+ category_types_item = category_types_item_data.to_dict()
+ category_types.append(category_types_item)
+
+
+
+ description = self.description
+
+ extended_holiday_returns_offered = self.extended_holiday_returns_offered
+
+ international_override: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.international_override, Unset):
+ international_override = self.international_override.to_dict()
+
+ marketplace_id = self.marketplace_id
+
+ name = self.name
+
+ refund_method = self.refund_method
+
+ restocking_fee_percentage = self.restocking_fee_percentage
+
+ return_instructions = self.return_instructions
+
+ return_method = self.return_method
+
+ return_period: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.return_period, Unset):
+ return_period = self.return_period.to_dict()
+
+ return_policy_id = self.return_policy_id
+
+ returns_accepted = self.returns_accepted
+
+ return_shipping_cost_payer = self.return_shipping_cost_payer
+
+ warnings: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.warnings, Unset):
+ warnings = []
+ for warnings_item_data in self.warnings:
+ warnings_item = warnings_item_data.to_dict()
+ warnings.append(warnings_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if category_types is not UNSET:
+ field_dict["categoryTypes"] = category_types
+ if description is not UNSET:
+ field_dict["description"] = description
+ if extended_holiday_returns_offered is not UNSET:
+ field_dict["extendedHolidayReturnsOffered"] = extended_holiday_returns_offered
+ if international_override is not UNSET:
+ field_dict["internationalOverride"] = international_override
+ if marketplace_id is not UNSET:
+ field_dict["marketplaceId"] = marketplace_id
+ if name is not UNSET:
+ field_dict["name"] = name
+ if refund_method is not UNSET:
+ field_dict["refundMethod"] = refund_method
+ if restocking_fee_percentage is not UNSET:
+ field_dict["restockingFeePercentage"] = restocking_fee_percentage
+ if return_instructions is not UNSET:
+ field_dict["returnInstructions"] = return_instructions
+ if return_method is not UNSET:
+ field_dict["returnMethod"] = return_method
+ if return_period is not UNSET:
+ field_dict["returnPeriod"] = return_period
+ if return_policy_id is not UNSET:
+ field_dict["returnPolicyId"] = return_policy_id
+ if returns_accepted is not UNSET:
+ field_dict["returnsAccepted"] = returns_accepted
+ if return_shipping_cost_payer is not UNSET:
+ field_dict["returnShippingCostPayer"] = return_shipping_cost_payer
+ if warnings is not UNSET:
+ field_dict["warnings"] = warnings
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.time_duration import TimeDuration
+ from ..models.category_type import CategoryType
+ from ..models.error import Error
+ from ..models.international_return_override_type import InternationalReturnOverrideType
+ d = dict(src_dict)
+ category_types = []
+ _category_types = d.pop("categoryTypes", UNSET)
+ for category_types_item_data in (_category_types or []):
+ category_types_item = CategoryType.from_dict(category_types_item_data)
+
+
+
+ category_types.append(category_types_item)
+
+
+ description = d.pop("description", UNSET)
+
+ extended_holiday_returns_offered = d.pop("extendedHolidayReturnsOffered", UNSET)
+
+ _international_override = d.pop("internationalOverride", UNSET)
+ international_override: Union[Unset, InternationalReturnOverrideType]
+ if isinstance(_international_override, Unset):
+ international_override = UNSET
+ else:
+ international_override = InternationalReturnOverrideType.from_dict(_international_override)
+
+
+
+
+ marketplace_id = d.pop("marketplaceId", UNSET)
+
+ name = d.pop("name", UNSET)
+
+ refund_method = d.pop("refundMethod", UNSET)
+
+ restocking_fee_percentage = d.pop("restockingFeePercentage", UNSET)
+
+ return_instructions = d.pop("returnInstructions", UNSET)
+
+ return_method = d.pop("returnMethod", UNSET)
+
+ _return_period = d.pop("returnPeriod", UNSET)
+ return_period: Union[Unset, TimeDuration]
+ if isinstance(_return_period, Unset):
+ return_period = UNSET
+ else:
+ return_period = TimeDuration.from_dict(_return_period)
+
+
+
+
+ return_policy_id = d.pop("returnPolicyId", UNSET)
+
+ returns_accepted = d.pop("returnsAccepted", UNSET)
+
+ return_shipping_cost_payer = d.pop("returnShippingCostPayer", UNSET)
+
+ warnings = []
+ _warnings = d.pop("warnings", UNSET)
+ for warnings_item_data in (_warnings or []):
+ warnings_item = Error.from_dict(warnings_item_data)
+
+
+
+ warnings.append(warnings_item)
+
+
+ set_return_policy_response = cls(
+ category_types=category_types,
+ description=description,
+ extended_holiday_returns_offered=extended_holiday_returns_offered,
+ international_override=international_override,
+ marketplace_id=marketplace_id,
+ name=name,
+ refund_method=refund_method,
+ restocking_fee_percentage=restocking_fee_percentage,
+ return_instructions=return_instructions,
+ return_method=return_method,
+ return_period=return_period,
+ return_policy_id=return_policy_id,
+ returns_accepted=returns_accepted,
+ return_shipping_cost_payer=return_shipping_cost_payer,
+ warnings=warnings,
+ )
+
+
+ set_return_policy_response.additional_properties = d
+ return set_return_policy_response
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/account/models/shipping_option.py b/ebay_client/generated/account/models/shipping_option.py
new file mode 100644
index 0000000..00255d4
--- /dev/null
+++ b/ebay_client/generated/account/models/shipping_option.py
@@ -0,0 +1,243 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.amount import Amount
+ from ..models.shipping_service import ShippingService
+
+
+
+
+
+T = TypeVar("T", bound="ShippingOption")
+
+
+
+@_attrs_define
+class ShippingOption:
+ """ This type is used by the shippingOptions array, which is used to provide detailed information on the domestic
+ and international shipping options available for the policy. A separate ShippingOption object covers domestic
+ shipping service options and international shipping service options (if the seller ships to international
+ locations).
+
+ Attributes:
+ cost_type (Union[Unset, str]): This field defines whether the shipping cost model is FLAT_RATE (the
+ same rate for all buyers, or buyers within a region if shipping rate tables are used) or CALCULATED
+ (the shipping rate varies by the ship-to location and size and weight of the package).
This field is
+ conditionally required if any shipping service options are specified (domestic and/or international). For
+ implementation help, refer to eBay API documentation
+ insurance_fee (Union[Unset, Amount]): A complex type that describes the value of a monetary amount as
+ represented by a global currency. When passing in an amount in a request payload, both currency and
+ value fields are required, and both fields are also always returned for an amount in a response field.
+ insurance_offered (Union[Unset, bool]): This field has been deprecated.
Shipping insurance is offered
+ only via a shipping carrier's shipping services and is no longer available via eBay shipping policies.
+ option_type (Union[Unset, str]): This field is used to indicate if the corresponding shipping service options
+ (under shippingServices array) are domestic or international shipping service options. This field is
+ conditionally required if any shipping service options are specified (domestic and/or international). For
+ implementation help, refer to eBay API documentation
+ package_handling_cost (Union[Unset, Amount]): A complex type that describes the value of a monetary amount as
+ represented by a global currency. When passing in an amount in a request payload, both currency and
+ value fields are required, and both fields are also always returned for an amount in a response field.
+ rate_table_id (Union[Unset, str]): This field is used if the seller wants to associate a domestic or
+ international shipping rate table to the fulfillment business policy. The getRateTables method can be used to retrieve
+ shipping rate table IDs.
With domestic and international shipping rate tables, the seller can set
+ different shipping costs based on shipping regions and shipping speed/level of service (one-day, expedited,
+ standard, economy). There are also options to add additional per-weight and handling charges.
Sellers
+ need to be careful that shipping rate tables match the corresponding shipping service options. In other words, a
+ domestic shipping rate table must not be specified in the same container where international shipping service
+ options are being specified, and vice versa, and the shipping speed/level of service of the provided shipping
+ service options should match the shipping speed/level of service options that are defined in the shipping rate
+ tables.
For example, if the corresponding shipping rate table defines costs for one-day shipping
+ services, there should be at least one one-day shipping service option specified under the
+ shippingServices array.
This field is returned if set.
+ shipping_discount_profile_id (Union[Unset, str]): This field is the unique identifier of a seller's domestic or
+ international shipping discount profile. If a buyer satisfies the requirements of the discount rule, this buyer
+ will receive a shipping discount for the order.
The seller can create and manage shipping discount
+ profiles using (Get/Set) ShippingDiscountProfiles calls in the Trading API or through the
+ Shipping Preferences in My eBay.
+ shipping_promotion_offered (Union[Unset, bool]): This boolean indicates whether or not the seller has set up a
+ promotional shipping discount that will be available to buyers who satisfy the requirements of the shipping
+ discount rule.
The seller can create and manage shipping promotional discounts using (Get/Set)
+ ShippingDiscountProfiles calls in the Trading API or through the Shipping Preferences in
+ My eBay.
+ shipping_services (Union[Unset, list['ShippingService']]): This array consists of the domestic or international
+ shipping services options that are defined for the policy. The shipping service options defined under this array
+ should match what is set in the corresponding shippingOptions.optionType field (which controls whether
+ domestic or international shipping service options are being defined). If a shipping rate table is being used,
+ the specified shipping service options should also match the shipping rate table settings (domestic or
+ international, shipping speed/level of service, etc.)
Sellers can specify up to four domestic shipping
+ services and up to five international shipping service options by using separate shippingService
+ containers for each. If the seller is using the Global Shipping Program as an international option, only a total
+ of four international shipping service options (including GSP) can be offered.
See How to set up shipping carrier and shipping service values.
To use the eBay standard
+ envelope service (eSE), see Using eBay standard envelope (eSE) service.
This array is conditionally
+ required if the seller is offering one or more domestic and/or international shipping service options.
+ """
+
+ cost_type: Union[Unset, str] = UNSET
+ insurance_fee: Union[Unset, 'Amount'] = UNSET
+ insurance_offered: Union[Unset, bool] = UNSET
+ option_type: Union[Unset, str] = UNSET
+ package_handling_cost: Union[Unset, 'Amount'] = UNSET
+ rate_table_id: Union[Unset, str] = UNSET
+ shipping_discount_profile_id: Union[Unset, str] = UNSET
+ shipping_promotion_offered: Union[Unset, bool] = UNSET
+ shipping_services: Union[Unset, list['ShippingService']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.amount import Amount
+ from ..models.shipping_service import ShippingService
+ cost_type = self.cost_type
+
+ insurance_fee: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.insurance_fee, Unset):
+ insurance_fee = self.insurance_fee.to_dict()
+
+ insurance_offered = self.insurance_offered
+
+ option_type = self.option_type
+
+ package_handling_cost: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.package_handling_cost, Unset):
+ package_handling_cost = self.package_handling_cost.to_dict()
+
+ rate_table_id = self.rate_table_id
+
+ shipping_discount_profile_id = self.shipping_discount_profile_id
+
+ shipping_promotion_offered = self.shipping_promotion_offered
+
+ shipping_services: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.shipping_services, Unset):
+ shipping_services = []
+ for shipping_services_item_data in self.shipping_services:
+ shipping_services_item = shipping_services_item_data.to_dict()
+ shipping_services.append(shipping_services_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if cost_type is not UNSET:
+ field_dict["costType"] = cost_type
+ if insurance_fee is not UNSET:
+ field_dict["insuranceFee"] = insurance_fee
+ if insurance_offered is not UNSET:
+ field_dict["insuranceOffered"] = insurance_offered
+ if option_type is not UNSET:
+ field_dict["optionType"] = option_type
+ if package_handling_cost is not UNSET:
+ field_dict["packageHandlingCost"] = package_handling_cost
+ if rate_table_id is not UNSET:
+ field_dict["rateTableId"] = rate_table_id
+ if shipping_discount_profile_id is not UNSET:
+ field_dict["shippingDiscountProfileId"] = shipping_discount_profile_id
+ if shipping_promotion_offered is not UNSET:
+ field_dict["shippingPromotionOffered"] = shipping_promotion_offered
+ if shipping_services is not UNSET:
+ field_dict["shippingServices"] = shipping_services
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.amount import Amount
+ from ..models.shipping_service import ShippingService
+ d = dict(src_dict)
+ cost_type = d.pop("costType", UNSET)
+
+ _insurance_fee = d.pop("insuranceFee", UNSET)
+ insurance_fee: Union[Unset, Amount]
+ if isinstance(_insurance_fee, Unset):
+ insurance_fee = UNSET
+ else:
+ insurance_fee = Amount.from_dict(_insurance_fee)
+
+
+
+
+ insurance_offered = d.pop("insuranceOffered", UNSET)
+
+ option_type = d.pop("optionType", UNSET)
+
+ _package_handling_cost = d.pop("packageHandlingCost", UNSET)
+ package_handling_cost: Union[Unset, Amount]
+ if isinstance(_package_handling_cost, Unset):
+ package_handling_cost = UNSET
+ else:
+ package_handling_cost = Amount.from_dict(_package_handling_cost)
+
+
+
+
+ rate_table_id = d.pop("rateTableId", UNSET)
+
+ shipping_discount_profile_id = d.pop("shippingDiscountProfileId", UNSET)
+
+ shipping_promotion_offered = d.pop("shippingPromotionOffered", UNSET)
+
+ shipping_services = []
+ _shipping_services = d.pop("shippingServices", UNSET)
+ for shipping_services_item_data in (_shipping_services or []):
+ shipping_services_item = ShippingService.from_dict(shipping_services_item_data)
+
+
+
+ shipping_services.append(shipping_services_item)
+
+
+ shipping_option = cls(
+ cost_type=cost_type,
+ insurance_fee=insurance_fee,
+ insurance_offered=insurance_offered,
+ option_type=option_type,
+ package_handling_cost=package_handling_cost,
+ rate_table_id=rate_table_id,
+ shipping_discount_profile_id=shipping_discount_profile_id,
+ shipping_promotion_offered=shipping_promotion_offered,
+ shipping_services=shipping_services,
+ )
+
+
+ shipping_option.additional_properties = d
+ return shipping_option
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/account/models/shipping_service.py b/ebay_client/generated/account/models/shipping_service.py
new file mode 100644
index 0000000..e6d0a44
--- /dev/null
+++ b/ebay_client/generated/account/models/shipping_service.py
@@ -0,0 +1,254 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.amount import Amount
+ from ..models.region_set import RegionSet
+
+
+
+
+
+T = TypeVar("T", bound="ShippingService")
+
+
+
+@_attrs_define
+class ShippingService:
+ """ This type is used by the shippingServices array, an array that provides details about every domestic and
+ international shipping service option that is defined for the policy.
+
+ Attributes:
+ additional_shipping_cost (Union[Unset, Amount]): A complex type that describes the value of a monetary amount as
+ represented by a global currency. When passing in an amount in a request payload, both currency and
+ value fields are required, and both fields are also always returned for an amount in a response field.
+ buyer_responsible_for_pickup (Union[Unset, bool]): This field should be included and set to true
+ for a motor vehicle listing if it will be the buyer's responsibility to pick up the purchased motor vehicle
+ after full payment is made.
This field is only applicable to motor vehicle listings. In the majority of
+ motor vehicle listings, the seller does make the buyer responsible for pickup or shipment of the vehicle.
+
This field is returned if set.
Default: false
+ buyer_responsible_for_shipping (Union[Unset, bool]): This field should be included and set to true
+ for a motor vehicle listing if it will be the buyer's responsibility to arrange for shipment of a motor vehicle.
+
This field is only applicable to motor vehicle listings. In the majority of motor vehicle listings, the
+ seller does make the buyer responsible for pickup or shipment of the vehicle.
This field is returned if
+ set.
Default: false
+ free_shipping (Union[Unset, bool]): This field is included and set to true if the seller offers a
+ free domestic shipping option to the buyer.
This field can only be included and set to true
+ for the first domestic shipping service option specified in the shippingServices array (it is ignored if
+ set for subsequent shipping services or for any international shipping service option).
The first
+ specified shipping service option has a sortOrder value of 1 or if the sortOrderId
+ field is not used, it is the shipping service option that's specified first in the shippingServices
+ array.
This container is returned if set.
+ shipping_carrier_code (Union[Unset, str]): This field sets/indicates the shipping carrier, such as
+ USPS, FedEx, or UPS. Although this field uses the string type, the
+ seller must pass in a pre-defined enumeration value here.
For a full list of shipping carrier enum
+ values for a specified eBay marketplace, the GeteBayDetails call of the Trading API
+ can be used, and the DetailName field's value should be set to ShippingCarrierDetails. The
+ enum values for each shipping carriers can be found in each ShippingCarrierDetails.ShippingCarrier field
+ in the response payload.
This field is actually optional, as the shipping carrier is also tied into the
+ shippingServiceCode enum value, and that field is required for every specified shipping service
+ option.
This field is returned if set.
+ shipping_cost (Union[Unset, Amount]): A complex type that describes the value of a monetary amount as
+ represented by a global currency. When passing in an amount in a request payload, both currency and
+ value fields are required, and both fields are also always returned for an amount in a response field.
+ shipping_service_code (Union[Unset, str]): This field sets/indicates the domestic or international shipping
+ service option, such as USPSPriority, FedEx2Day, or UPS3rdDay. Although
+ this field uses the string type, the seller must pass in a pre-defined enumeration value here.
+
For a full list of shipping service option enum values for a specified eBay marketplace, the GeteBayDetails call of the Trading API
+ can be used, and the DetailName field's value should be set to ShippingServiceDetails.
+
The enum values for each shipping service option can be found in each
+ ShippingServiceDetails.ShippingService field in the response payload. The seller must make sure that the
+ shipping service option is still valid, which is indicated by a true value in the corresponding
+ ValidForSellingFlow boolean field. International shipping service options are typically returned at the
+ top of the response payload, and are indicated by an InternationalService boolean field that reads
+ true.
The InternationalService boolean field is not returned at all for domestic
+ shipping service options.
This field is required for every specified shipping service option.
+ ship_to_locations (Union[Unset, RegionSet]): This type consists of the regionIncluded and
+ regionExcluded arrays, which indicate the areas to where the seller does and doesn't ship.
+ sort_order (Union[Unset, int]): The integer value set in this field controls the order of the corresponding
+ domestic or international shipping service option in the View Item and Checkout pages.
If the
+ sortOrder field is not supplied, the order of domestic and international shipping service options is
+ determined by the order in which they are listed in the API call.
Min: 1. Max: 4 (for
+ domestic shipping service) or 5 (for international shipping service).
+ surcharge (Union[Unset, Amount]): A complex type that describes the value of a monetary amount as represented by
+ a global currency. When passing in an amount in a request payload, both currency and value fields
+ are required, and both fields are also always returned for an amount in a response field.
+ """
+
+ additional_shipping_cost: Union[Unset, 'Amount'] = UNSET
+ buyer_responsible_for_pickup: Union[Unset, bool] = UNSET
+ buyer_responsible_for_shipping: Union[Unset, bool] = UNSET
+ free_shipping: Union[Unset, bool] = UNSET
+ shipping_carrier_code: Union[Unset, str] = UNSET
+ shipping_cost: Union[Unset, 'Amount'] = UNSET
+ shipping_service_code: Union[Unset, str] = UNSET
+ ship_to_locations: Union[Unset, 'RegionSet'] = UNSET
+ sort_order: Union[Unset, int] = UNSET
+ surcharge: Union[Unset, 'Amount'] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.amount import Amount
+ from ..models.region_set import RegionSet
+ additional_shipping_cost: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.additional_shipping_cost, Unset):
+ additional_shipping_cost = self.additional_shipping_cost.to_dict()
+
+ buyer_responsible_for_pickup = self.buyer_responsible_for_pickup
+
+ buyer_responsible_for_shipping = self.buyer_responsible_for_shipping
+
+ free_shipping = self.free_shipping
+
+ shipping_carrier_code = self.shipping_carrier_code
+
+ shipping_cost: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.shipping_cost, Unset):
+ shipping_cost = self.shipping_cost.to_dict()
+
+ shipping_service_code = self.shipping_service_code
+
+ ship_to_locations: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.ship_to_locations, Unset):
+ ship_to_locations = self.ship_to_locations.to_dict()
+
+ sort_order = self.sort_order
+
+ surcharge: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.surcharge, Unset):
+ surcharge = self.surcharge.to_dict()
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if additional_shipping_cost is not UNSET:
+ field_dict["additionalShippingCost"] = additional_shipping_cost
+ if buyer_responsible_for_pickup is not UNSET:
+ field_dict["buyerResponsibleForPickup"] = buyer_responsible_for_pickup
+ if buyer_responsible_for_shipping is not UNSET:
+ field_dict["buyerResponsibleForShipping"] = buyer_responsible_for_shipping
+ if free_shipping is not UNSET:
+ field_dict["freeShipping"] = free_shipping
+ if shipping_carrier_code is not UNSET:
+ field_dict["shippingCarrierCode"] = shipping_carrier_code
+ if shipping_cost is not UNSET:
+ field_dict["shippingCost"] = shipping_cost
+ if shipping_service_code is not UNSET:
+ field_dict["shippingServiceCode"] = shipping_service_code
+ if ship_to_locations is not UNSET:
+ field_dict["shipToLocations"] = ship_to_locations
+ if sort_order is not UNSET:
+ field_dict["sortOrder"] = sort_order
+ if surcharge is not UNSET:
+ field_dict["surcharge"] = surcharge
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.amount import Amount
+ from ..models.region_set import RegionSet
+ d = dict(src_dict)
+ _additional_shipping_cost = d.pop("additionalShippingCost", UNSET)
+ additional_shipping_cost: Union[Unset, Amount]
+ if isinstance(_additional_shipping_cost, Unset):
+ additional_shipping_cost = UNSET
+ else:
+ additional_shipping_cost = Amount.from_dict(_additional_shipping_cost)
+
+
+
+
+ buyer_responsible_for_pickup = d.pop("buyerResponsibleForPickup", UNSET)
+
+ buyer_responsible_for_shipping = d.pop("buyerResponsibleForShipping", UNSET)
+
+ free_shipping = d.pop("freeShipping", UNSET)
+
+ shipping_carrier_code = d.pop("shippingCarrierCode", UNSET)
+
+ _shipping_cost = d.pop("shippingCost", UNSET)
+ shipping_cost: Union[Unset, Amount]
+ if isinstance(_shipping_cost, Unset):
+ shipping_cost = UNSET
+ else:
+ shipping_cost = Amount.from_dict(_shipping_cost)
+
+
+
+
+ shipping_service_code = d.pop("shippingServiceCode", UNSET)
+
+ _ship_to_locations = d.pop("shipToLocations", UNSET)
+ ship_to_locations: Union[Unset, RegionSet]
+ if isinstance(_ship_to_locations, Unset):
+ ship_to_locations = UNSET
+ else:
+ ship_to_locations = RegionSet.from_dict(_ship_to_locations)
+
+
+
+
+ sort_order = d.pop("sortOrder", UNSET)
+
+ _surcharge = d.pop("surcharge", UNSET)
+ surcharge: Union[Unset, Amount]
+ if isinstance(_surcharge, Unset):
+ surcharge = UNSET
+ else:
+ surcharge = Amount.from_dict(_surcharge)
+
+
+
+
+ shipping_service = cls(
+ additional_shipping_cost=additional_shipping_cost,
+ buyer_responsible_for_pickup=buyer_responsible_for_pickup,
+ buyer_responsible_for_shipping=buyer_responsible_for_shipping,
+ free_shipping=free_shipping,
+ shipping_carrier_code=shipping_carrier_code,
+ shipping_cost=shipping_cost,
+ shipping_service_code=shipping_service_code,
+ ship_to_locations=ship_to_locations,
+ sort_order=sort_order,
+ surcharge=surcharge,
+ )
+
+
+ shipping_service.additional_properties = d
+ return shipping_service
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/account/models/subscription.py b/ebay_client/generated/account/models/subscription.py
new file mode 100644
index 0000000..987746d
--- /dev/null
+++ b/ebay_client/generated/account/models/subscription.py
@@ -0,0 +1,139 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.time_duration import TimeDuration
+
+
+
+
+
+T = TypeVar("T", bound="Subscription")
+
+
+
+@_attrs_define
+class Subscription:
+ """ This type is used by the getSubscription response container, which defines the subscription types
+ and levels for the seller account.
+
+ Attributes:
+ marketplace_id (Union[Unset, str]): The marketplace with which the subscription is associated. For
+ implementation help, refer to eBay API documentation
+ subscription_id (Union[Unset, str]): The subscription ID.
+ subscription_level (Union[Unset, str]): The subscription level. For example, subscription levels for an eBay
+ store include Starter, Basic, Featured, Anchor, and Enterprise levels.
+ subscription_type (Union[Unset, str]): The kind of entity with which the subscription is associated, such as an
+ eBay store. For implementation help, refer to eBay API documentation
+ term (Union[Unset, TimeDuration]): A type used to specify a period of time using a specified time-measurement
+ unit. Payment, return, and fulfillment business policies all use this type to specify time
+ windows.
Whenever a container that uses this type is used in a request, both of these fields are
+ required. Similarly, whenever a container that uses this type is returned in a response, both of these fields
+ are always returned.
+ """
+
+ marketplace_id: Union[Unset, str] = UNSET
+ subscription_id: Union[Unset, str] = UNSET
+ subscription_level: Union[Unset, str] = UNSET
+ subscription_type: Union[Unset, str] = UNSET
+ term: Union[Unset, 'TimeDuration'] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.time_duration import TimeDuration
+ marketplace_id = self.marketplace_id
+
+ subscription_id = self.subscription_id
+
+ subscription_level = self.subscription_level
+
+ subscription_type = self.subscription_type
+
+ term: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.term, Unset):
+ term = self.term.to_dict()
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if marketplace_id is not UNSET:
+ field_dict["marketplaceId"] = marketplace_id
+ if subscription_id is not UNSET:
+ field_dict["subscriptionId"] = subscription_id
+ if subscription_level is not UNSET:
+ field_dict["subscriptionLevel"] = subscription_level
+ if subscription_type is not UNSET:
+ field_dict["subscriptionType"] = subscription_type
+ if term is not UNSET:
+ field_dict["term"] = term
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.time_duration import TimeDuration
+ d = dict(src_dict)
+ marketplace_id = d.pop("marketplaceId", UNSET)
+
+ subscription_id = d.pop("subscriptionId", UNSET)
+
+ subscription_level = d.pop("subscriptionLevel", UNSET)
+
+ subscription_type = d.pop("subscriptionType", UNSET)
+
+ _term = d.pop("term", UNSET)
+ term: Union[Unset, TimeDuration]
+ if isinstance(_term, Unset):
+ term = UNSET
+ else:
+ term = TimeDuration.from_dict(_term)
+
+
+
+
+ subscription = cls(
+ marketplace_id=marketplace_id,
+ subscription_id=subscription_id,
+ subscription_level=subscription_level,
+ subscription_type=subscription_type,
+ term=term,
+ )
+
+
+ subscription.additional_properties = d
+ return subscription
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/account/models/subscription_response.py b/ebay_client/generated/account/models/subscription_response.py
new file mode 100644
index 0000000..e06af9f
--- /dev/null
+++ b/ebay_client/generated/account/models/subscription_response.py
@@ -0,0 +1,137 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.subscription import Subscription
+
+
+
+
+
+T = TypeVar("T", bound="SubscriptionResponse")
+
+
+
+@_attrs_define
+class SubscriptionResponse:
+ """ This type is used by the response payload for the getSubscription method.
Note: Pagination has not yet been enabled for getSubscription, so all of the
+ pagination-related fields are for future use.
+
+ Attributes:
+ href (Union[Unset, str]): This field is for future use.
+ limit (Union[Unset, int]): This field is for future use.
+ next_ (Union[Unset, str]): This field is for future use.
+ subscriptions (Union[Unset, list['Subscription']]): An array of subscriptions associated with the seller
+ account.
+ total (Union[Unset, int]): The total number of subscriptions displayed on the current page of results.
+ """
+
+ href: Union[Unset, str] = UNSET
+ limit: Union[Unset, int] = UNSET
+ next_: Union[Unset, str] = UNSET
+ subscriptions: Union[Unset, list['Subscription']] = UNSET
+ total: Union[Unset, int] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.subscription import Subscription
+ href = self.href
+
+ limit = self.limit
+
+ next_ = self.next_
+
+ subscriptions: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.subscriptions, Unset):
+ subscriptions = []
+ for subscriptions_item_data in self.subscriptions:
+ subscriptions_item = subscriptions_item_data.to_dict()
+ subscriptions.append(subscriptions_item)
+
+
+
+ total = self.total
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if href is not UNSET:
+ field_dict["href"] = href
+ if limit is not UNSET:
+ field_dict["limit"] = limit
+ if next_ is not UNSET:
+ field_dict["next"] = next_
+ if subscriptions is not UNSET:
+ field_dict["subscriptions"] = subscriptions
+ if total is not UNSET:
+ field_dict["total"] = total
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.subscription import Subscription
+ d = dict(src_dict)
+ href = d.pop("href", UNSET)
+
+ limit = d.pop("limit", UNSET)
+
+ next_ = d.pop("next", UNSET)
+
+ subscriptions = []
+ _subscriptions = d.pop("subscriptions", UNSET)
+ for subscriptions_item_data in (_subscriptions or []):
+ subscriptions_item = Subscription.from_dict(subscriptions_item_data)
+
+
+
+ subscriptions.append(subscriptions_item)
+
+
+ total = d.pop("total", UNSET)
+
+ subscription_response = cls(
+ href=href,
+ limit=limit,
+ next_=next_,
+ subscriptions=subscriptions,
+ total=total,
+ )
+
+
+ subscription_response.additional_properties = d
+ return subscription_response
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/account/models/time_duration.py b/ebay_client/generated/account/models/time_duration.py
new file mode 100644
index 0000000..d2eccde
--- /dev/null
+++ b/ebay_client/generated/account/models/time_duration.py
@@ -0,0 +1,95 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="TimeDuration")
+
+
+
+@_attrs_define
+class TimeDuration:
+ """ A type used to specify a period of time using a specified time-measurement unit. Payment, return, and fulfillment
+ business policies all use this type to specify time windows.
Whenever a container that uses this type is used
+ in a request, both of these fields are required. Similarly, whenever a container that uses this type is returned in
+ a response, both of these fields are always returned.
+
+ Attributes:
+ unit (Union[Unset, str]): These enum values represent the time measurement unit, such as DAY. A
+ span of time is defined when you apply the value specified in the value field to the value specified for
+ unit.
See TimeDurationUnitEnum for a complete list of possible time-measurement units. For
+ implementation help, refer to eBay API documentation
+ value (Union[Unset, int]): An integer that represents an amount of time, as measured by the time-measurement
+ unit specified in the unit field.
+ """
+
+ unit: Union[Unset, str] = UNSET
+ value: Union[Unset, int] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ unit = self.unit
+
+ value = self.value
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if unit is not UNSET:
+ field_dict["unit"] = unit
+ if value is not UNSET:
+ field_dict["value"] = value
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ unit = d.pop("unit", UNSET)
+
+ value = d.pop("value", UNSET)
+
+ time_duration = cls(
+ unit=unit,
+ value=value,
+ )
+
+
+ time_duration.additional_properties = d
+ return time_duration
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/account/models/updated_sales_tax_entry.py b/ebay_client/generated/account/models/updated_sales_tax_entry.py
new file mode 100644
index 0000000..eacf203
--- /dev/null
+++ b/ebay_client/generated/account/models/updated_sales_tax_entry.py
@@ -0,0 +1,101 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="UpdatedSalesTaxEntry")
+
+
+
+@_attrs_define
+class UpdatedSalesTaxEntry:
+ """ This container stores the array of sales-tax table entries that have been created or updated.
+
+ Attributes:
+ country_code (Union[Unset, str]): The two-letter ISO 3166 code of the country associated with the sales-tax
+ table entry.
+ jurisdiction_id (Union[Unset, str]): The ID of the tax jurisdiction associated with the sales-tax table entry.
+ status_code (Union[Unset, int]): The HTTP status code for the call.
Note:
+ The system returns one HTTP status code regardless of the number of sales-tax table entries provided. Therefore,
+ the same HTTP statusCode will be listed for all sales-tax table entries returned in the
+ payload.
+ """
+
+ country_code: Union[Unset, str] = UNSET
+ jurisdiction_id: Union[Unset, str] = UNSET
+ status_code: Union[Unset, int] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ country_code = self.country_code
+
+ jurisdiction_id = self.jurisdiction_id
+
+ status_code = self.status_code
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if country_code is not UNSET:
+ field_dict["countryCode"] = country_code
+ if jurisdiction_id is not UNSET:
+ field_dict["jurisdictionId"] = jurisdiction_id
+ if status_code is not UNSET:
+ field_dict["statusCode"] = status_code
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ country_code = d.pop("countryCode", UNSET)
+
+ jurisdiction_id = d.pop("jurisdictionId", UNSET)
+
+ status_code = d.pop("statusCode", UNSET)
+
+ updated_sales_tax_entry = cls(
+ country_code=country_code,
+ jurisdiction_id=jurisdiction_id,
+ status_code=status_code,
+ )
+
+
+ updated_sales_tax_entry.additional_properties = d
+ return updated_sales_tax_entry
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/account/models/updated_sales_tax_response.py b/ebay_client/generated/account/models/updated_sales_tax_response.py
new file mode 100644
index 0000000..cd117e4
--- /dev/null
+++ b/ebay_client/generated/account/models/updated_sales_tax_response.py
@@ -0,0 +1,99 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.updated_sales_tax_entry import UpdatedSalesTaxEntry
+
+
+
+
+
+T = TypeVar("T", bound="UpdatedSalesTaxResponse")
+
+
+
+@_attrs_define
+class UpdatedSalesTaxResponse:
+ """ This type is used to return the list of new and updated sales-tax table entries.
+
+ Attributes:
+ updated_sales_tax_entries (Union[Unset, list['UpdatedSalesTaxEntry']]): The array of new and updated sales-tax
+ table entries.
+ """
+
+ updated_sales_tax_entries: Union[Unset, list['UpdatedSalesTaxEntry']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.updated_sales_tax_entry import UpdatedSalesTaxEntry
+ updated_sales_tax_entries: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.updated_sales_tax_entries, Unset):
+ updated_sales_tax_entries = []
+ for updated_sales_tax_entries_item_data in self.updated_sales_tax_entries:
+ updated_sales_tax_entries_item = updated_sales_tax_entries_item_data.to_dict()
+ updated_sales_tax_entries.append(updated_sales_tax_entries_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if updated_sales_tax_entries is not UNSET:
+ field_dict["updatedSalesTaxEntries"] = updated_sales_tax_entries
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.updated_sales_tax_entry import UpdatedSalesTaxEntry
+ d = dict(src_dict)
+ updated_sales_tax_entries = []
+ _updated_sales_tax_entries = d.pop("updatedSalesTaxEntries", UNSET)
+ for updated_sales_tax_entries_item_data in (_updated_sales_tax_entries or []):
+ updated_sales_tax_entries_item = UpdatedSalesTaxEntry.from_dict(updated_sales_tax_entries_item_data)
+
+
+
+ updated_sales_tax_entries.append(updated_sales_tax_entries_item)
+
+
+ updated_sales_tax_response = cls(
+ updated_sales_tax_entries=updated_sales_tax_entries,
+ )
+
+
+ updated_sales_tax_response.additional_properties = d
+ return updated_sales_tax_response
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/account/types.py b/ebay_client/generated/account/types.py
new file mode 100644
index 0000000..2330892
--- /dev/null
+++ b/ebay_client/generated/account/types.py
@@ -0,0 +1,53 @@
+""" Contains some shared types for properties """
+
+from collections.abc import Mapping, MutableMapping
+from http import HTTPStatus
+from typing import BinaryIO, Generic, Optional, TypeVar, Literal, Union, IO
+
+from attrs import define
+
+
+class Unset:
+ def __bool__(self) -> Literal[False]:
+ return False
+
+
+UNSET: Unset = Unset()
+
+# The types that `httpx.Client(files=)` can accept, copied from that library.
+FileContent = Union[IO[bytes], bytes, str]
+FileTypes = Union[
+ # (filename, file (or bytes), content_type)
+ tuple[Optional[str], FileContent, Optional[str]],
+ # (filename, file (or bytes), content_type, headers)
+ tuple[Optional[str], FileContent, Optional[str], Mapping[str, str]],
+]
+RequestFiles = list[tuple[str, FileTypes]]
+
+@define
+class File:
+ """ Contains information for file uploads """
+
+ payload: BinaryIO
+ file_name: Optional[str] = None
+ mime_type: Optional[str] = None
+
+ def to_tuple(self) -> FileTypes:
+ """ Return a tuple representation that httpx will accept for multipart/form-data """
+ return self.file_name, self.payload, self.mime_type
+
+
+T = TypeVar("T")
+
+
+@define
+class Response(Generic[T]):
+ """ A response from an endpoint """
+
+ status_code: HTTPStatus
+ content: bytes
+ headers: MutableMapping[str, str]
+ parsed: Optional[T]
+
+
+__all__ = ["UNSET", "File", "FileTypes", "RequestFiles", "Response", "Unset"]
diff --git a/ebay_client/generated/feed/__init__.py b/ebay_client/generated/feed/__init__.py
new file mode 100644
index 0000000..c907a06
--- /dev/null
+++ b/ebay_client/generated/feed/__init__.py
@@ -0,0 +1,8 @@
+
+""" A client library for accessing Feed API """
+from .client import AuthenticatedClient, Client
+
+__all__ = (
+ "AuthenticatedClient",
+ "Client",
+)
diff --git a/ebay_client/generated/feed/api/__init__.py b/ebay_client/generated/feed/api/__init__.py
new file mode 100644
index 0000000..dc035f4
--- /dev/null
+++ b/ebay_client/generated/feed/api/__init__.py
@@ -0,0 +1 @@
+""" Contains methods for accessing the API """
diff --git a/ebay_client/generated/feed/api/customer_service_metric_task/__init__.py b/ebay_client/generated/feed/api/customer_service_metric_task/__init__.py
new file mode 100644
index 0000000..c9921b5
--- /dev/null
+++ b/ebay_client/generated/feed/api/customer_service_metric_task/__init__.py
@@ -0,0 +1 @@
+""" Contains endpoint functions for accessing the API """
diff --git a/ebay_client/generated/feed/api/customer_service_metric_task/create_customer_service_metric_task.py b/ebay_client/generated/feed/api/customer_service_metric_task/create_customer_service_metric_task.py
new file mode 100644
index 0000000..34f9451
--- /dev/null
+++ b/ebay_client/generated/feed/api/customer_service_metric_task/create_customer_service_metric_task.py
@@ -0,0 +1,177 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.create_service_metrics_task_request import CreateServiceMetricsTaskRequest
+from typing import cast
+
+
+
+def _get_kwargs(
+ *,
+ body: CreateServiceMetricsTaskRequest,
+ accept_language: str,
+ content_type: str,
+
+) -> dict[str, Any]:
+ headers: dict[str, Any] = {}
+ headers["Accept-Language"] = accept_language
+
+ headers["Content-Type"] = content_type
+
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "post",
+ "url": "/customer_service_metric_task",
+ }
+
+ _kwargs["json"] = body.to_dict()
+
+
+ headers["Content-Type"] = "application/json"
+
+ _kwargs["headers"] = headers
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Any]:
+ if response.status_code == 202:
+ return None
+ if response.status_code == 400:
+ return None
+ if response.status_code == 500:
+ return None
+ if response.status_code == 403:
+ return None
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Any]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ *,
+ client: AuthenticatedClient,
+ body: CreateServiceMetricsTaskRequest,
+ accept_language: str,
+ content_type: str,
+
+) -> Response[Any]:
+ r""" Use this method to create a customer service metrics download task with filter criteria for the
+ customer service metrics report. When using this method, specify the feedType and
+ filterCriteria including both evaluationMarketplaceId and
+ customerServiceMetricType for the report. The method returns the location response
+ header containing the call URI to use with getCustomerServiceMetricTask to retrieve
+ status and details on the task.
Only CURRENT Customer Service Metrics reports can be generated
+ with the Sell Feed API. PROJECTED reports are not supported at this time. See the getCustomerSer
+ viceMetric method document in the Analytics API for more information about these two types of
+ reports.
Note: Before calling this API, retrieve
+ the summary of the seller's performance and rating for the customer service metric by calling
+ getCustomerServiceMetric (part of the Analytics API). You can then populate the create task
+ request fields with the values from the response. This technique eliminates failed tasks that
+ request a report for a customerServiceMetricType and
+ evaluationMarketplaceId that are without evaluation.
+
+ Args:
+ accept_language (str):
+ content_type (str):
+ body (CreateServiceMetricsTaskRequest): The type that defines the fields for the Customer
+ Service Metric reports generated with the Feed API.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ body=body,
+accept_language=accept_language,
+content_type=content_type,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+
+async def asyncio_detailed(
+ *,
+ client: AuthenticatedClient,
+ body: CreateServiceMetricsTaskRequest,
+ accept_language: str,
+ content_type: str,
+
+) -> Response[Any]:
+ r""" Use this method to create a customer service metrics download task with filter criteria for the
+ customer service metrics report. When using this method, specify the feedType and
+ filterCriteria including both evaluationMarketplaceId and
+ customerServiceMetricType for the report. The method returns the location response
+ header containing the call URI to use with getCustomerServiceMetricTask to retrieve
+ status and details on the task.
Only CURRENT Customer Service Metrics reports can be generated
+ with the Sell Feed API. PROJECTED reports are not supported at this time. See the getCustomerSer
+ viceMetric method document in the Analytics API for more information about these two types of
+ reports.
Note: Before calling this API, retrieve
+ the summary of the seller's performance and rating for the customer service metric by calling
+ getCustomerServiceMetric (part of the Analytics API). You can then populate the create task
+ request fields with the values from the response. This technique eliminates failed tasks that
+ request a report for a customerServiceMetricType and
+ evaluationMarketplaceId that are without evaluation.
+
+ Args:
+ accept_language (str):
+ content_type (str):
+ body (CreateServiceMetricsTaskRequest): The type that defines the fields for the Customer
+ Service Metric reports generated with the Feed API.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ body=body,
+accept_language=accept_language,
+content_type=content_type,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
diff --git a/ebay_client/generated/feed/api/customer_service_metric_task/get_customer_service_metric_task.py b/ebay_client/generated/feed/api/customer_service_metric_task/get_customer_service_metric_task.py
new file mode 100644
index 0000000..a9bd188
--- /dev/null
+++ b/ebay_client/generated/feed/api/customer_service_metric_task/get_customer_service_metric_task.py
@@ -0,0 +1,184 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.service_metrics_task import ServiceMetricsTask
+from typing import cast
+
+
+
+def _get_kwargs(
+ task_id: str,
+
+) -> dict[str, Any]:
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/customer_service_metric_task/{task_id}".format(task_id=task_id,),
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, ServiceMetricsTask]]:
+ if response.status_code == 200:
+ response_200 = ServiceMetricsTask.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 403:
+ response_403 = cast(Any, None)
+ return response_403
+ if response.status_code == 404:
+ response_404 = cast(Any, None)
+ return response_404
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, ServiceMetricsTask]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ task_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, ServiceMetricsTask]]:
+ """ Use this method to retrieve customer service metric task details for the specified task. The
+ input is task_id.
+
+ Args:
+ task_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, ServiceMetricsTask]]
+ """
+
+
+ kwargs = _get_kwargs(
+ task_id=task_id,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ task_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, ServiceMetricsTask]]:
+ """ Use this method to retrieve customer service metric task details for the specified task. The
+ input is task_id.
+
+ Args:
+ task_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, ServiceMetricsTask]
+ """
+
+
+ return sync_detailed(
+ task_id=task_id,
+client=client,
+
+ ).parsed
+
+async def asyncio_detailed(
+ task_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, ServiceMetricsTask]]:
+ """ Use this method to retrieve customer service metric task details for the specified task. The
+ input is task_id.
+
+ Args:
+ task_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, ServiceMetricsTask]]
+ """
+
+
+ kwargs = _get_kwargs(
+ task_id=task_id,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ task_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, ServiceMetricsTask]]:
+ """ Use this method to retrieve customer service metric task details for the specified task. The
+ input is task_id.
+
+ Args:
+ task_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, ServiceMetricsTask]
+ """
+
+
+ return (await asyncio_detailed(
+ task_id=task_id,
+client=client,
+
+ )).parsed
diff --git a/ebay_client/generated/feed/api/customer_service_metric_task/get_customer_service_metric_tasks.py b/ebay_client/generated/feed/api/customer_service_metric_task/get_customer_service_metric_tasks.py
new file mode 100644
index 0000000..b1d731e
--- /dev/null
+++ b/ebay_client/generated/feed/api/customer_service_metric_task/get_customer_service_metric_tasks.py
@@ -0,0 +1,259 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.customer_service_metric_task_collection import CustomerServiceMetricTaskCollection
+from ...types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+
+
+def _get_kwargs(
+ *,
+ date_range: Union[Unset, str] = UNSET,
+ feed_type: Union[Unset, str] = UNSET,
+ limit: Union[Unset, str] = UNSET,
+ look_back_days: Union[Unset, str] = UNSET,
+ offset: Union[Unset, str] = UNSET,
+
+) -> dict[str, Any]:
+
+
+
+
+ params: dict[str, Any] = {}
+
+ params["date_range"] = date_range
+
+ params["feed_type"] = feed_type
+
+ params["limit"] = limit
+
+ params["look_back_days"] = look_back_days
+
+ params["offset"] = offset
+
+
+ params = {k: v for k, v in params.items() if v is not UNSET and v is not None}
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/customer_service_metric_task",
+ "params": params,
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, CustomerServiceMetricTaskCollection]]:
+ if response.status_code == 200:
+ response_200 = CustomerServiceMetricTaskCollection.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 403:
+ response_403 = cast(Any, None)
+ return response_403
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, CustomerServiceMetricTaskCollection]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ *,
+ client: AuthenticatedClient,
+ date_range: Union[Unset, str] = UNSET,
+ feed_type: Union[Unset, str] = UNSET,
+ limit: Union[Unset, str] = UNSET,
+ look_back_days: Union[Unset, str] = UNSET,
+ offset: Union[Unset, str] = UNSET,
+
+) -> Response[Union[Any, CustomerServiceMetricTaskCollection]]:
+ r""" Use this method to return an array of customer service metric tasks. You can limit the tasks
+ returned by specifying a date range. Note: You
+ can pass in either the look_back_days or date_range, but not
+ both.
+
+ Args:
+ date_range (Union[Unset, str]):
+ feed_type (Union[Unset, str]):
+ limit (Union[Unset, str]):
+ look_back_days (Union[Unset, str]):
+ offset (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, CustomerServiceMetricTaskCollection]]
+ """
+
+
+ kwargs = _get_kwargs(
+ date_range=date_range,
+feed_type=feed_type,
+limit=limit,
+look_back_days=look_back_days,
+offset=offset,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ *,
+ client: AuthenticatedClient,
+ date_range: Union[Unset, str] = UNSET,
+ feed_type: Union[Unset, str] = UNSET,
+ limit: Union[Unset, str] = UNSET,
+ look_back_days: Union[Unset, str] = UNSET,
+ offset: Union[Unset, str] = UNSET,
+
+) -> Optional[Union[Any, CustomerServiceMetricTaskCollection]]:
+ r""" Use this method to return an array of customer service metric tasks. You can limit the tasks
+ returned by specifying a date range. Note: You
+ can pass in either the look_back_days or date_range, but not
+ both.
+
+ Args:
+ date_range (Union[Unset, str]):
+ feed_type (Union[Unset, str]):
+ limit (Union[Unset, str]):
+ look_back_days (Union[Unset, str]):
+ offset (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, CustomerServiceMetricTaskCollection]
+ """
+
+
+ return sync_detailed(
+ client=client,
+date_range=date_range,
+feed_type=feed_type,
+limit=limit,
+look_back_days=look_back_days,
+offset=offset,
+
+ ).parsed
+
+async def asyncio_detailed(
+ *,
+ client: AuthenticatedClient,
+ date_range: Union[Unset, str] = UNSET,
+ feed_type: Union[Unset, str] = UNSET,
+ limit: Union[Unset, str] = UNSET,
+ look_back_days: Union[Unset, str] = UNSET,
+ offset: Union[Unset, str] = UNSET,
+
+) -> Response[Union[Any, CustomerServiceMetricTaskCollection]]:
+ r""" Use this method to return an array of customer service metric tasks. You can limit the tasks
+ returned by specifying a date range. Note: You
+ can pass in either the look_back_days or date_range, but not
+ both.
+
+ Args:
+ date_range (Union[Unset, str]):
+ feed_type (Union[Unset, str]):
+ limit (Union[Unset, str]):
+ look_back_days (Union[Unset, str]):
+ offset (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, CustomerServiceMetricTaskCollection]]
+ """
+
+
+ kwargs = _get_kwargs(
+ date_range=date_range,
+feed_type=feed_type,
+limit=limit,
+look_back_days=look_back_days,
+offset=offset,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ *,
+ client: AuthenticatedClient,
+ date_range: Union[Unset, str] = UNSET,
+ feed_type: Union[Unset, str] = UNSET,
+ limit: Union[Unset, str] = UNSET,
+ look_back_days: Union[Unset, str] = UNSET,
+ offset: Union[Unset, str] = UNSET,
+
+) -> Optional[Union[Any, CustomerServiceMetricTaskCollection]]:
+ r""" Use this method to return an array of customer service metric tasks. You can limit the tasks
+ returned by specifying a date range. Note: You
+ can pass in either the look_back_days or date_range, but not
+ both.
+
+ Args:
+ date_range (Union[Unset, str]):
+ feed_type (Union[Unset, str]):
+ limit (Union[Unset, str]):
+ look_back_days (Union[Unset, str]):
+ offset (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, CustomerServiceMetricTaskCollection]
+ """
+
+
+ return (await asyncio_detailed(
+ client=client,
+date_range=date_range,
+feed_type=feed_type,
+limit=limit,
+look_back_days=look_back_days,
+offset=offset,
+
+ )).parsed
diff --git a/ebay_client/generated/feed/api/inventory_task/__init__.py b/ebay_client/generated/feed/api/inventory_task/__init__.py
new file mode 100644
index 0000000..c9921b5
--- /dev/null
+++ b/ebay_client/generated/feed/api/inventory_task/__init__.py
@@ -0,0 +1 @@
+""" Contains endpoint functions for accessing the API """
diff --git a/ebay_client/generated/feed/api/inventory_task/create_inventory_task.py b/ebay_client/generated/feed/api/inventory_task/create_inventory_task.py
new file mode 100644
index 0000000..53e6309
--- /dev/null
+++ b/ebay_client/generated/feed/api/inventory_task/create_inventory_task.py
@@ -0,0 +1,162 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.create_inventory_task_request import CreateInventoryTaskRequest
+from typing import cast
+
+
+
+def _get_kwargs(
+ *,
+ body: CreateInventoryTaskRequest,
+ content_type: str,
+
+) -> dict[str, Any]:
+ headers: dict[str, Any] = {}
+ headers["Content-Type"] = content_type
+
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "post",
+ "url": "/inventory_task",
+ }
+
+ _kwargs["json"] = body.to_dict()
+
+
+ headers["Content-Type"] = "application/json"
+
+ _kwargs["headers"] = headers
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Any]:
+ if response.status_code == 400:
+ return None
+ if response.status_code == 202:
+ return None
+ if response.status_code == 500:
+ return None
+ if response.status_code == 403:
+ return None
+ if response.status_code == 409:
+ return None
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Any]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ *,
+ client: AuthenticatedClient,
+ body: CreateInventoryTaskRequest,
+ content_type: str,
+
+) -> Response[Any]:
+ r""" This method creates an inventory-related download task for a specified feed type with optional
+ filter criteria. When using this method, specify the feedType.
This
+ method returns the location response header containing the getInventoryTask call
+ URI to retrieve the inventory task you just created. The URL includes the eBay-assigned task ID,
+ which you can use to reference the inventory task.
To retrieve the status of the task, use
+ the getInventoryTask method to retrieve a single task ID or the
+ getInventoryTasks method to retrieve multiple task IDs. Note: The scope depends on the feed type. An error message
+ results when an unsupported scope or feed type is specified.
Presently, this method
+ supports Active Inventory Report. The ActiveInventoryReport returns a report that
+ contains price and quantity information for all of the active listings for a specific seller. A
+ seller can use this information to maintain their inventory on eBay.
+
+ Args:
+ content_type (str):
+ body (CreateInventoryTaskRequest): This type defines inventory-related download task
+ request fields.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ body=body,
+content_type=content_type,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+
+async def asyncio_detailed(
+ *,
+ client: AuthenticatedClient,
+ body: CreateInventoryTaskRequest,
+ content_type: str,
+
+) -> Response[Any]:
+ r""" This method creates an inventory-related download task for a specified feed type with optional
+ filter criteria. When using this method, specify the feedType.
This
+ method returns the location response header containing the getInventoryTask call
+ URI to retrieve the inventory task you just created. The URL includes the eBay-assigned task ID,
+ which you can use to reference the inventory task.
To retrieve the status of the task, use
+ the getInventoryTask method to retrieve a single task ID or the
+ getInventoryTasks method to retrieve multiple task IDs. Note: The scope depends on the feed type. An error message
+ results when an unsupported scope or feed type is specified.
Presently, this method
+ supports Active Inventory Report. The ActiveInventoryReport returns a report that
+ contains price and quantity information for all of the active listings for a specific seller. A
+ seller can use this information to maintain their inventory on eBay.
+
+ Args:
+ content_type (str):
+ body (CreateInventoryTaskRequest): This type defines inventory-related download task
+ request fields.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ body=body,
+content_type=content_type,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
diff --git a/ebay_client/generated/feed/api/inventory_task/get_inventory_task.py b/ebay_client/generated/feed/api/inventory_task/get_inventory_task.py
new file mode 100644
index 0000000..3bf7cc5
--- /dev/null
+++ b/ebay_client/generated/feed/api/inventory_task/get_inventory_task.py
@@ -0,0 +1,184 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.inventory_task import InventoryTask
+from typing import cast
+
+
+
+def _get_kwargs(
+ task_id: str,
+
+) -> dict[str, Any]:
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/inventory_task/{task_id}".format(task_id=task_id,),
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, InventoryTask]]:
+ if response.status_code == 200:
+ response_200 = InventoryTask.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 403:
+ response_403 = cast(Any, None)
+ return response_403
+ if response.status_code == 404:
+ response_404 = cast(Any, None)
+ return response_404
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, InventoryTask]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ task_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, InventoryTask]]:
+ """ This method retrieves the task details and status of the specified inventory-related task. The input
+ is task_id.
+
+ Args:
+ task_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, InventoryTask]]
+ """
+
+
+ kwargs = _get_kwargs(
+ task_id=task_id,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ task_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, InventoryTask]]:
+ """ This method retrieves the task details and status of the specified inventory-related task. The input
+ is task_id.
+
+ Args:
+ task_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, InventoryTask]
+ """
+
+
+ return sync_detailed(
+ task_id=task_id,
+client=client,
+
+ ).parsed
+
+async def asyncio_detailed(
+ task_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, InventoryTask]]:
+ """ This method retrieves the task details and status of the specified inventory-related task. The input
+ is task_id.
+
+ Args:
+ task_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, InventoryTask]]
+ """
+
+
+ kwargs = _get_kwargs(
+ task_id=task_id,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ task_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, InventoryTask]]:
+ """ This method retrieves the task details and status of the specified inventory-related task. The input
+ is task_id.
+
+ Args:
+ task_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, InventoryTask]
+ """
+
+
+ return (await asyncio_detailed(
+ task_id=task_id,
+client=client,
+
+ )).parsed
diff --git a/ebay_client/generated/feed/api/inventory_task/get_inventory_tasks.py b/ebay_client/generated/feed/api/inventory_task/get_inventory_tasks.py
new file mode 100644
index 0000000..80d04f4
--- /dev/null
+++ b/ebay_client/generated/feed/api/inventory_task/get_inventory_tasks.py
@@ -0,0 +1,266 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.inventory_task_collection import InventoryTaskCollection
+from ...types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+
+
+def _get_kwargs(
+ *,
+ feed_type: Union[Unset, str] = UNSET,
+ schedule_id: Union[Unset, str] = UNSET,
+ look_back_days: Union[Unset, str] = UNSET,
+ date_range: Union[Unset, str] = UNSET,
+ limit: Union[Unset, str] = UNSET,
+ offset: Union[Unset, str] = UNSET,
+
+) -> dict[str, Any]:
+
+
+
+
+ params: dict[str, Any] = {}
+
+ params["feed_type"] = feed_type
+
+ params["schedule_id"] = schedule_id
+
+ params["look_back_days"] = look_back_days
+
+ params["date_range"] = date_range
+
+ params["limit"] = limit
+
+ params["offset"] = offset
+
+
+ params = {k: v for k, v in params.items() if v is not UNSET and v is not None}
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/inventory_task",
+ "params": params,
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, InventoryTaskCollection]]:
+ if response.status_code == 200:
+ response_200 = InventoryTaskCollection.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 403:
+ response_403 = cast(Any, None)
+ return response_403
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, InventoryTaskCollection]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ *,
+ client: AuthenticatedClient,
+ feed_type: Union[Unset, str] = UNSET,
+ schedule_id: Union[Unset, str] = UNSET,
+ look_back_days: Union[Unset, str] = UNSET,
+ date_range: Union[Unset, str] = UNSET,
+ limit: Union[Unset, str] = UNSET,
+ offset: Union[Unset, str] = UNSET,
+
+) -> Response[Union[Any, InventoryTaskCollection]]:
+ """ This method searches for multiple tasks of a specific feed type, and includes date filters and
+ pagination.
+
+ Args:
+ feed_type (Union[Unset, str]):
+ schedule_id (Union[Unset, str]):
+ look_back_days (Union[Unset, str]):
+ date_range (Union[Unset, str]):
+ limit (Union[Unset, str]):
+ offset (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, InventoryTaskCollection]]
+ """
+
+
+ kwargs = _get_kwargs(
+ feed_type=feed_type,
+schedule_id=schedule_id,
+look_back_days=look_back_days,
+date_range=date_range,
+limit=limit,
+offset=offset,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ *,
+ client: AuthenticatedClient,
+ feed_type: Union[Unset, str] = UNSET,
+ schedule_id: Union[Unset, str] = UNSET,
+ look_back_days: Union[Unset, str] = UNSET,
+ date_range: Union[Unset, str] = UNSET,
+ limit: Union[Unset, str] = UNSET,
+ offset: Union[Unset, str] = UNSET,
+
+) -> Optional[Union[Any, InventoryTaskCollection]]:
+ """ This method searches for multiple tasks of a specific feed type, and includes date filters and
+ pagination.
+
+ Args:
+ feed_type (Union[Unset, str]):
+ schedule_id (Union[Unset, str]):
+ look_back_days (Union[Unset, str]):
+ date_range (Union[Unset, str]):
+ limit (Union[Unset, str]):
+ offset (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, InventoryTaskCollection]
+ """
+
+
+ return sync_detailed(
+ client=client,
+feed_type=feed_type,
+schedule_id=schedule_id,
+look_back_days=look_back_days,
+date_range=date_range,
+limit=limit,
+offset=offset,
+
+ ).parsed
+
+async def asyncio_detailed(
+ *,
+ client: AuthenticatedClient,
+ feed_type: Union[Unset, str] = UNSET,
+ schedule_id: Union[Unset, str] = UNSET,
+ look_back_days: Union[Unset, str] = UNSET,
+ date_range: Union[Unset, str] = UNSET,
+ limit: Union[Unset, str] = UNSET,
+ offset: Union[Unset, str] = UNSET,
+
+) -> Response[Union[Any, InventoryTaskCollection]]:
+ """ This method searches for multiple tasks of a specific feed type, and includes date filters and
+ pagination.
+
+ Args:
+ feed_type (Union[Unset, str]):
+ schedule_id (Union[Unset, str]):
+ look_back_days (Union[Unset, str]):
+ date_range (Union[Unset, str]):
+ limit (Union[Unset, str]):
+ offset (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, InventoryTaskCollection]]
+ """
+
+
+ kwargs = _get_kwargs(
+ feed_type=feed_type,
+schedule_id=schedule_id,
+look_back_days=look_back_days,
+date_range=date_range,
+limit=limit,
+offset=offset,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ *,
+ client: AuthenticatedClient,
+ feed_type: Union[Unset, str] = UNSET,
+ schedule_id: Union[Unset, str] = UNSET,
+ look_back_days: Union[Unset, str] = UNSET,
+ date_range: Union[Unset, str] = UNSET,
+ limit: Union[Unset, str] = UNSET,
+ offset: Union[Unset, str] = UNSET,
+
+) -> Optional[Union[Any, InventoryTaskCollection]]:
+ """ This method searches for multiple tasks of a specific feed type, and includes date filters and
+ pagination.
+
+ Args:
+ feed_type (Union[Unset, str]):
+ schedule_id (Union[Unset, str]):
+ look_back_days (Union[Unset, str]):
+ date_range (Union[Unset, str]):
+ limit (Union[Unset, str]):
+ offset (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, InventoryTaskCollection]
+ """
+
+
+ return (await asyncio_detailed(
+ client=client,
+feed_type=feed_type,
+schedule_id=schedule_id,
+look_back_days=look_back_days,
+date_range=date_range,
+limit=limit,
+offset=offset,
+
+ )).parsed
diff --git a/ebay_client/generated/feed/api/order_task/__init__.py b/ebay_client/generated/feed/api/order_task/__init__.py
new file mode 100644
index 0000000..c9921b5
--- /dev/null
+++ b/ebay_client/generated/feed/api/order_task/__init__.py
@@ -0,0 +1 @@
+""" Contains endpoint functions for accessing the API """
diff --git a/ebay_client/generated/feed/api/order_task/create_order_task.py b/ebay_client/generated/feed/api/order_task/create_order_task.py
new file mode 100644
index 0000000..14488a9
--- /dev/null
+++ b/ebay_client/generated/feed/api/order_task/create_order_task.py
@@ -0,0 +1,170 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.create_order_task_request import CreateOrderTaskRequest
+from typing import cast
+
+
+
+def _get_kwargs(
+ *,
+ body: CreateOrderTaskRequest,
+ content_type: str,
+
+) -> dict[str, Any]:
+ headers: dict[str, Any] = {}
+ headers["Content-Type"] = content_type
+
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "post",
+ "url": "/order_task",
+ }
+
+ _kwargs["json"] = body.to_dict()
+
+
+ headers["Content-Type"] = "application/json"
+
+ _kwargs["headers"] = headers
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Any]:
+ if response.status_code == 400:
+ return None
+ if response.status_code == 202:
+ return None
+ if response.status_code == 500:
+ return None
+ if response.status_code == 403:
+ return None
+ if response.status_code == 409:
+ return None
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Any]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ *,
+ client: AuthenticatedClient,
+ body: CreateOrderTaskRequest,
+ content_type: str,
+
+) -> Response[Any]:
+ r""" This method creates an order download task with filter criteria for the order report. When using
+ this method, specify the feedType, schemaVersion, and filterCriteria for the
+ report. The method returns the location response header containing the getOrderTask call URI
+ to retrieve the order task you just created. The URL includes the eBay-assigned task ID, which you
+ can use to reference the order task.
To retrieve the status of the task, use the
+ getOrderTask method to retrieve a single task ID or the getOrderTasks method to
+ retrieve multiple order task IDs. Note: The scope
+ depends on the feed type. An error message results when an unsupported scope or feed type is
+ specified.
The following list contains this method's authorization scope and its
+ corresponding feed type:
- https://api.ebay.com/oauth/api_scope/sell.fulfillment:
+ LMS_ORDER_REPORT
For details about how this method is used, see General feed types in the
+ Selling Integration Guide.
Note: At this time, the
+ createOrderTask method only supports order creation date filters and not modified
+ order date filters. Do not include the modifiedDateRange filter in your request
+ payload.
+
+ Args:
+ content_type (str):
+ body (CreateOrderTaskRequest): The type that defines the fields for the
+ createOrderTask request.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ body=body,
+content_type=content_type,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+
+async def asyncio_detailed(
+ *,
+ client: AuthenticatedClient,
+ body: CreateOrderTaskRequest,
+ content_type: str,
+
+) -> Response[Any]:
+ r""" This method creates an order download task with filter criteria for the order report. When using
+ this method, specify the feedType, schemaVersion, and filterCriteria for the
+ report. The method returns the location response header containing the getOrderTask call URI
+ to retrieve the order task you just created. The URL includes the eBay-assigned task ID, which you
+ can use to reference the order task.
To retrieve the status of the task, use the
+ getOrderTask method to retrieve a single task ID or the getOrderTasks method to
+ retrieve multiple order task IDs. Note: The scope
+ depends on the feed type. An error message results when an unsupported scope or feed type is
+ specified.
The following list contains this method's authorization scope and its
+ corresponding feed type:
- https://api.ebay.com/oauth/api_scope/sell.fulfillment:
+ LMS_ORDER_REPORT
For details about how this method is used, see General feed types in the
+ Selling Integration Guide.
Note: At this time, the
+ createOrderTask method only supports order creation date filters and not modified
+ order date filters. Do not include the modifiedDateRange filter in your request
+ payload.
+
+ Args:
+ content_type (str):
+ body (CreateOrderTaskRequest): The type that defines the fields for the
+ createOrderTask request.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ body=body,
+content_type=content_type,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
diff --git a/ebay_client/generated/feed/api/order_task/get_order_task.py b/ebay_client/generated/feed/api/order_task/get_order_task.py
new file mode 100644
index 0000000..db473aa
--- /dev/null
+++ b/ebay_client/generated/feed/api/order_task/get_order_task.py
@@ -0,0 +1,192 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.order_task import OrderTask
+from typing import cast
+
+
+
+def _get_kwargs(
+ task_id: str,
+
+) -> dict[str, Any]:
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/order_task/{task_id}".format(task_id=task_id,),
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, OrderTask]]:
+ if response.status_code == 200:
+ response_200 = OrderTask.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 403:
+ response_403 = cast(Any, None)
+ return response_403
+ if response.status_code == 404:
+ response_404 = cast(Any, None)
+ return response_404
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, OrderTask]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ task_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, OrderTask]]:
+ r""" This method retrieves the task details and status of the specified task. The input is
+ task_id. For details about how this method is used, see Working with Order Feeds
+ in the Selling Integration Guide.
+
+ Args:
+ task_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, OrderTask]]
+ """
+
+
+ kwargs = _get_kwargs(
+ task_id=task_id,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ task_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, OrderTask]]:
+ r""" This method retrieves the task details and status of the specified task. The input is
+ task_id. For details about how this method is used, see Working with Order Feeds
+ in the Selling Integration Guide.
+
+ Args:
+ task_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, OrderTask]
+ """
+
+
+ return sync_detailed(
+ task_id=task_id,
+client=client,
+
+ ).parsed
+
+async def asyncio_detailed(
+ task_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, OrderTask]]:
+ r""" This method retrieves the task details and status of the specified task. The input is
+ task_id. For details about how this method is used, see Working with Order Feeds
+ in the Selling Integration Guide.
+
+ Args:
+ task_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, OrderTask]]
+ """
+
+
+ kwargs = _get_kwargs(
+ task_id=task_id,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ task_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, OrderTask]]:
+ r""" This method retrieves the task details and status of the specified task. The input is
+ task_id. For details about how this method is used, see Working with Order Feeds
+ in the Selling Integration Guide.
+
+ Args:
+ task_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, OrderTask]
+ """
+
+
+ return (await asyncio_detailed(
+ task_id=task_id,
+client=client,
+
+ )).parsed
diff --git a/ebay_client/generated/feed/api/order_task/get_order_tasks.py b/ebay_client/generated/feed/api/order_task/get_order_tasks.py
new file mode 100644
index 0000000..a3435a1
--- /dev/null
+++ b/ebay_client/generated/feed/api/order_task/get_order_tasks.py
@@ -0,0 +1,298 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.order_task_collection import OrderTaskCollection
+from ...types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+
+
+def _get_kwargs(
+ *,
+ date_range: Union[Unset, str] = UNSET,
+ feed_type: Union[Unset, str] = UNSET,
+ limit: Union[Unset, str] = UNSET,
+ look_back_days: Union[Unset, str] = UNSET,
+ offset: Union[Unset, str] = UNSET,
+ schedule_id: Union[Unset, str] = UNSET,
+
+) -> dict[str, Any]:
+
+
+
+
+ params: dict[str, Any] = {}
+
+ params["date_range"] = date_range
+
+ params["feed_type"] = feed_type
+
+ params["limit"] = limit
+
+ params["look_back_days"] = look_back_days
+
+ params["offset"] = offset
+
+ params["schedule_id"] = schedule_id
+
+
+ params = {k: v for k, v in params.items() if v is not UNSET and v is not None}
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/order_task",
+ "params": params,
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, OrderTaskCollection]]:
+ if response.status_code == 200:
+ response_200 = OrderTaskCollection.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 403:
+ response_403 = cast(Any, None)
+ return response_403
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, OrderTaskCollection]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ *,
+ client: AuthenticatedClient,
+ date_range: Union[Unset, str] = UNSET,
+ feed_type: Union[Unset, str] = UNSET,
+ limit: Union[Unset, str] = UNSET,
+ look_back_days: Union[Unset, str] = UNSET,
+ offset: Union[Unset, str] = UNSET,
+ schedule_id: Union[Unset, str] = UNSET,
+
+) -> Response[Union[Any, OrderTaskCollection]]:
+ """ This method returns the details and status for an array of order tasks based on a specified
+ feed_type or schedule_id. Specifying both
+ feed_type and schedule_id results in an error. Since schedules are
+ based on feed types, you can specify a schedule (schedule_id) that returns the
+ needed feed_type.
If specifying the feed_type, limit
+ which order tasks are returned by specifying filters such as the creation date range or period of
+ time using look_back_days.
If specifying a
+ schedule_id, the schedule template (that the schedule_id is based
+ on) determines which order tasks are returned (see schedule_id for additional
+ information). Each schedule_id applies to one feed_type.
+
+ Args:
+ date_range (Union[Unset, str]):
+ feed_type (Union[Unset, str]):
+ limit (Union[Unset, str]):
+ look_back_days (Union[Unset, str]):
+ offset (Union[Unset, str]):
+ schedule_id (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, OrderTaskCollection]]
+ """
+
+
+ kwargs = _get_kwargs(
+ date_range=date_range,
+feed_type=feed_type,
+limit=limit,
+look_back_days=look_back_days,
+offset=offset,
+schedule_id=schedule_id,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ *,
+ client: AuthenticatedClient,
+ date_range: Union[Unset, str] = UNSET,
+ feed_type: Union[Unset, str] = UNSET,
+ limit: Union[Unset, str] = UNSET,
+ look_back_days: Union[Unset, str] = UNSET,
+ offset: Union[Unset, str] = UNSET,
+ schedule_id: Union[Unset, str] = UNSET,
+
+) -> Optional[Union[Any, OrderTaskCollection]]:
+ """ This method returns the details and status for an array of order tasks based on a specified
+ feed_type or schedule_id. Specifying both
+ feed_type and schedule_id results in an error. Since schedules are
+ based on feed types, you can specify a schedule (schedule_id) that returns the
+ needed feed_type.
If specifying the feed_type, limit
+ which order tasks are returned by specifying filters such as the creation date range or period of
+ time using look_back_days.
If specifying a
+ schedule_id, the schedule template (that the schedule_id is based
+ on) determines which order tasks are returned (see schedule_id for additional
+ information). Each schedule_id applies to one feed_type.
+
+ Args:
+ date_range (Union[Unset, str]):
+ feed_type (Union[Unset, str]):
+ limit (Union[Unset, str]):
+ look_back_days (Union[Unset, str]):
+ offset (Union[Unset, str]):
+ schedule_id (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, OrderTaskCollection]
+ """
+
+
+ return sync_detailed(
+ client=client,
+date_range=date_range,
+feed_type=feed_type,
+limit=limit,
+look_back_days=look_back_days,
+offset=offset,
+schedule_id=schedule_id,
+
+ ).parsed
+
+async def asyncio_detailed(
+ *,
+ client: AuthenticatedClient,
+ date_range: Union[Unset, str] = UNSET,
+ feed_type: Union[Unset, str] = UNSET,
+ limit: Union[Unset, str] = UNSET,
+ look_back_days: Union[Unset, str] = UNSET,
+ offset: Union[Unset, str] = UNSET,
+ schedule_id: Union[Unset, str] = UNSET,
+
+) -> Response[Union[Any, OrderTaskCollection]]:
+ """ This method returns the details and status for an array of order tasks based on a specified
+ feed_type or schedule_id. Specifying both
+ feed_type and schedule_id results in an error. Since schedules are
+ based on feed types, you can specify a schedule (schedule_id) that returns the
+ needed feed_type.
If specifying the feed_type, limit
+ which order tasks are returned by specifying filters such as the creation date range or period of
+ time using look_back_days.
If specifying a
+ schedule_id, the schedule template (that the schedule_id is based
+ on) determines which order tasks are returned (see schedule_id for additional
+ information). Each schedule_id applies to one feed_type.
+
+ Args:
+ date_range (Union[Unset, str]):
+ feed_type (Union[Unset, str]):
+ limit (Union[Unset, str]):
+ look_back_days (Union[Unset, str]):
+ offset (Union[Unset, str]):
+ schedule_id (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, OrderTaskCollection]]
+ """
+
+
+ kwargs = _get_kwargs(
+ date_range=date_range,
+feed_type=feed_type,
+limit=limit,
+look_back_days=look_back_days,
+offset=offset,
+schedule_id=schedule_id,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ *,
+ client: AuthenticatedClient,
+ date_range: Union[Unset, str] = UNSET,
+ feed_type: Union[Unset, str] = UNSET,
+ limit: Union[Unset, str] = UNSET,
+ look_back_days: Union[Unset, str] = UNSET,
+ offset: Union[Unset, str] = UNSET,
+ schedule_id: Union[Unset, str] = UNSET,
+
+) -> Optional[Union[Any, OrderTaskCollection]]:
+ """ This method returns the details and status for an array of order tasks based on a specified
+ feed_type or schedule_id. Specifying both
+ feed_type and schedule_id results in an error. Since schedules are
+ based on feed types, you can specify a schedule (schedule_id) that returns the
+ needed feed_type.
If specifying the feed_type, limit
+ which order tasks are returned by specifying filters such as the creation date range or period of
+ time using look_back_days.
If specifying a
+ schedule_id, the schedule template (that the schedule_id is based
+ on) determines which order tasks are returned (see schedule_id for additional
+ information). Each schedule_id applies to one feed_type.
+
+ Args:
+ date_range (Union[Unset, str]):
+ feed_type (Union[Unset, str]):
+ limit (Union[Unset, str]):
+ look_back_days (Union[Unset, str]):
+ offset (Union[Unset, str]):
+ schedule_id (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, OrderTaskCollection]
+ """
+
+
+ return (await asyncio_detailed(
+ client=client,
+date_range=date_range,
+feed_type=feed_type,
+limit=limit,
+look_back_days=look_back_days,
+offset=offset,
+schedule_id=schedule_id,
+
+ )).parsed
diff --git a/ebay_client/generated/feed/api/schedule/__init__.py b/ebay_client/generated/feed/api/schedule/__init__.py
new file mode 100644
index 0000000..c9921b5
--- /dev/null
+++ b/ebay_client/generated/feed/api/schedule/__init__.py
@@ -0,0 +1 @@
+""" Contains endpoint functions for accessing the API """
diff --git a/ebay_client/generated/feed/api/schedule/create_schedule.py b/ebay_client/generated/feed/api/schedule/create_schedule.py
new file mode 100644
index 0000000..5999f22
--- /dev/null
+++ b/ebay_client/generated/feed/api/schedule/create_schedule.py
@@ -0,0 +1,283 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.create_schedule_response_201 import CreateScheduleResponse201
+from ...models.create_user_schedule_request import CreateUserScheduleRequest
+from typing import cast
+
+
+
+def _get_kwargs(
+ *,
+ body: CreateUserScheduleRequest,
+ content_type: str,
+
+) -> dict[str, Any]:
+ headers: dict[str, Any] = {}
+ headers["Content-Type"] = content_type
+
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "post",
+ "url": "/schedule",
+ }
+
+ _kwargs["json"] = body.to_dict()
+
+
+ headers["Content-Type"] = "application/json"
+
+ _kwargs["headers"] = headers
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, CreateScheduleResponse201]]:
+ if response.status_code == 201:
+ response_201 = CreateScheduleResponse201.from_dict(response.json())
+
+
+
+ return response_201
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 403:
+ response_403 = cast(Any, None)
+ return response_403
+ if response.status_code == 409:
+ response_409 = cast(Any, None)
+ return response_409
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, CreateScheduleResponse201]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ *,
+ client: AuthenticatedClient,
+ body: CreateUserScheduleRequest,
+ content_type: str,
+
+) -> Response[Union[Any, CreateScheduleResponse201]]:
+ r""" This method creates a schedule, which is a subscription to the specified schedule template. A
+ schedule periodically generates a report for the feedType specified by the
+ template. Specify the same feedType as the feedType of the
+ associated schedule template. When creating the schedule, if available from the template, you can
+ specify a preferred trigger hour, day of the week, or day of the month. These and other fields are
+ conditionally available as specified by the template. Note: Make sure to include all fields required by the schedule
+ template (scheduleTemplateId). Call the getScheduleTemplate method
+ (or the getScheduleTemplates method), to find out which fields are required or
+ optional. If a field is optional and a default value is provided by the template, the default value
+ will be used if omitted from the payload.
A successful call returns the location response
+ header containing the getSchedule call URI to retrieve the schedule you just
+ created. The URL includes the eBay-assigned schedule ID, which you can use to reference the schedule
+ task.
To retrieve the details of the create schedule task, use the
+ getSchedule method for a single schedule ID or the getSchedules
+ method to retrieve all schedule details for the specified feed_type. The number of
+ schedules for each feedType is limited. Error code 160031 is returned when you have reached this
+ maximum. Note: Except for schedules with a HALF-HOUR
+ frequency, all schedules will ideally run at the start of each hour ('00' minutes). Actual start
+ time may vary time may vary due to load and other factors.
+
+ Args:
+ content_type (str):
+ body (CreateUserScheduleRequest): The type that defines the fields for the
+ createSchedule method.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, CreateScheduleResponse201]]
+ """
+
+
+ kwargs = _get_kwargs(
+ body=body,
+content_type=content_type,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ *,
+ client: AuthenticatedClient,
+ body: CreateUserScheduleRequest,
+ content_type: str,
+
+) -> Optional[Union[Any, CreateScheduleResponse201]]:
+ r""" This method creates a schedule, which is a subscription to the specified schedule template. A
+ schedule periodically generates a report for the feedType specified by the
+ template. Specify the same feedType as the feedType of the
+ associated schedule template. When creating the schedule, if available from the template, you can
+ specify a preferred trigger hour, day of the week, or day of the month. These and other fields are
+ conditionally available as specified by the template. Note: Make sure to include all fields required by the schedule
+ template (scheduleTemplateId). Call the getScheduleTemplate method
+ (or the getScheduleTemplates method), to find out which fields are required or
+ optional. If a field is optional and a default value is provided by the template, the default value
+ will be used if omitted from the payload.
A successful call returns the location response
+ header containing the getSchedule call URI to retrieve the schedule you just
+ created. The URL includes the eBay-assigned schedule ID, which you can use to reference the schedule
+ task.
To retrieve the details of the create schedule task, use the
+ getSchedule method for a single schedule ID or the getSchedules
+ method to retrieve all schedule details for the specified feed_type. The number of
+ schedules for each feedType is limited. Error code 160031 is returned when you have reached this
+ maximum. Note: Except for schedules with a HALF-HOUR
+ frequency, all schedules will ideally run at the start of each hour ('00' minutes). Actual start
+ time may vary time may vary due to load and other factors.
+
+ Args:
+ content_type (str):
+ body (CreateUserScheduleRequest): The type that defines the fields for the
+ createSchedule method.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, CreateScheduleResponse201]
+ """
+
+
+ return sync_detailed(
+ client=client,
+body=body,
+content_type=content_type,
+
+ ).parsed
+
+async def asyncio_detailed(
+ *,
+ client: AuthenticatedClient,
+ body: CreateUserScheduleRequest,
+ content_type: str,
+
+) -> Response[Union[Any, CreateScheduleResponse201]]:
+ r""" This method creates a schedule, which is a subscription to the specified schedule template. A
+ schedule periodically generates a report for the feedType specified by the
+ template. Specify the same feedType as the feedType of the
+ associated schedule template. When creating the schedule, if available from the template, you can
+ specify a preferred trigger hour, day of the week, or day of the month. These and other fields are
+ conditionally available as specified by the template. Note: Make sure to include all fields required by the schedule
+ template (scheduleTemplateId). Call the getScheduleTemplate method
+ (or the getScheduleTemplates method), to find out which fields are required or
+ optional. If a field is optional and a default value is provided by the template, the default value
+ will be used if omitted from the payload.
A successful call returns the location response
+ header containing the getSchedule call URI to retrieve the schedule you just
+ created. The URL includes the eBay-assigned schedule ID, which you can use to reference the schedule
+ task.
To retrieve the details of the create schedule task, use the
+ getSchedule method for a single schedule ID or the getSchedules
+ method to retrieve all schedule details for the specified feed_type. The number of
+ schedules for each feedType is limited. Error code 160031 is returned when you have reached this
+ maximum. Note: Except for schedules with a HALF-HOUR
+ frequency, all schedules will ideally run at the start of each hour ('00' minutes). Actual start
+ time may vary time may vary due to load and other factors.
+
+ Args:
+ content_type (str):
+ body (CreateUserScheduleRequest): The type that defines the fields for the
+ createSchedule method.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, CreateScheduleResponse201]]
+ """
+
+
+ kwargs = _get_kwargs(
+ body=body,
+content_type=content_type,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ *,
+ client: AuthenticatedClient,
+ body: CreateUserScheduleRequest,
+ content_type: str,
+
+) -> Optional[Union[Any, CreateScheduleResponse201]]:
+ r""" This method creates a schedule, which is a subscription to the specified schedule template. A
+ schedule periodically generates a report for the feedType specified by the
+ template. Specify the same feedType as the feedType of the
+ associated schedule template. When creating the schedule, if available from the template, you can
+ specify a preferred trigger hour, day of the week, or day of the month. These and other fields are
+ conditionally available as specified by the template. Note: Make sure to include all fields required by the schedule
+ template (scheduleTemplateId). Call the getScheduleTemplate method
+ (or the getScheduleTemplates method), to find out which fields are required or
+ optional. If a field is optional and a default value is provided by the template, the default value
+ will be used if omitted from the payload.
A successful call returns the location response
+ header containing the getSchedule call URI to retrieve the schedule you just
+ created. The URL includes the eBay-assigned schedule ID, which you can use to reference the schedule
+ task.
To retrieve the details of the create schedule task, use the
+ getSchedule method for a single schedule ID or the getSchedules
+ method to retrieve all schedule details for the specified feed_type. The number of
+ schedules for each feedType is limited. Error code 160031 is returned when you have reached this
+ maximum. Note: Except for schedules with a HALF-HOUR
+ frequency, all schedules will ideally run at the start of each hour ('00' minutes). Actual start
+ time may vary time may vary due to load and other factors.
+
+ Args:
+ content_type (str):
+ body (CreateUserScheduleRequest): The type that defines the fields for the
+ createSchedule method.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, CreateScheduleResponse201]
+ """
+
+
+ return (await asyncio_detailed(
+ client=client,
+body=body,
+content_type=content_type,
+
+ )).parsed
diff --git a/ebay_client/generated/feed/api/schedule/delete_schedule.py b/ebay_client/generated/feed/api/schedule/delete_schedule.py
new file mode 100644
index 0000000..c254495
--- /dev/null
+++ b/ebay_client/generated/feed/api/schedule/delete_schedule.py
@@ -0,0 +1,120 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+
+
+
+def _get_kwargs(
+ schedule_id: str,
+
+) -> dict[str, Any]:
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "delete",
+ "url": "/schedule/{schedule_id}".format(schedule_id=schedule_id,),
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Any]:
+ if response.status_code == 400:
+ return None
+ if response.status_code == 500:
+ return None
+ if response.status_code == 204:
+ return None
+ if response.status_code == 404:
+ return None
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Any]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ schedule_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Any]:
+ """ This method deletes an existing schedule. Specify the schedule to delete using the
+ schedule_id path parameter.
+
+ Args:
+ schedule_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ schedule_id=schedule_id,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+
+async def asyncio_detailed(
+ schedule_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Any]:
+ """ This method deletes an existing schedule. Specify the schedule to delete using the
+ schedule_id path parameter.
+
+ Args:
+ schedule_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ schedule_id=schedule_id,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
diff --git a/ebay_client/generated/feed/api/schedule/get_latest_result_file.py b/ebay_client/generated/feed/api/schedule/get_latest_result_file.py
new file mode 100644
index 0000000..99e96e8
--- /dev/null
+++ b/ebay_client/generated/feed/api/schedule/get_latest_result_file.py
@@ -0,0 +1,192 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.streaming_output import StreamingOutput
+from typing import cast
+
+
+
+def _get_kwargs(
+ schedule_id: str,
+
+) -> dict[str, Any]:
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/schedule/{schedule_id}/download_result_file".format(schedule_id=schedule_id,),
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, StreamingOutput]]:
+ if response.status_code == 200:
+ response_200 = StreamingOutput.from_dict(response.content)
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 403:
+ response_403 = cast(Any, None)
+ return response_403
+ if response.status_code == 404:
+ response_404 = cast(Any, None)
+ return response_404
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, StreamingOutput]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ schedule_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, StreamingOutput]]:
+ """ This method downloads the latest Order Report generated by the schedule. The response of this call
+ is a compressed or uncompressed CSV, XML, or JSON file, with the applicable file extension (for
+ example: csv.gz). Specify the schedule_id path parameter to download its last
+ generated file.
+
+ Args:
+ schedule_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, StreamingOutput]]
+ """
+
+
+ kwargs = _get_kwargs(
+ schedule_id=schedule_id,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ schedule_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, StreamingOutput]]:
+ """ This method downloads the latest Order Report generated by the schedule. The response of this call
+ is a compressed or uncompressed CSV, XML, or JSON file, with the applicable file extension (for
+ example: csv.gz). Specify the schedule_id path parameter to download its last
+ generated file.
+
+ Args:
+ schedule_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, StreamingOutput]
+ """
+
+
+ return sync_detailed(
+ schedule_id=schedule_id,
+client=client,
+
+ ).parsed
+
+async def asyncio_detailed(
+ schedule_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, StreamingOutput]]:
+ """ This method downloads the latest Order Report generated by the schedule. The response of this call
+ is a compressed or uncompressed CSV, XML, or JSON file, with the applicable file extension (for
+ example: csv.gz). Specify the schedule_id path parameter to download its last
+ generated file.
+
+ Args:
+ schedule_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, StreamingOutput]]
+ """
+
+
+ kwargs = _get_kwargs(
+ schedule_id=schedule_id,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ schedule_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, StreamingOutput]]:
+ """ This method downloads the latest Order Report generated by the schedule. The response of this call
+ is a compressed or uncompressed CSV, XML, or JSON file, with the applicable file extension (for
+ example: csv.gz). Specify the schedule_id path parameter to download its last
+ generated file.
+
+ Args:
+ schedule_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, StreamingOutput]
+ """
+
+
+ return (await asyncio_detailed(
+ schedule_id=schedule_id,
+client=client,
+
+ )).parsed
diff --git a/ebay_client/generated/feed/api/schedule/get_schedule.py b/ebay_client/generated/feed/api/schedule/get_schedule.py
new file mode 100644
index 0000000..f81b149
--- /dev/null
+++ b/ebay_client/generated/feed/api/schedule/get_schedule.py
@@ -0,0 +1,188 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.user_schedule_response import UserScheduleResponse
+from typing import cast
+
+
+
+def _get_kwargs(
+ schedule_id: str,
+
+) -> dict[str, Any]:
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/schedule/{schedule_id}".format(schedule_id=schedule_id,),
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, UserScheduleResponse]]:
+ if response.status_code == 200:
+ response_200 = UserScheduleResponse.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 403:
+ response_403 = cast(Any, None)
+ return response_403
+ if response.status_code == 404:
+ response_404 = cast(Any, None)
+ return response_404
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, UserScheduleResponse]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ schedule_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, UserScheduleResponse]]:
+ """ This method retrieves schedule details and status of the specified schedule. Specify the schedule to
+ retrieve using the schedule_id. Use the getSchedules method to
+ find a schedule if you do not know the schedule_id.
+
+ Args:
+ schedule_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, UserScheduleResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ schedule_id=schedule_id,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ schedule_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, UserScheduleResponse]]:
+ """ This method retrieves schedule details and status of the specified schedule. Specify the schedule to
+ retrieve using the schedule_id. Use the getSchedules method to
+ find a schedule if you do not know the schedule_id.
+
+ Args:
+ schedule_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, UserScheduleResponse]
+ """
+
+
+ return sync_detailed(
+ schedule_id=schedule_id,
+client=client,
+
+ ).parsed
+
+async def asyncio_detailed(
+ schedule_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, UserScheduleResponse]]:
+ """ This method retrieves schedule details and status of the specified schedule. Specify the schedule to
+ retrieve using the schedule_id. Use the getSchedules method to
+ find a schedule if you do not know the schedule_id.
+
+ Args:
+ schedule_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, UserScheduleResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ schedule_id=schedule_id,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ schedule_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, UserScheduleResponse]]:
+ """ This method retrieves schedule details and status of the specified schedule. Specify the schedule to
+ retrieve using the schedule_id. Use the getSchedules method to
+ find a schedule if you do not know the schedule_id.
+
+ Args:
+ schedule_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, UserScheduleResponse]
+ """
+
+
+ return (await asyncio_detailed(
+ schedule_id=schedule_id,
+client=client,
+
+ )).parsed
diff --git a/ebay_client/generated/feed/api/schedule/get_schedule_template.py b/ebay_client/generated/feed/api/schedule/get_schedule_template.py
new file mode 100644
index 0000000..81f8d3a
--- /dev/null
+++ b/ebay_client/generated/feed/api/schedule/get_schedule_template.py
@@ -0,0 +1,189 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.schedule_template_response import ScheduleTemplateResponse
+from typing import cast
+
+
+
+def _get_kwargs(
+ schedule_template_id: str,
+
+) -> dict[str, Any]:
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/schedule_template/{schedule_template_id}".format(schedule_template_id=schedule_template_id,),
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, ScheduleTemplateResponse]]:
+ if response.status_code == 200:
+ response_200 = ScheduleTemplateResponse.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 404:
+ response_404 = cast(Any, None)
+ return response_404
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, ScheduleTemplateResponse]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ schedule_template_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, ScheduleTemplateResponse]]:
+ """ This method retrieves the details of the specified template. Specify the template to retrieve using
+ the schedule_template_id path parameter. Use the
+ getScheduleTemplates method to find a schedule template if you do not know the
+ schedule_template_id.
+
+ Args:
+ schedule_template_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, ScheduleTemplateResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ schedule_template_id=schedule_template_id,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ schedule_template_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, ScheduleTemplateResponse]]:
+ """ This method retrieves the details of the specified template. Specify the template to retrieve using
+ the schedule_template_id path parameter. Use the
+ getScheduleTemplates method to find a schedule template if you do not know the
+ schedule_template_id.
+
+ Args:
+ schedule_template_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, ScheduleTemplateResponse]
+ """
+
+
+ return sync_detailed(
+ schedule_template_id=schedule_template_id,
+client=client,
+
+ ).parsed
+
+async def asyncio_detailed(
+ schedule_template_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, ScheduleTemplateResponse]]:
+ """ This method retrieves the details of the specified template. Specify the template to retrieve using
+ the schedule_template_id path parameter. Use the
+ getScheduleTemplates method to find a schedule template if you do not know the
+ schedule_template_id.
+
+ Args:
+ schedule_template_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, ScheduleTemplateResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ schedule_template_id=schedule_template_id,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ schedule_template_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, ScheduleTemplateResponse]]:
+ """ This method retrieves the details of the specified template. Specify the template to retrieve using
+ the schedule_template_id path parameter. Use the
+ getScheduleTemplates method to find a schedule template if you do not know the
+ schedule_template_id.
+
+ Args:
+ schedule_template_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, ScheduleTemplateResponse]
+ """
+
+
+ return (await asyncio_detailed(
+ schedule_template_id=schedule_template_id,
+client=client,
+
+ )).parsed
diff --git a/ebay_client/generated/feed/api/schedule/get_schedule_templates.py b/ebay_client/generated/feed/api/schedule/get_schedule_templates.py
new file mode 100644
index 0000000..ab9a8bd
--- /dev/null
+++ b/ebay_client/generated/feed/api/schedule/get_schedule_templates.py
@@ -0,0 +1,222 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.schedule_template_collection import ScheduleTemplateCollection
+from ...types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+
+
+def _get_kwargs(
+ *,
+ feed_type: str,
+ limit: Union[Unset, str] = UNSET,
+ offset: Union[Unset, str] = UNSET,
+
+) -> dict[str, Any]:
+
+
+
+
+ params: dict[str, Any] = {}
+
+ params["feed_type"] = feed_type
+
+ params["limit"] = limit
+
+ params["offset"] = offset
+
+
+ params = {k: v for k, v in params.items() if v is not UNSET and v is not None}
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/schedule_template",
+ "params": params,
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, ScheduleTemplateCollection]]:
+ if response.status_code == 200:
+ response_200 = ScheduleTemplateCollection.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, ScheduleTemplateCollection]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ *,
+ client: AuthenticatedClient,
+ feed_type: str,
+ limit: Union[Unset, str] = UNSET,
+ offset: Union[Unset, str] = UNSET,
+
+) -> Response[Union[Any, ScheduleTemplateCollection]]:
+ """ This method retrieves an array containing the details and status of all schedule templates based on
+ the specified feed_type. Use this method to find a schedule template if you do not
+ know the schedule_template_id.
+
+ Args:
+ feed_type (str):
+ limit (Union[Unset, str]):
+ offset (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, ScheduleTemplateCollection]]
+ """
+
+
+ kwargs = _get_kwargs(
+ feed_type=feed_type,
+limit=limit,
+offset=offset,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ *,
+ client: AuthenticatedClient,
+ feed_type: str,
+ limit: Union[Unset, str] = UNSET,
+ offset: Union[Unset, str] = UNSET,
+
+) -> Optional[Union[Any, ScheduleTemplateCollection]]:
+ """ This method retrieves an array containing the details and status of all schedule templates based on
+ the specified feed_type. Use this method to find a schedule template if you do not
+ know the schedule_template_id.
+
+ Args:
+ feed_type (str):
+ limit (Union[Unset, str]):
+ offset (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, ScheduleTemplateCollection]
+ """
+
+
+ return sync_detailed(
+ client=client,
+feed_type=feed_type,
+limit=limit,
+offset=offset,
+
+ ).parsed
+
+async def asyncio_detailed(
+ *,
+ client: AuthenticatedClient,
+ feed_type: str,
+ limit: Union[Unset, str] = UNSET,
+ offset: Union[Unset, str] = UNSET,
+
+) -> Response[Union[Any, ScheduleTemplateCollection]]:
+ """ This method retrieves an array containing the details and status of all schedule templates based on
+ the specified feed_type. Use this method to find a schedule template if you do not
+ know the schedule_template_id.
+
+ Args:
+ feed_type (str):
+ limit (Union[Unset, str]):
+ offset (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, ScheduleTemplateCollection]]
+ """
+
+
+ kwargs = _get_kwargs(
+ feed_type=feed_type,
+limit=limit,
+offset=offset,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ *,
+ client: AuthenticatedClient,
+ feed_type: str,
+ limit: Union[Unset, str] = UNSET,
+ offset: Union[Unset, str] = UNSET,
+
+) -> Optional[Union[Any, ScheduleTemplateCollection]]:
+ """ This method retrieves an array containing the details and status of all schedule templates based on
+ the specified feed_type. Use this method to find a schedule template if you do not
+ know the schedule_template_id.
+
+ Args:
+ feed_type (str):
+ limit (Union[Unset, str]):
+ offset (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, ScheduleTemplateCollection]
+ """
+
+
+ return (await asyncio_detailed(
+ client=client,
+feed_type=feed_type,
+limit=limit,
+offset=offset,
+
+ )).parsed
diff --git a/ebay_client/generated/feed/api/schedule/get_schedules.py b/ebay_client/generated/feed/api/schedule/get_schedules.py
new file mode 100644
index 0000000..ba02328
--- /dev/null
+++ b/ebay_client/generated/feed/api/schedule/get_schedules.py
@@ -0,0 +1,225 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.user_schedule_collection import UserScheduleCollection
+from ...types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+
+
+def _get_kwargs(
+ *,
+ feed_type: str,
+ limit: Union[Unset, str] = UNSET,
+ offset: Union[Unset, str] = UNSET,
+
+) -> dict[str, Any]:
+
+
+
+
+ params: dict[str, Any] = {}
+
+ params["feed_type"] = feed_type
+
+ params["limit"] = limit
+
+ params["offset"] = offset
+
+
+ params = {k: v for k, v in params.items() if v is not UNSET and v is not None}
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/schedule",
+ "params": params,
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, UserScheduleCollection]]:
+ if response.status_code == 200:
+ response_200 = UserScheduleCollection.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 403:
+ response_403 = cast(Any, None)
+ return response_403
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, UserScheduleCollection]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ *,
+ client: AuthenticatedClient,
+ feed_type: str,
+ limit: Union[Unset, str] = UNSET,
+ offset: Union[Unset, str] = UNSET,
+
+) -> Response[Union[Any, UserScheduleCollection]]:
+ """ This method retrieves an array containing the details and status of all schedules based on the
+ specified feed_type. Use this method to find a schedule if you do not know the
+ schedule_id.
+
+ Args:
+ feed_type (str):
+ limit (Union[Unset, str]):
+ offset (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, UserScheduleCollection]]
+ """
+
+
+ kwargs = _get_kwargs(
+ feed_type=feed_type,
+limit=limit,
+offset=offset,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ *,
+ client: AuthenticatedClient,
+ feed_type: str,
+ limit: Union[Unset, str] = UNSET,
+ offset: Union[Unset, str] = UNSET,
+
+) -> Optional[Union[Any, UserScheduleCollection]]:
+ """ This method retrieves an array containing the details and status of all schedules based on the
+ specified feed_type. Use this method to find a schedule if you do not know the
+ schedule_id.
+
+ Args:
+ feed_type (str):
+ limit (Union[Unset, str]):
+ offset (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, UserScheduleCollection]
+ """
+
+
+ return sync_detailed(
+ client=client,
+feed_type=feed_type,
+limit=limit,
+offset=offset,
+
+ ).parsed
+
+async def asyncio_detailed(
+ *,
+ client: AuthenticatedClient,
+ feed_type: str,
+ limit: Union[Unset, str] = UNSET,
+ offset: Union[Unset, str] = UNSET,
+
+) -> Response[Union[Any, UserScheduleCollection]]:
+ """ This method retrieves an array containing the details and status of all schedules based on the
+ specified feed_type. Use this method to find a schedule if you do not know the
+ schedule_id.
+
+ Args:
+ feed_type (str):
+ limit (Union[Unset, str]):
+ offset (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, UserScheduleCollection]]
+ """
+
+
+ kwargs = _get_kwargs(
+ feed_type=feed_type,
+limit=limit,
+offset=offset,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ *,
+ client: AuthenticatedClient,
+ feed_type: str,
+ limit: Union[Unset, str] = UNSET,
+ offset: Union[Unset, str] = UNSET,
+
+) -> Optional[Union[Any, UserScheduleCollection]]:
+ """ This method retrieves an array containing the details and status of all schedules based on the
+ specified feed_type. Use this method to find a schedule if you do not know the
+ schedule_id.
+
+ Args:
+ feed_type (str):
+ limit (Union[Unset, str]):
+ offset (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, UserScheduleCollection]
+ """
+
+
+ return (await asyncio_detailed(
+ client=client,
+feed_type=feed_type,
+limit=limit,
+offset=offset,
+
+ )).parsed
diff --git a/ebay_client/generated/feed/api/schedule/update_schedule.py b/ebay_client/generated/feed/api/schedule/update_schedule.py
new file mode 100644
index 0000000..93d8604
--- /dev/null
+++ b/ebay_client/generated/feed/api/schedule/update_schedule.py
@@ -0,0 +1,163 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.update_user_schedule_request import UpdateUserScheduleRequest
+from typing import cast
+
+
+
+def _get_kwargs(
+ schedule_id: str,
+ *,
+ body: UpdateUserScheduleRequest,
+ content_type: str,
+
+) -> dict[str, Any]:
+ headers: dict[str, Any] = {}
+ headers["Content-Type"] = content_type
+
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "put",
+ "url": "/schedule/{schedule_id}".format(schedule_id=schedule_id,),
+ }
+
+ _kwargs["json"] = body.to_dict()
+
+
+ headers["Content-Type"] = "application/json"
+
+ _kwargs["headers"] = headers
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Any]:
+ if response.status_code == 400:
+ return None
+ if response.status_code == 500:
+ return None
+ if response.status_code == 204:
+ return None
+ if response.status_code == 403:
+ return None
+ if response.status_code == 404:
+ return None
+ if response.status_code == 409:
+ return None
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Any]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ schedule_id: str,
+ *,
+ client: AuthenticatedClient,
+ body: UpdateUserScheduleRequest,
+ content_type: str,
+
+) -> Response[Any]:
+ r""" This method updates an existing schedule. Specify the schedule to update using the
+ schedule_id path parameter. If the schedule template has changed after the schedule
+ was created or updated, the input will be validated using the changed template. Note: Make sure to include all fields required by the schedule
+ template (scheduleTemplateId). Call the getScheduleTemplate method
+ (or the getScheduleTemplates method), to find out which fields are required or
+ optional. If you do not know the scheduleTemplateId, call the
+ getSchedule method to find out.
+
+ Args:
+ schedule_id (str):
+ content_type (str):
+ body (UpdateUserScheduleRequest): The type that defines the fields for a schedule update
+ to a schedule generated with the Feed API.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ schedule_id=schedule_id,
+body=body,
+content_type=content_type,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+
+async def asyncio_detailed(
+ schedule_id: str,
+ *,
+ client: AuthenticatedClient,
+ body: UpdateUserScheduleRequest,
+ content_type: str,
+
+) -> Response[Any]:
+ r""" This method updates an existing schedule. Specify the schedule to update using the
+ schedule_id path parameter. If the schedule template has changed after the schedule
+ was created or updated, the input will be validated using the changed template. Note: Make sure to include all fields required by the schedule
+ template (scheduleTemplateId). Call the getScheduleTemplate method
+ (or the getScheduleTemplates method), to find out which fields are required or
+ optional. If you do not know the scheduleTemplateId, call the
+ getSchedule method to find out.
+
+ Args:
+ schedule_id (str):
+ content_type (str):
+ body (UpdateUserScheduleRequest): The type that defines the fields for a schedule update
+ to a schedule generated with the Feed API.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ schedule_id=schedule_id,
+body=body,
+content_type=content_type,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
diff --git a/ebay_client/generated/feed/api/task/__init__.py b/ebay_client/generated/feed/api/task/__init__.py
new file mode 100644
index 0000000..c9921b5
--- /dev/null
+++ b/ebay_client/generated/feed/api/task/__init__.py
@@ -0,0 +1 @@
+""" Contains endpoint functions for accessing the API """
diff --git a/ebay_client/generated/feed/api/task/create_task.py b/ebay_client/generated/feed/api/task/create_task.py
new file mode 100644
index 0000000..30b8197
--- /dev/null
+++ b/ebay_client/generated/feed/api/task/create_task.py
@@ -0,0 +1,191 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.create_task_request import CreateTaskRequest
+from ...types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+
+
+def _get_kwargs(
+ *,
+ body: CreateTaskRequest,
+ x_ebay_c_marketplace_id: str,
+ content_type: str,
+ accept_language: Union[Unset, str] = UNSET,
+
+) -> dict[str, Any]:
+ headers: dict[str, Any] = {}
+ headers["X-EBAY-C-MARKETPLACE-ID"] = x_ebay_c_marketplace_id
+
+ headers["Content-Type"] = content_type
+
+ if not isinstance(accept_language, Unset):
+ headers["Accept-Language"] = accept_language
+
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "post",
+ "url": "/task",
+ }
+
+ _kwargs["json"] = body.to_dict()
+
+
+ headers["Content-Type"] = "application/json"
+
+ _kwargs["headers"] = headers
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Any]:
+ if response.status_code == 400:
+ return None
+ if response.status_code == 202:
+ return None
+ if response.status_code == 500:
+ return None
+ if response.status_code == 403:
+ return None
+ if response.status_code == 409:
+ return None
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Any]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ *,
+ client: AuthenticatedClient,
+ body: CreateTaskRequest,
+ x_ebay_c_marketplace_id: str,
+ content_type: str,
+ accept_language: Union[Unset, str] = UNSET,
+
+) -> Response[Any]:
+ r""" This method creates an upload task or a download task without filter criteria. When using this
+ method, specify the feedType and the feed file schemaVersion. The feed type
+ specified sets the task as a download or an upload task. For details about the upload and
+ download flows, see Working with Order Feeds in the Selling Integration Guide.
Note: The scope depends on the feed type. An error message
+ results when an unsupported scope or feed type is specified.
The following list
+ contains this method's authorization scopes and their corresponding feed
+ types:
- https://api.ebay.com/oauth/api_scope/sell.inventory: See LMS
+ FeedTypes
- https://api.ebay.com/oauth/api_scope/sell.fulfillment: LMS_ORDER_ACK (specify
+ for upload tasks). Also see LMS
+ FeedTypes
- https://api.ebay.com/oauth/api_scope/sell.marketing:
+ None*
- https://api.ebay.com/oauth/api_scope/commerce.catalog.readonly: None*
*
+ Reserved for future release
+
+ Args:
+ x_ebay_c_marketplace_id (str):
+ content_type (str):
+ accept_language (Union[Unset, str]):
+ body (CreateTaskRequest): The type that defines the fields for the createTask
+ method.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ body=body,
+x_ebay_c_marketplace_id=x_ebay_c_marketplace_id,
+content_type=content_type,
+accept_language=accept_language,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+
+async def asyncio_detailed(
+ *,
+ client: AuthenticatedClient,
+ body: CreateTaskRequest,
+ x_ebay_c_marketplace_id: str,
+ content_type: str,
+ accept_language: Union[Unset, str] = UNSET,
+
+) -> Response[Any]:
+ r""" This method creates an upload task or a download task without filter criteria. When using this
+ method, specify the feedType and the feed file schemaVersion. The feed type
+ specified sets the task as a download or an upload task. For details about the upload and
+ download flows, see Working with Order Feeds in the Selling Integration Guide.
Note: The scope depends on the feed type. An error message
+ results when an unsupported scope or feed type is specified.
The following list
+ contains this method's authorization scopes and their corresponding feed
+ types:
- https://api.ebay.com/oauth/api_scope/sell.inventory: See LMS
+ FeedTypes
- https://api.ebay.com/oauth/api_scope/sell.fulfillment: LMS_ORDER_ACK (specify
+ for upload tasks). Also see LMS
+ FeedTypes
- https://api.ebay.com/oauth/api_scope/sell.marketing:
+ None*
- https://api.ebay.com/oauth/api_scope/commerce.catalog.readonly: None*
*
+ Reserved for future release
+
+ Args:
+ x_ebay_c_marketplace_id (str):
+ content_type (str):
+ accept_language (Union[Unset, str]):
+ body (CreateTaskRequest): The type that defines the fields for the createTask
+ method.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ body=body,
+x_ebay_c_marketplace_id=x_ebay_c_marketplace_id,
+content_type=content_type,
+accept_language=accept_language,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
diff --git a/ebay_client/generated/feed/api/task/get_input_file.py b/ebay_client/generated/feed/api/task/get_input_file.py
new file mode 100644
index 0000000..b05c68a
--- /dev/null
+++ b/ebay_client/generated/feed/api/task/get_input_file.py
@@ -0,0 +1,200 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.streaming_output import StreamingOutput
+from typing import cast
+
+
+
+def _get_kwargs(
+ task_id: str,
+
+) -> dict[str, Any]:
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/task/{task_id}/download_input_file".format(task_id=task_id,),
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, StreamingOutput]]:
+ if response.status_code == 200:
+ response_200 = StreamingOutput.from_dict(response.content)
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 403:
+ response_403 = cast(Any, None)
+ return response_403
+ if response.status_code == 404:
+ response_404 = cast(Any, None)
+ return response_404
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, StreamingOutput]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ task_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, StreamingOutput]]:
+ r""" This method downloads the file previously uploaded using uploadFile. Specify the
+ task_id from the uploadFile call. Note: With respect to LMS, this method applies to all feed
+ types except LMS_ORDER_REPORT and LMS_ACTIVE_INVENTORY_REPORT. See LMS API Feeds in the Selling Integration
+ Guide.
+
+ Args:
+ task_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, StreamingOutput]]
+ """
+
+
+ kwargs = _get_kwargs(
+ task_id=task_id,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ task_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, StreamingOutput]]:
+ r""" This method downloads the file previously uploaded using uploadFile. Specify the
+ task_id from the uploadFile call. Note: With respect to LMS, this method applies to all feed
+ types except LMS_ORDER_REPORT and LMS_ACTIVE_INVENTORY_REPORT. See LMS API Feeds in the Selling Integration
+ Guide.
+
+ Args:
+ task_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, StreamingOutput]
+ """
+
+
+ return sync_detailed(
+ task_id=task_id,
+client=client,
+
+ ).parsed
+
+async def asyncio_detailed(
+ task_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, StreamingOutput]]:
+ r""" This method downloads the file previously uploaded using uploadFile. Specify the
+ task_id from the uploadFile call. Note: With respect to LMS, this method applies to all feed
+ types except LMS_ORDER_REPORT and LMS_ACTIVE_INVENTORY_REPORT. See LMS API Feeds in the Selling Integration
+ Guide.
+
+ Args:
+ task_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, StreamingOutput]]
+ """
+
+
+ kwargs = _get_kwargs(
+ task_id=task_id,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ task_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, StreamingOutput]]:
+ r""" This method downloads the file previously uploaded using uploadFile. Specify the
+ task_id from the uploadFile call. Note: With respect to LMS, this method applies to all feed
+ types except LMS_ORDER_REPORT and LMS_ACTIVE_INVENTORY_REPORT. See LMS API Feeds in the Selling Integration
+ Guide.
+
+ Args:
+ task_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, StreamingOutput]
+ """
+
+
+ return (await asyncio_detailed(
+ task_id=task_id,
+client=client,
+
+ )).parsed
diff --git a/ebay_client/generated/feed/api/task/get_result_file.py b/ebay_client/generated/feed/api/task/get_result_file.py
new file mode 100644
index 0000000..e13934b
--- /dev/null
+++ b/ebay_client/generated/feed/api/task/get_result_file.py
@@ -0,0 +1,208 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.streaming_output import StreamingOutput
+from typing import cast
+
+
+
+def _get_kwargs(
+ task_id: str,
+
+) -> dict[str, Any]:
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/task/{task_id}/download_result_file".format(task_id=task_id,),
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, StreamingOutput]]:
+ if response.status_code == 200:
+ response_200 = StreamingOutput.from_dict(response.content)
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 403:
+ response_403 = cast(Any, None)
+ return response_403
+ if response.status_code == 404:
+ response_404 = cast(Any, None)
+ return response_404
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, StreamingOutput]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ task_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, StreamingOutput]]:
+ r""" This method retrieves the generated file that is associated with the specified task ID. The response
+ of this call is a compressed or uncompressed CSV, XML, or JSON file, with the applicable file
+ extension (for example: csv.gz). For details about how this method is used, see Working with Order Feeds
+ in the Selling Integration Guide.
Note: The status
+ of the task to retrieve must be in the COMPLETED or COMPLETED_WITH_ERROR state before this method
+ can retrieve the file. You can use the getTask or getTasks method to retrieve the status of the
+ task.
+
+ Args:
+ task_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, StreamingOutput]]
+ """
+
+
+ kwargs = _get_kwargs(
+ task_id=task_id,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ task_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, StreamingOutput]]:
+ r""" This method retrieves the generated file that is associated with the specified task ID. The response
+ of this call is a compressed or uncompressed CSV, XML, or JSON file, with the applicable file
+ extension (for example: csv.gz). For details about how this method is used, see Working with Order Feeds
+ in the Selling Integration Guide.
Note: The status
+ of the task to retrieve must be in the COMPLETED or COMPLETED_WITH_ERROR state before this method
+ can retrieve the file. You can use the getTask or getTasks method to retrieve the status of the
+ task.
+
+ Args:
+ task_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, StreamingOutput]
+ """
+
+
+ return sync_detailed(
+ task_id=task_id,
+client=client,
+
+ ).parsed
+
+async def asyncio_detailed(
+ task_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, StreamingOutput]]:
+ r""" This method retrieves the generated file that is associated with the specified task ID. The response
+ of this call is a compressed or uncompressed CSV, XML, or JSON file, with the applicable file
+ extension (for example: csv.gz). For details about how this method is used, see Working with Order Feeds
+ in the Selling Integration Guide.
Note: The status
+ of the task to retrieve must be in the COMPLETED or COMPLETED_WITH_ERROR state before this method
+ can retrieve the file. You can use the getTask or getTasks method to retrieve the status of the
+ task.
+
+ Args:
+ task_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, StreamingOutput]]
+ """
+
+
+ kwargs = _get_kwargs(
+ task_id=task_id,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ task_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, StreamingOutput]]:
+ r""" This method retrieves the generated file that is associated with the specified task ID. The response
+ of this call is a compressed or uncompressed CSV, XML, or JSON file, with the applicable file
+ extension (for example: csv.gz). For details about how this method is used, see Working with Order Feeds
+ in the Selling Integration Guide.
Note: The status
+ of the task to retrieve must be in the COMPLETED or COMPLETED_WITH_ERROR state before this method
+ can retrieve the file. You can use the getTask or getTasks method to retrieve the status of the
+ task.
+
+ Args:
+ task_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, StreamingOutput]
+ """
+
+
+ return (await asyncio_detailed(
+ task_id=task_id,
+client=client,
+
+ )).parsed
diff --git a/ebay_client/generated/feed/api/task/get_task.py b/ebay_client/generated/feed/api/task/get_task.py
new file mode 100644
index 0000000..f594837
--- /dev/null
+++ b/ebay_client/generated/feed/api/task/get_task.py
@@ -0,0 +1,192 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.task import Task
+from typing import cast
+
+
+
+def _get_kwargs(
+ task_id: str,
+
+) -> dict[str, Any]:
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/task/{task_id}".format(task_id=task_id,),
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, Task]]:
+ if response.status_code == 200:
+ response_200 = Task.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 403:
+ response_403 = cast(Any, None)
+ return response_403
+ if response.status_code == 404:
+ response_404 = cast(Any, None)
+ return response_404
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, Task]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ task_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, Task]]:
+ r""" This method retrieves the details and status of the specified task. The input is
+ task_id.
For details of how this method is used, see Working with Order Feeds
+ in the Selling Integration Guide.
+
+ Args:
+ task_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, Task]]
+ """
+
+
+ kwargs = _get_kwargs(
+ task_id=task_id,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ task_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, Task]]:
+ r""" This method retrieves the details and status of the specified task. The input is
+ task_id.
For details of how this method is used, see Working with Order Feeds
+ in the Selling Integration Guide.
+
+ Args:
+ task_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, Task]
+ """
+
+
+ return sync_detailed(
+ task_id=task_id,
+client=client,
+
+ ).parsed
+
+async def asyncio_detailed(
+ task_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, Task]]:
+ r""" This method retrieves the details and status of the specified task. The input is
+ task_id.
For details of how this method is used, see Working with Order Feeds
+ in the Selling Integration Guide.
+
+ Args:
+ task_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, Task]]
+ """
+
+
+ kwargs = _get_kwargs(
+ task_id=task_id,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ task_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, Task]]:
+ r""" This method retrieves the details and status of the specified task. The input is
+ task_id.
For details of how this method is used, see Working with Order Feeds
+ in the Selling Integration Guide.
+
+ Args:
+ task_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, Task]
+ """
+
+
+ return (await asyncio_detailed(
+ task_id=task_id,
+client=client,
+
+ )).parsed
diff --git a/ebay_client/generated/feed/api/task/get_tasks.py b/ebay_client/generated/feed/api/task/get_tasks.py
new file mode 100644
index 0000000..f2fd1fd
--- /dev/null
+++ b/ebay_client/generated/feed/api/task/get_tasks.py
@@ -0,0 +1,302 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.task_collection import TaskCollection
+from ...types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+
+
+def _get_kwargs(
+ *,
+ date_range: Union[Unset, str] = UNSET,
+ feed_type: Union[Unset, str] = UNSET,
+ limit: Union[Unset, str] = UNSET,
+ look_back_days: Union[Unset, str] = UNSET,
+ offset: Union[Unset, str] = UNSET,
+ schedule_id: Union[Unset, str] = UNSET,
+
+) -> dict[str, Any]:
+
+
+
+
+ params: dict[str, Any] = {}
+
+ params["date_range"] = date_range
+
+ params["feed_type"] = feed_type
+
+ params["limit"] = limit
+
+ params["look_back_days"] = look_back_days
+
+ params["offset"] = offset
+
+ params["schedule_id"] = schedule_id
+
+
+ params = {k: v for k, v in params.items() if v is not UNSET and v is not None}
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/task",
+ "params": params,
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, TaskCollection]]:
+ if response.status_code == 200:
+ response_200 = TaskCollection.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 403:
+ response_403 = cast(Any, None)
+ return response_403
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, TaskCollection]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ *,
+ client: AuthenticatedClient,
+ date_range: Union[Unset, str] = UNSET,
+ feed_type: Union[Unset, str] = UNSET,
+ limit: Union[Unset, str] = UNSET,
+ look_back_days: Union[Unset, str] = UNSET,
+ offset: Union[Unset, str] = UNSET,
+ schedule_id: Union[Unset, str] = UNSET,
+
+) -> Response[Union[Any, TaskCollection]]:
+ """ This method returns the details and status for an array of tasks based on a specified
+ feed_type or schedule_id. Specifying both
+ feed_type and schedule_id results in an error. Since schedules are
+ based on feed types, you can specify a schedule (schedule_id) that returns the
+ needed feed_type.
If specifying the feed_type, limit
+ which tasks are returned by specifying filters, such as the creation date range or period of time
+ using look_back_days. Also, by specifying the feed_type, both on-
+ demand and scheduled reports are returned.
If specifying a schedule_id,
+ the schedule template (that the schedule ID is based on) determines which tasks are returned (see
+ schedule_id for additional information). Each scheduledId applies
+ to one feed_type.
+
+ Args:
+ date_range (Union[Unset, str]):
+ feed_type (Union[Unset, str]):
+ limit (Union[Unset, str]):
+ look_back_days (Union[Unset, str]):
+ offset (Union[Unset, str]):
+ schedule_id (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, TaskCollection]]
+ """
+
+
+ kwargs = _get_kwargs(
+ date_range=date_range,
+feed_type=feed_type,
+limit=limit,
+look_back_days=look_back_days,
+offset=offset,
+schedule_id=schedule_id,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ *,
+ client: AuthenticatedClient,
+ date_range: Union[Unset, str] = UNSET,
+ feed_type: Union[Unset, str] = UNSET,
+ limit: Union[Unset, str] = UNSET,
+ look_back_days: Union[Unset, str] = UNSET,
+ offset: Union[Unset, str] = UNSET,
+ schedule_id: Union[Unset, str] = UNSET,
+
+) -> Optional[Union[Any, TaskCollection]]:
+ """ This method returns the details and status for an array of tasks based on a specified
+ feed_type or schedule_id. Specifying both
+ feed_type and schedule_id results in an error. Since schedules are
+ based on feed types, you can specify a schedule (schedule_id) that returns the
+ needed feed_type.
If specifying the feed_type, limit
+ which tasks are returned by specifying filters, such as the creation date range or period of time
+ using look_back_days. Also, by specifying the feed_type, both on-
+ demand and scheduled reports are returned.
If specifying a schedule_id,
+ the schedule template (that the schedule ID is based on) determines which tasks are returned (see
+ schedule_id for additional information). Each scheduledId applies
+ to one feed_type.
+
+ Args:
+ date_range (Union[Unset, str]):
+ feed_type (Union[Unset, str]):
+ limit (Union[Unset, str]):
+ look_back_days (Union[Unset, str]):
+ offset (Union[Unset, str]):
+ schedule_id (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, TaskCollection]
+ """
+
+
+ return sync_detailed(
+ client=client,
+date_range=date_range,
+feed_type=feed_type,
+limit=limit,
+look_back_days=look_back_days,
+offset=offset,
+schedule_id=schedule_id,
+
+ ).parsed
+
+async def asyncio_detailed(
+ *,
+ client: AuthenticatedClient,
+ date_range: Union[Unset, str] = UNSET,
+ feed_type: Union[Unset, str] = UNSET,
+ limit: Union[Unset, str] = UNSET,
+ look_back_days: Union[Unset, str] = UNSET,
+ offset: Union[Unset, str] = UNSET,
+ schedule_id: Union[Unset, str] = UNSET,
+
+) -> Response[Union[Any, TaskCollection]]:
+ """ This method returns the details and status for an array of tasks based on a specified
+ feed_type or schedule_id. Specifying both
+ feed_type and schedule_id results in an error. Since schedules are
+ based on feed types, you can specify a schedule (schedule_id) that returns the
+ needed feed_type.
If specifying the feed_type, limit
+ which tasks are returned by specifying filters, such as the creation date range or period of time
+ using look_back_days. Also, by specifying the feed_type, both on-
+ demand and scheduled reports are returned.
If specifying a schedule_id,
+ the schedule template (that the schedule ID is based on) determines which tasks are returned (see
+ schedule_id for additional information). Each scheduledId applies
+ to one feed_type.
+
+ Args:
+ date_range (Union[Unset, str]):
+ feed_type (Union[Unset, str]):
+ limit (Union[Unset, str]):
+ look_back_days (Union[Unset, str]):
+ offset (Union[Unset, str]):
+ schedule_id (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, TaskCollection]]
+ """
+
+
+ kwargs = _get_kwargs(
+ date_range=date_range,
+feed_type=feed_type,
+limit=limit,
+look_back_days=look_back_days,
+offset=offset,
+schedule_id=schedule_id,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ *,
+ client: AuthenticatedClient,
+ date_range: Union[Unset, str] = UNSET,
+ feed_type: Union[Unset, str] = UNSET,
+ limit: Union[Unset, str] = UNSET,
+ look_back_days: Union[Unset, str] = UNSET,
+ offset: Union[Unset, str] = UNSET,
+ schedule_id: Union[Unset, str] = UNSET,
+
+) -> Optional[Union[Any, TaskCollection]]:
+ """ This method returns the details and status for an array of tasks based on a specified
+ feed_type or schedule_id. Specifying both
+ feed_type and schedule_id results in an error. Since schedules are
+ based on feed types, you can specify a schedule (schedule_id) that returns the
+ needed feed_type.
If specifying the feed_type, limit
+ which tasks are returned by specifying filters, such as the creation date range or period of time
+ using look_back_days. Also, by specifying the feed_type, both on-
+ demand and scheduled reports are returned.
If specifying a schedule_id,
+ the schedule template (that the schedule ID is based on) determines which tasks are returned (see
+ schedule_id for additional information). Each scheduledId applies
+ to one feed_type.
+
+ Args:
+ date_range (Union[Unset, str]):
+ feed_type (Union[Unset, str]):
+ limit (Union[Unset, str]):
+ look_back_days (Union[Unset, str]):
+ offset (Union[Unset, str]):
+ schedule_id (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, TaskCollection]
+ """
+
+
+ return (await asyncio_detailed(
+ client=client,
+date_range=date_range,
+feed_type=feed_type,
+limit=limit,
+look_back_days=look_back_days,
+offset=offset,
+schedule_id=schedule_id,
+
+ )).parsed
diff --git a/ebay_client/generated/feed/api/task/upload_file.py b/ebay_client/generated/feed/api/task/upload_file.py
new file mode 100644
index 0000000..7d1f284
--- /dev/null
+++ b/ebay_client/generated/feed/api/task/upload_file.py
@@ -0,0 +1,294 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.upload_file_response_200 import UploadFileResponse200
+from typing import cast
+
+
+
+def _get_kwargs(
+ task_id: str,
+ *,
+ content_type: str,
+
+) -> dict[str, Any]:
+ headers: dict[str, Any] = {}
+ headers["Content-Type"] = content_type
+
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "post",
+ "url": "/task/{task_id}/upload_file".format(task_id=task_id,),
+ }
+
+
+ _kwargs["headers"] = headers
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, UploadFileResponse200]]:
+ if response.status_code == 200:
+ response_200 = UploadFileResponse200.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 403:
+ response_403 = cast(Any, None)
+ return response_403
+ if response.status_code == 404:
+ response_404 = cast(Any, None)
+ return response_404
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, UploadFileResponse200]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ task_id: str,
+ *,
+ client: AuthenticatedClient,
+ content_type: str,
+
+) -> Response[Union[Any, UploadFileResponse200]]:
+ r""" This method associates the specified file with the specified task ID and uploads the input file.
+ After the file has been uploaded, the processing of the file begins.
Reports often take time
+ to generate and it's common for this method to return an HTTP status of 202, which indicates the
+ report is being generated. Use the getTask with the task ID or getTasks to determine
+ the status of a report.
The status flow is QUEUED > IN_PROCESS
+ > COMPLETED or COMPLETED_WITH_ERROR. When the status is
+ COMPLETED or COMPLETED_WITH_ERROR, this indicates the file has been
+ processed and the order report can be downloaded. If there are errors, they will be indicated in the
+ report file.
For details of how this method is used in the upload flow, see Working with
+ Order Feeds in the Selling Integration Guide.
This call does not have a JSON Request
+ payload but uploads the file as form-data. For example:
fileName:
+ "AddFixedPriceItem_Macbook.xml"
name: "file"
type: "form-
+ data"
file: @"/C:/Users/.../AddFixedPriceItem_Macbook.7z"
See Samples for
+ information.Note: This method applies to all Seller
+ Hub feed types, and to all LMS feed types except LMS_ORDER_REPORT
+ and LMS_ACTIVE_INVENTORY_REPORT.
Note:
+ You must use a Content-Type header with its value set to \"multipart/form-
+ data\". See Samples for
+ information.
Note: For LMS feed types, upload a
+ regular XML file or an XML file in zipped format (both formats are allowed).
+
+ Args:
+ task_id (str):
+ content_type (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, UploadFileResponse200]]
+ """
+
+
+ kwargs = _get_kwargs(
+ task_id=task_id,
+content_type=content_type,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ task_id: str,
+ *,
+ client: AuthenticatedClient,
+ content_type: str,
+
+) -> Optional[Union[Any, UploadFileResponse200]]:
+ r""" This method associates the specified file with the specified task ID and uploads the input file.
+ After the file has been uploaded, the processing of the file begins.
Reports often take time
+ to generate and it's common for this method to return an HTTP status of 202, which indicates the
+ report is being generated. Use the getTask with the task ID or getTasks to determine
+ the status of a report.
The status flow is QUEUED > IN_PROCESS
+ > COMPLETED or COMPLETED_WITH_ERROR. When the status is
+ COMPLETED or COMPLETED_WITH_ERROR, this indicates the file has been
+ processed and the order report can be downloaded. If there are errors, they will be indicated in the
+ report file.
For details of how this method is used in the upload flow, see Working with
+ Order Feeds in the Selling Integration Guide.
This call does not have a JSON Request
+ payload but uploads the file as form-data. For example:
fileName:
+ "AddFixedPriceItem_Macbook.xml"
name: "file"
type: "form-
+ data"
file: @"/C:/Users/.../AddFixedPriceItem_Macbook.7z"
See Samples for
+ information.Note: This method applies to all Seller
+ Hub feed types, and to all LMS feed types except LMS_ORDER_REPORT
+ and LMS_ACTIVE_INVENTORY_REPORT.
Note:
+ You must use a Content-Type header with its value set to \"multipart/form-
+ data\". See Samples for
+ information.
Note: For LMS feed types, upload a
+ regular XML file or an XML file in zipped format (both formats are allowed).
+
+ Args:
+ task_id (str):
+ content_type (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, UploadFileResponse200]
+ """
+
+
+ return sync_detailed(
+ task_id=task_id,
+client=client,
+content_type=content_type,
+
+ ).parsed
+
+async def asyncio_detailed(
+ task_id: str,
+ *,
+ client: AuthenticatedClient,
+ content_type: str,
+
+) -> Response[Union[Any, UploadFileResponse200]]:
+ r""" This method associates the specified file with the specified task ID and uploads the input file.
+ After the file has been uploaded, the processing of the file begins.
Reports often take time
+ to generate and it's common for this method to return an HTTP status of 202, which indicates the
+ report is being generated. Use the getTask with the task ID or getTasks to determine
+ the status of a report.
The status flow is QUEUED > IN_PROCESS
+ > COMPLETED or COMPLETED_WITH_ERROR. When the status is
+ COMPLETED or COMPLETED_WITH_ERROR, this indicates the file has been
+ processed and the order report can be downloaded. If there are errors, they will be indicated in the
+ report file.
For details of how this method is used in the upload flow, see Working with
+ Order Feeds in the Selling Integration Guide.
This call does not have a JSON Request
+ payload but uploads the file as form-data. For example:
fileName:
+ "AddFixedPriceItem_Macbook.xml"
name: "file"
type: "form-
+ data"
file: @"/C:/Users/.../AddFixedPriceItem_Macbook.7z"
See Samples for
+ information.Note: This method applies to all Seller
+ Hub feed types, and to all LMS feed types except LMS_ORDER_REPORT
+ and LMS_ACTIVE_INVENTORY_REPORT.
Note:
+ You must use a Content-Type header with its value set to \"multipart/form-
+ data\". See Samples for
+ information.
Note: For LMS feed types, upload a
+ regular XML file or an XML file in zipped format (both formats are allowed).
+
+ Args:
+ task_id (str):
+ content_type (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, UploadFileResponse200]]
+ """
+
+
+ kwargs = _get_kwargs(
+ task_id=task_id,
+content_type=content_type,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ task_id: str,
+ *,
+ client: AuthenticatedClient,
+ content_type: str,
+
+) -> Optional[Union[Any, UploadFileResponse200]]:
+ r""" This method associates the specified file with the specified task ID and uploads the input file.
+ After the file has been uploaded, the processing of the file begins.
Reports often take time
+ to generate and it's common for this method to return an HTTP status of 202, which indicates the
+ report is being generated. Use the getTask with the task ID or getTasks to determine
+ the status of a report.
The status flow is QUEUED > IN_PROCESS
+ > COMPLETED or COMPLETED_WITH_ERROR. When the status is
+ COMPLETED or COMPLETED_WITH_ERROR, this indicates the file has been
+ processed and the order report can be downloaded. If there are errors, they will be indicated in the
+ report file.
For details of how this method is used in the upload flow, see Working with
+ Order Feeds in the Selling Integration Guide.
This call does not have a JSON Request
+ payload but uploads the file as form-data. For example:
fileName:
+ "AddFixedPriceItem_Macbook.xml"
name: "file"
type: "form-
+ data"
file: @"/C:/Users/.../AddFixedPriceItem_Macbook.7z"
See Samples for
+ information.Note: This method applies to all Seller
+ Hub feed types, and to all LMS feed types except LMS_ORDER_REPORT
+ and LMS_ACTIVE_INVENTORY_REPORT.
Note:
+ You must use a Content-Type header with its value set to \"multipart/form-
+ data\". See Samples for
+ information.
Note: For LMS feed types, upload a
+ regular XML file or an XML file in zipped format (both formats are allowed).
+
+ Args:
+ task_id (str):
+ content_type (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, UploadFileResponse200]
+ """
+
+
+ return (await asyncio_detailed(
+ task_id=task_id,
+client=client,
+content_type=content_type,
+
+ )).parsed
diff --git a/ebay_client/generated/feed/client.py b/ebay_client/generated/feed/client.py
new file mode 100644
index 0000000..998cf0b
--- /dev/null
+++ b/ebay_client/generated/feed/client.py
@@ -0,0 +1,271 @@
+import ssl
+from typing import Any, Union, Optional
+
+from attrs import define, field, evolve
+import httpx
+
+
+
+
+
+@define
+class Client:
+ """A class for keeping track of data related to the API
+
+ The following are accepted as keyword arguments and will be used to construct httpx Clients internally:
+
+ ``base_url``: The base URL for the API, all requests are made to a relative path to this URL
+
+ ``cookies``: A dictionary of cookies to be sent with every request
+
+ ``headers``: A dictionary of headers to be sent with every request
+
+ ``timeout``: The maximum amount of a time a request can take. API functions will raise
+ httpx.TimeoutException if this is exceeded.
+
+ ``verify_ssl``: Whether or not to verify the SSL certificate of the API server. This should be True in production,
+ but can be set to False for testing purposes.
+
+ ``follow_redirects``: Whether or not to follow redirects. Default value is False.
+
+ ``httpx_args``: A dictionary of additional arguments to be passed to the ``httpx.Client`` and ``httpx.AsyncClient`` constructor.
+
+
+ Attributes:
+ raise_on_unexpected_status: Whether or not to raise an errors.UnexpectedStatus if the API returns a
+ status code that was not documented in the source OpenAPI document. Can also be provided as a keyword
+ argument to the constructor.
+ """
+ raise_on_unexpected_status: bool = field(default=False, kw_only=True)
+ _base_url: str = field(alias="base_url")
+ _cookies: dict[str, str] = field(factory=dict, kw_only=True, alias="cookies")
+ _headers: dict[str, str] = field(factory=dict, kw_only=True, alias="headers")
+ _timeout: Optional[httpx.Timeout] = field(default=None, kw_only=True, alias="timeout")
+ _verify_ssl: Union[str, bool, ssl.SSLContext] = field(default=True, kw_only=True, alias="verify_ssl")
+ _follow_redirects: bool = field(default=False, kw_only=True, alias="follow_redirects")
+ _httpx_args: dict[str, Any] = field(factory=dict, kw_only=True, alias="httpx_args")
+ _client: Optional[httpx.Client] = field(default=None, init=False)
+ _async_client: Optional[httpx.AsyncClient] = field(default=None, init=False)
+
+ def with_headers(self, headers: dict[str, str]) -> "Client":
+ """Get a new client matching this one with additional headers"""
+ if self._client is not None:
+ self._client.headers.update(headers)
+ if self._async_client is not None:
+ self._async_client.headers.update(headers)
+ return evolve(self, headers={**self._headers, **headers})
+
+ def with_cookies(self, cookies: dict[str, str]) -> "Client":
+ """Get a new client matching this one with additional cookies"""
+ if self._client is not None:
+ self._client.cookies.update(cookies)
+ if self._async_client is not None:
+ self._async_client.cookies.update(cookies)
+ return evolve(self, cookies={**self._cookies, **cookies})
+
+ def with_timeout(self, timeout: httpx.Timeout) -> "Client":
+ """Get a new client matching this one with a new timeout (in seconds)"""
+ if self._client is not None:
+ self._client.timeout = timeout
+ if self._async_client is not None:
+ self._async_client.timeout = timeout
+ return evolve(self, timeout=timeout)
+
+ def set_httpx_client(self, client: httpx.Client) -> "Client":
+ """Manually set the underlying httpx.Client
+
+ **NOTE**: This will override any other settings on the client, including cookies, headers, and timeout.
+ """
+ self._client = client
+ return self
+
+ def get_httpx_client(self) -> httpx.Client:
+ """Get the underlying httpx.Client, constructing a new one if not previously set"""
+ if self._client is None:
+ self._client = httpx.Client(
+ base_url=self._base_url,
+ cookies=self._cookies,
+ headers=self._headers,
+ timeout=self._timeout,
+ verify=self._verify_ssl,
+ follow_redirects=self._follow_redirects,
+ **self._httpx_args,
+ )
+ return self._client
+
+ def __enter__(self) -> "Client":
+ """Enter a context manager for self.client—you cannot enter twice (see httpx docs)"""
+ self.get_httpx_client().__enter__()
+ return self
+
+ def __exit__(self, *args: Any, **kwargs: Any) -> None:
+ """Exit a context manager for internal httpx.Client (see httpx docs)"""
+ self.get_httpx_client().__exit__(*args, **kwargs)
+
+ def set_async_httpx_client(self, async_client: httpx.AsyncClient) -> "Client":
+ """Manually the underlying httpx.AsyncClient
+
+ **NOTE**: This will override any other settings on the client, including cookies, headers, and timeout.
+ """
+ self._async_client = async_client
+ return self
+
+ def get_async_httpx_client(self) -> httpx.AsyncClient:
+ """Get the underlying httpx.AsyncClient, constructing a new one if not previously set"""
+ if self._async_client is None:
+ self._async_client = httpx.AsyncClient(
+ base_url=self._base_url,
+ cookies=self._cookies,
+ headers=self._headers,
+ timeout=self._timeout,
+ verify=self._verify_ssl,
+ follow_redirects=self._follow_redirects,
+ **self._httpx_args,
+ )
+ return self._async_client
+
+ async def __aenter__(self) -> "Client":
+ """Enter a context manager for underlying httpx.AsyncClient—you cannot enter twice (see httpx docs)"""
+ await self.get_async_httpx_client().__aenter__()
+ return self
+
+ async def __aexit__(self, *args: Any, **kwargs: Any) -> None:
+ """Exit a context manager for underlying httpx.AsyncClient (see httpx docs)"""
+ await self.get_async_httpx_client().__aexit__(*args, **kwargs)
+
+
+@define
+class AuthenticatedClient:
+ """A Client which has been authenticated for use on secured endpoints
+
+ The following are accepted as keyword arguments and will be used to construct httpx Clients internally:
+
+ ``base_url``: The base URL for the API, all requests are made to a relative path to this URL
+
+ ``cookies``: A dictionary of cookies to be sent with every request
+
+ ``headers``: A dictionary of headers to be sent with every request
+
+ ``timeout``: The maximum amount of a time a request can take. API functions will raise
+ httpx.TimeoutException if this is exceeded.
+
+ ``verify_ssl``: Whether or not to verify the SSL certificate of the API server. This should be True in production,
+ but can be set to False for testing purposes.
+
+ ``follow_redirects``: Whether or not to follow redirects. Default value is False.
+
+ ``httpx_args``: A dictionary of additional arguments to be passed to the ``httpx.Client`` and ``httpx.AsyncClient`` constructor.
+
+
+ Attributes:
+ raise_on_unexpected_status: Whether or not to raise an errors.UnexpectedStatus if the API returns a
+ status code that was not documented in the source OpenAPI document. Can also be provided as a keyword
+ argument to the constructor.
+ token: The token to use for authentication
+ prefix: The prefix to use for the Authorization header
+ auth_header_name: The name of the Authorization header
+ """
+
+ raise_on_unexpected_status: bool = field(default=False, kw_only=True)
+ _base_url: str = field(alias="base_url")
+ _cookies: dict[str, str] = field(factory=dict, kw_only=True, alias="cookies")
+ _headers: dict[str, str] = field(factory=dict, kw_only=True, alias="headers")
+ _timeout: Optional[httpx.Timeout] = field(default=None, kw_only=True, alias="timeout")
+ _verify_ssl: Union[str, bool, ssl.SSLContext] = field(default=True, kw_only=True, alias="verify_ssl")
+ _follow_redirects: bool = field(default=False, kw_only=True, alias="follow_redirects")
+ _httpx_args: dict[str, Any] = field(factory=dict, kw_only=True, alias="httpx_args")
+ _client: Optional[httpx.Client] = field(default=None, init=False)
+ _async_client: Optional[httpx.AsyncClient] = field(default=None, init=False)
+
+ token: str
+ prefix: str = "Bearer"
+ auth_header_name: str = "Authorization"
+
+ def with_headers(self, headers: dict[str, str]) -> "AuthenticatedClient":
+ """Get a new client matching this one with additional headers"""
+ if self._client is not None:
+ self._client.headers.update(headers)
+ if self._async_client is not None:
+ self._async_client.headers.update(headers)
+ return evolve(self, headers={**self._headers, **headers})
+
+ def with_cookies(self, cookies: dict[str, str]) -> "AuthenticatedClient":
+ """Get a new client matching this one with additional cookies"""
+ if self._client is not None:
+ self._client.cookies.update(cookies)
+ if self._async_client is not None:
+ self._async_client.cookies.update(cookies)
+ return evolve(self, cookies={**self._cookies, **cookies})
+
+ def with_timeout(self, timeout: httpx.Timeout) -> "AuthenticatedClient":
+ """Get a new client matching this one with a new timeout (in seconds)"""
+ if self._client is not None:
+ self._client.timeout = timeout
+ if self._async_client is not None:
+ self._async_client.timeout = timeout
+ return evolve(self, timeout=timeout)
+
+ def set_httpx_client(self, client: httpx.Client) -> "AuthenticatedClient":
+ """Manually set the underlying httpx.Client
+
+ **NOTE**: This will override any other settings on the client, including cookies, headers, and timeout.
+ """
+ self._client = client
+ return self
+
+ def get_httpx_client(self) -> httpx.Client:
+ """Get the underlying httpx.Client, constructing a new one if not previously set"""
+ if self._client is None:
+ self._headers[self.auth_header_name] = f"{self.prefix} {self.token}" if self.prefix else self.token
+ self._client = httpx.Client(
+ base_url=self._base_url,
+ cookies=self._cookies,
+ headers=self._headers,
+ timeout=self._timeout,
+ verify=self._verify_ssl,
+ follow_redirects=self._follow_redirects,
+ **self._httpx_args,
+ )
+ return self._client
+
+ def __enter__(self) -> "AuthenticatedClient":
+ """Enter a context manager for self.client—you cannot enter twice (see httpx docs)"""
+ self.get_httpx_client().__enter__()
+ return self
+
+ def __exit__(self, *args: Any, **kwargs: Any) -> None:
+ """Exit a context manager for internal httpx.Client (see httpx docs)"""
+ self.get_httpx_client().__exit__(*args, **kwargs)
+
+ def set_async_httpx_client(self, async_client: httpx.AsyncClient) -> "AuthenticatedClient":
+ """Manually the underlying httpx.AsyncClient
+
+ **NOTE**: This will override any other settings on the client, including cookies, headers, and timeout.
+ """
+ self._async_client = async_client
+ return self
+
+ def get_async_httpx_client(self) -> httpx.AsyncClient:
+ """Get the underlying httpx.AsyncClient, constructing a new one if not previously set"""
+ if self._async_client is None:
+ self._headers[self.auth_header_name] = f"{self.prefix} {self.token}" if self.prefix else self.token
+ self._async_client = httpx.AsyncClient(
+ base_url=self._base_url,
+ cookies=self._cookies,
+ headers=self._headers,
+ timeout=self._timeout,
+ verify=self._verify_ssl,
+ follow_redirects=self._follow_redirects,
+ **self._httpx_args,
+ )
+ return self._async_client
+
+ async def __aenter__(self) -> "AuthenticatedClient":
+ """Enter a context manager for underlying httpx.AsyncClient—you cannot enter twice (see httpx docs)"""
+ await self.get_async_httpx_client().__aenter__()
+ return self
+
+ async def __aexit__(self, *args: Any, **kwargs: Any) -> None:
+ """Exit a context manager for underlying httpx.AsyncClient (see httpx docs)"""
+ await self.get_async_httpx_client().__aexit__(*args, **kwargs)
+
diff --git a/ebay_client/generated/feed/errors.py b/ebay_client/generated/feed/errors.py
new file mode 100644
index 0000000..b912123
--- /dev/null
+++ b/ebay_client/generated/feed/errors.py
@@ -0,0 +1,14 @@
+""" Contains shared errors types that can be raised from API functions """
+
+class UnexpectedStatus(Exception):
+ """Raised by api functions when the response status an undocumented status and Client.raise_on_unexpected_status is True"""
+
+ def __init__(self, status_code: int, content: bytes):
+ self.status_code = status_code
+ self.content = content
+
+ super().__init__(
+ f"Unexpected status code: {status_code}\n\nResponse content:\n{content.decode(errors='ignore')}"
+ )
+
+__all__ = ["UnexpectedStatus"]
diff --git a/ebay_client/generated/feed/models/__init__.py b/ebay_client/generated/feed/models/__init__.py
new file mode 100644
index 0000000..3fdd435
--- /dev/null
+++ b/ebay_client/generated/feed/models/__init__.py
@@ -0,0 +1,63 @@
+""" Contains all the data models used in inputs/outputs """
+
+from .create_inventory_task_request import CreateInventoryTaskRequest
+from .create_order_task_request import CreateOrderTaskRequest
+from .create_schedule_response_201 import CreateScheduleResponse201
+from .create_service_metrics_task_request import CreateServiceMetricsTaskRequest
+from .create_task_request import CreateTaskRequest
+from .create_user_schedule_request import CreateUserScheduleRequest
+from .customer_service_metric_task_collection import CustomerServiceMetricTaskCollection
+from .customer_service_metrics_filter_criteria import CustomerServiceMetricsFilterCriteria
+from .date_range import DateRange
+from .error import Error
+from .error_parameter import ErrorParameter
+from .inventory_filter_criteria import InventoryFilterCriteria
+from .inventory_task import InventoryTask
+from .inventory_task_collection import InventoryTaskCollection
+from .order_filter_criteria import OrderFilterCriteria
+from .order_task import OrderTask
+from .order_task_collection import OrderTaskCollection
+from .schedule_template_collection import ScheduleTemplateCollection
+from .schedule_template_response import ScheduleTemplateResponse
+from .service_metrics_task import ServiceMetricsTask
+from .streaming_output import StreamingOutput
+from .supported_configuration import SupportedConfiguration
+from .task import Task
+from .task_collection import TaskCollection
+from .update_user_schedule_request import UpdateUserScheduleRequest
+from .upload_file_response_200 import UploadFileResponse200
+from .upload_summary import UploadSummary
+from .user_schedule_collection import UserScheduleCollection
+from .user_schedule_response import UserScheduleResponse
+
+__all__ = (
+ "CreateInventoryTaskRequest",
+ "CreateOrderTaskRequest",
+ "CreateScheduleResponse201",
+ "CreateServiceMetricsTaskRequest",
+ "CreateTaskRequest",
+ "CreateUserScheduleRequest",
+ "CustomerServiceMetricsFilterCriteria",
+ "CustomerServiceMetricTaskCollection",
+ "DateRange",
+ "Error",
+ "ErrorParameter",
+ "InventoryFilterCriteria",
+ "InventoryTask",
+ "InventoryTaskCollection",
+ "OrderFilterCriteria",
+ "OrderTask",
+ "OrderTaskCollection",
+ "ScheduleTemplateCollection",
+ "ScheduleTemplateResponse",
+ "ServiceMetricsTask",
+ "StreamingOutput",
+ "SupportedConfiguration",
+ "Task",
+ "TaskCollection",
+ "UpdateUserScheduleRequest",
+ "UploadFileResponse200",
+ "UploadSummary",
+ "UserScheduleCollection",
+ "UserScheduleResponse",
+)
diff --git a/ebay_client/generated/feed/models/create_inventory_task_request.py b/ebay_client/generated/feed/models/create_inventory_task_request.py
new file mode 100644
index 0000000..7a7155e
--- /dev/null
+++ b/ebay_client/generated/feed/models/create_inventory_task_request.py
@@ -0,0 +1,117 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.inventory_filter_criteria import InventoryFilterCriteria
+
+
+
+
+
+T = TypeVar("T", bound="CreateInventoryTaskRequest")
+
+
+
+@_attrs_define
+class CreateInventoryTaskRequest:
+ """ This type defines inventory-related download task request fields.
+
+ Attributes:
+ feed_type (Union[Unset, str]): The feed type associated with the inventory task you are about to create.
+ Presently, only one feed type is available:
LMS_ACTIVE_INVENTORY_REPORT
See Report download feed types for more information.
+ filter_criteria (Union[Unset, InventoryFilterCriteria]): This container is used to set the filter criteria for
+ the ActiveInventoryReport. A seller can create an ActiveInventoryReport for a single listing format.
+ schema_version (Union[Unset, str]): The version number of the inventory task to use for the
+ feedType.
Note: This field must have a value of
+ 1.0.
+ """
+
+ feed_type: Union[Unset, str] = UNSET
+ filter_criteria: Union[Unset, 'InventoryFilterCriteria'] = UNSET
+ schema_version: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.inventory_filter_criteria import InventoryFilterCriteria
+ feed_type = self.feed_type
+
+ filter_criteria: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.filter_criteria, Unset):
+ filter_criteria = self.filter_criteria.to_dict()
+
+ schema_version = self.schema_version
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if feed_type is not UNSET:
+ field_dict["feedType"] = feed_type
+ if filter_criteria is not UNSET:
+ field_dict["filterCriteria"] = filter_criteria
+ if schema_version is not UNSET:
+ field_dict["schemaVersion"] = schema_version
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.inventory_filter_criteria import InventoryFilterCriteria
+ d = dict(src_dict)
+ feed_type = d.pop("feedType", UNSET)
+
+ _filter_criteria = d.pop("filterCriteria", UNSET)
+ filter_criteria: Union[Unset, InventoryFilterCriteria]
+ if isinstance(_filter_criteria, Unset):
+ filter_criteria = UNSET
+ else:
+ filter_criteria = InventoryFilterCriteria.from_dict(_filter_criteria)
+
+
+
+
+ schema_version = d.pop("schemaVersion", UNSET)
+
+ create_inventory_task_request = cls(
+ feed_type=feed_type,
+ filter_criteria=filter_criteria,
+ schema_version=schema_version,
+ )
+
+
+ create_inventory_task_request.additional_properties = d
+ return create_inventory_task_request
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/feed/models/create_order_task_request.py b/ebay_client/generated/feed/models/create_order_task_request.py
new file mode 100644
index 0000000..67f15da
--- /dev/null
+++ b/ebay_client/generated/feed/models/create_order_task_request.py
@@ -0,0 +1,120 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.order_filter_criteria import OrderFilterCriteria
+
+
+
+
+
+T = TypeVar("T", bound="CreateOrderTaskRequest")
+
+
+
+@_attrs_define
+class CreateOrderTaskRequest:
+ """ The type that defines the fields for the createOrderTask request.
+
+ Attributes:
+ feed_type (Union[Unset, str]): The feed type associated with the task. The only presently supported value is
+ LMS_ORDER_REPORT.
See Report download feed types for
+ more information.
+ filter_criteria (Union[Unset, OrderFilterCriteria]): The type that defines the fields for the order filters.
+ schema_version (Union[Unset, str]): The schema version of the LMS OrderReport. For the
+ LMS_ORDER_REPORT feed type, see the OrderReport reference page to see the present schema version. The
+ schemaVersion value is the version number shown at the top of the OrderReport page.
Restriction: This value must be 1113 or higher. The OrderReport schema version is updated about every
+ two weeks. All version numbers are odd numbers (even numbers are skipped). For example, the next release version
+ after '1113' is '1115'.
+ """
+
+ feed_type: Union[Unset, str] = UNSET
+ filter_criteria: Union[Unset, 'OrderFilterCriteria'] = UNSET
+ schema_version: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.order_filter_criteria import OrderFilterCriteria
+ feed_type = self.feed_type
+
+ filter_criteria: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.filter_criteria, Unset):
+ filter_criteria = self.filter_criteria.to_dict()
+
+ schema_version = self.schema_version
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if feed_type is not UNSET:
+ field_dict["feedType"] = feed_type
+ if filter_criteria is not UNSET:
+ field_dict["filterCriteria"] = filter_criteria
+ if schema_version is not UNSET:
+ field_dict["schemaVersion"] = schema_version
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.order_filter_criteria import OrderFilterCriteria
+ d = dict(src_dict)
+ feed_type = d.pop("feedType", UNSET)
+
+ _filter_criteria = d.pop("filterCriteria", UNSET)
+ filter_criteria: Union[Unset, OrderFilterCriteria]
+ if isinstance(_filter_criteria, Unset):
+ filter_criteria = UNSET
+ else:
+ filter_criteria = OrderFilterCriteria.from_dict(_filter_criteria)
+
+
+
+
+ schema_version = d.pop("schemaVersion", UNSET)
+
+ create_order_task_request = cls(
+ feed_type=feed_type,
+ filter_criteria=filter_criteria,
+ schema_version=schema_version,
+ )
+
+
+ create_order_task_request.additional_properties = d
+ return create_order_task_request
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/feed/models/create_schedule_response_201.py b/ebay_client/generated/feed/models/create_schedule_response_201.py
new file mode 100644
index 0000000..b5aa21c
--- /dev/null
+++ b/ebay_client/generated/feed/models/create_schedule_response_201.py
@@ -0,0 +1,63 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+
+
+
+
+
+
+T = TypeVar("T", bound="CreateScheduleResponse201")
+
+
+
+@_attrs_define
+class CreateScheduleResponse201:
+ """
+ """
+
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ create_schedule_response_201 = cls(
+ )
+
+
+ create_schedule_response_201.additional_properties = d
+ return create_schedule_response_201
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/feed/models/create_service_metrics_task_request.py b/ebay_client/generated/feed/models/create_service_metrics_task_request.py
new file mode 100644
index 0000000..d2f14cc
--- /dev/null
+++ b/ebay_client/generated/feed/models/create_service_metrics_task_request.py
@@ -0,0 +1,115 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.customer_service_metrics_filter_criteria import CustomerServiceMetricsFilterCriteria
+
+
+
+
+
+T = TypeVar("T", bound="CreateServiceMetricsTaskRequest")
+
+
+
+@_attrs_define
+class CreateServiceMetricsTaskRequest:
+ """ The type that defines the fields for the Customer Service Metric reports generated with the Feed API.
+
+ Attributes:
+ feed_type (Union[Unset, str]): The feedType specified for the customer service metric task
+ being created. The report lists the transaction details that contribute to the service metrics evaluation.
+ Supported types include:CUSTOMER_SERVICE_METRICS_REPORT
+ filter_criteria (Union[Unset, CustomerServiceMetricsFilterCriteria]): A complex data type that filters data for
+ report creation. See CustomerServiceMetricsFilterCriteria for fields and descriptions.
+ schema_version (Union[Unset, str]): The version number of the customer service metric.
Note: This field must have a value of 1.0.
+ """
+
+ feed_type: Union[Unset, str] = UNSET
+ filter_criteria: Union[Unset, 'CustomerServiceMetricsFilterCriteria'] = UNSET
+ schema_version: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.customer_service_metrics_filter_criteria import CustomerServiceMetricsFilterCriteria
+ feed_type = self.feed_type
+
+ filter_criteria: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.filter_criteria, Unset):
+ filter_criteria = self.filter_criteria.to_dict()
+
+ schema_version = self.schema_version
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if feed_type is not UNSET:
+ field_dict["feedType"] = feed_type
+ if filter_criteria is not UNSET:
+ field_dict["filterCriteria"] = filter_criteria
+ if schema_version is not UNSET:
+ field_dict["schemaVersion"] = schema_version
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.customer_service_metrics_filter_criteria import CustomerServiceMetricsFilterCriteria
+ d = dict(src_dict)
+ feed_type = d.pop("feedType", UNSET)
+
+ _filter_criteria = d.pop("filterCriteria", UNSET)
+ filter_criteria: Union[Unset, CustomerServiceMetricsFilterCriteria]
+ if isinstance(_filter_criteria, Unset):
+ filter_criteria = UNSET
+ else:
+ filter_criteria = CustomerServiceMetricsFilterCriteria.from_dict(_filter_criteria)
+
+
+
+
+ schema_version = d.pop("schemaVersion", UNSET)
+
+ create_service_metrics_task_request = cls(
+ feed_type=feed_type,
+ filter_criteria=filter_criteria,
+ schema_version=schema_version,
+ )
+
+
+ create_service_metrics_task_request.additional_properties = d
+ return create_service_metrics_task_request
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/feed/models/create_task_request.py b/ebay_client/generated/feed/models/create_task_request.py
new file mode 100644
index 0000000..21ffaa3
--- /dev/null
+++ b/ebay_client/generated/feed/models/create_task_request.py
@@ -0,0 +1,95 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="CreateTaskRequest")
+
+
+
+@_attrs_define
+class CreateTaskRequest:
+ """ The type that defines the fields for the createTask method.
+
+ Attributes:
+ feed_type (Union[Unset, str]): The feed type associated with the task. Available feed types:
+ schema_version (Union[Unset, str]): The schemaVersion/version number of the file format:
+ """
+
+ feed_type: Union[Unset, str] = UNSET
+ schema_version: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ feed_type = self.feed_type
+
+ schema_version = self.schema_version
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if feed_type is not UNSET:
+ field_dict["feedType"] = feed_type
+ if schema_version is not UNSET:
+ field_dict["schemaVersion"] = schema_version
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ feed_type = d.pop("feedType", UNSET)
+
+ schema_version = d.pop("schemaVersion", UNSET)
+
+ create_task_request = cls(
+ feed_type=feed_type,
+ schema_version=schema_version,
+ )
+
+
+ create_task_request.additional_properties = d
+ return create_task_request
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/feed/models/create_user_schedule_request.py b/ebay_client/generated/feed/models/create_user_schedule_request.py
new file mode 100644
index 0000000..4939a3c
--- /dev/null
+++ b/ebay_client/generated/feed/models/create_user_schedule_request.py
@@ -0,0 +1,182 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="CreateUserScheduleRequest")
+
+
+
+@_attrs_define
+class CreateUserScheduleRequest:
+ """ The type that defines the fields for the createSchedule method.
+
+ Attributes:
+ feed_type (Union[Unset, str]): The name of the feed type for the created schedule.
Use the getScheduleTemplates method to
+ retrieve the feed type of a schedule template.
Note: Schedules are
+ currently only available for LMS_ORDER_REPORT.
+ preferred_trigger_day_of_month (Union[Unset, int]): The preferred day of the month to trigger the schedule. This
+ field can be used with preferredTriggerHour for monthly schedules. The last day of the month is
+ used for numbers larger than the actual number of days in the month.
This field is available as
+ specified by the template (scheduleTemplateId). The template can specify this field as optional
+ or required, and optionally provides a default value.
Minimum: 1
Maximum: 31
+ preferred_trigger_day_of_week (Union[Unset, str]): The preferred day of the week to trigger the schedule. This
+ field can be used with preferredTriggerHour for weekly schedules.
This field is
+ available as specified by the template (scheduleTemplateId). The template can specify this
+ field as optional or required, and optionally provides a default value. For implementation help, refer to eBay API documentation
+ preferred_trigger_hour (Union[Unset, str]): The preferred two-digit hour of the day to trigger the schedule.
This field is available as specified by the template (scheduleTemplateId). The template
+ can specify this field as optional or required, and optionally provides a default value.
Format: UTC hhZ
For example, the following represents 11:00 am UTC:
+ 11Z
+ schedule_end_date (Union[Unset, str]): The timestamp on which the report generation (subscription) ends. After
+ this date, the schedule status becomes INACTIVE.
Use this field, if available, to end
+ the schedule in the future. This value must be later than scheduleStartDate (if supplied). This
+ field is available as specified by the template (scheduleTemplateId). The template can specify
+ this field as optional or required, and optionally provides a default value.
Format: UTC
+ yyyy-MM-ddTHHZ
For example, the following represents
+ UTC October 10, 2021 at 10:00 AM:
2021-10-10T10Z
+ schedule_name (Union[Unset, str]): The schedule name assigned by the user for the created schedule.
+ schedule_start_date (Union[Unset, str]): The timestamp to start generating the report. After this timestamp, the
+ schedule status becomes active until either the scheduleEndDate occurs or the
+ scheduleTemplateId becomes inactive.
Use this field, if available, to start the
+ schedule in the future but before the scheduleEndDate (if supplied). This field is available as
+ specified by the template (scheduleTemplateId). The template can specify this field as optional
+ or required, and optionally provides a default value.
Format: UTC yyyy-MM-
+ ddTHHZ
For example, the following represents a schedule
+ start date of UTC October 01, 2020 at 12:00 PM:
2020-01-01T12Z
+ schedule_template_id (Union[Unset, str]): The unique identifier of the template to be used for this schedule.
+
Use the getScheduleTemplates method to retrieve the
+ schedule template ID. This method requires a schedule template ID that is ACTIVE.
Note: Schedules are currently only available for LMS_ORDER_REPORT.
+ schema_version (Union[Unset, str]): The schema version of a schedule.
+ """
+
+ feed_type: Union[Unset, str] = UNSET
+ preferred_trigger_day_of_month: Union[Unset, int] = UNSET
+ preferred_trigger_day_of_week: Union[Unset, str] = UNSET
+ preferred_trigger_hour: Union[Unset, str] = UNSET
+ schedule_end_date: Union[Unset, str] = UNSET
+ schedule_name: Union[Unset, str] = UNSET
+ schedule_start_date: Union[Unset, str] = UNSET
+ schedule_template_id: Union[Unset, str] = UNSET
+ schema_version: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ feed_type = self.feed_type
+
+ preferred_trigger_day_of_month = self.preferred_trigger_day_of_month
+
+ preferred_trigger_day_of_week = self.preferred_trigger_day_of_week
+
+ preferred_trigger_hour = self.preferred_trigger_hour
+
+ schedule_end_date = self.schedule_end_date
+
+ schedule_name = self.schedule_name
+
+ schedule_start_date = self.schedule_start_date
+
+ schedule_template_id = self.schedule_template_id
+
+ schema_version = self.schema_version
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if feed_type is not UNSET:
+ field_dict["feedType"] = feed_type
+ if preferred_trigger_day_of_month is not UNSET:
+ field_dict["preferredTriggerDayOfMonth"] = preferred_trigger_day_of_month
+ if preferred_trigger_day_of_week is not UNSET:
+ field_dict["preferredTriggerDayOfWeek"] = preferred_trigger_day_of_week
+ if preferred_trigger_hour is not UNSET:
+ field_dict["preferredTriggerHour"] = preferred_trigger_hour
+ if schedule_end_date is not UNSET:
+ field_dict["scheduleEndDate"] = schedule_end_date
+ if schedule_name is not UNSET:
+ field_dict["scheduleName"] = schedule_name
+ if schedule_start_date is not UNSET:
+ field_dict["scheduleStartDate"] = schedule_start_date
+ if schedule_template_id is not UNSET:
+ field_dict["scheduleTemplateId"] = schedule_template_id
+ if schema_version is not UNSET:
+ field_dict["schemaVersion"] = schema_version
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ feed_type = d.pop("feedType", UNSET)
+
+ preferred_trigger_day_of_month = d.pop("preferredTriggerDayOfMonth", UNSET)
+
+ preferred_trigger_day_of_week = d.pop("preferredTriggerDayOfWeek", UNSET)
+
+ preferred_trigger_hour = d.pop("preferredTriggerHour", UNSET)
+
+ schedule_end_date = d.pop("scheduleEndDate", UNSET)
+
+ schedule_name = d.pop("scheduleName", UNSET)
+
+ schedule_start_date = d.pop("scheduleStartDate", UNSET)
+
+ schedule_template_id = d.pop("scheduleTemplateId", UNSET)
+
+ schema_version = d.pop("schemaVersion", UNSET)
+
+ create_user_schedule_request = cls(
+ feed_type=feed_type,
+ preferred_trigger_day_of_month=preferred_trigger_day_of_month,
+ preferred_trigger_day_of_week=preferred_trigger_day_of_week,
+ preferred_trigger_hour=preferred_trigger_hour,
+ schedule_end_date=schedule_end_date,
+ schedule_name=schedule_name,
+ schedule_start_date=schedule_start_date,
+ schedule_template_id=schedule_template_id,
+ schema_version=schema_version,
+ )
+
+
+ create_user_schedule_request.additional_properties = d
+ return create_user_schedule_request
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/feed/models/customer_service_metric_task_collection.py b/ebay_client/generated/feed/models/customer_service_metric_task_collection.py
new file mode 100644
index 0000000..2c5f8c2
--- /dev/null
+++ b/ebay_client/generated/feed/models/customer_service_metric_task_collection.py
@@ -0,0 +1,168 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.service_metrics_task import ServiceMetricsTask
+
+
+
+
+
+T = TypeVar("T", bound="CustomerServiceMetricTaskCollection")
+
+
+
+@_attrs_define
+class CustomerServiceMetricTaskCollection:
+ """ This type defines customer service metric task response fields.
+
+ Attributes:
+ href (Union[Unset, str]): The URI of the current page of results.
+ limit (Union[Unset, int]): The value of the limit parameter submitted in the request, which is
+ the maximum number of tasks to return per page, from the result set. A result set is the complete set of tasks
+ returned by the method. Note: Even though this parameter is not
+ required to be submitted in the request, the parameter defaults to 10 if omitted.
Note: If this is the last or only page of the result set, the page may
+ contain fewer tasks than the limit value. To determine the number of pages in a result set, divide the total
+ value (total number of tasks matching input criteria) by this limit value, and then round up to the next
+ integer. For example, if the total value was 120 (120 total tasks) and the
+ limit value was 50 (show 50 tasks per page), the total number of pages in the
+ result set is three, so the seller would have to make three separate
+ getCustomerServiceMetricTasks calls to view all tasks matching the input criteria.
+ next_ (Union[Unset, str]): The relative path to the call URI for the next page of results. This value is
+ returned if there is an additional page of results to return from the result set.
+ offset (Union[Unset, int]): The number of results skipped in the result set before returning the first result.
+ This value can be set in the request with the offset query parameter. Note:
+ The items in a paginated result set use a zero-based list where the first item in the list has an
+ offset of 0.
+ prev (Union[Unset, str]): The URI for the previous page of results. This parameter is returned if a previous
+ page of results from the result set exists.
+ tasks (Union[Unset, list['ServiceMetricsTask']]): An array of the customer service tasks on this page. The tasks
+ are sorted by creation date. An empty array is returned if the filter criteria excludes all tasks.
+ total (Union[Unset, int]): The total number of tasks that match the criteria.
+ """
+
+ href: Union[Unset, str] = UNSET
+ limit: Union[Unset, int] = UNSET
+ next_: Union[Unset, str] = UNSET
+ offset: Union[Unset, int] = UNSET
+ prev: Union[Unset, str] = UNSET
+ tasks: Union[Unset, list['ServiceMetricsTask']] = UNSET
+ total: Union[Unset, int] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.service_metrics_task import ServiceMetricsTask
+ href = self.href
+
+ limit = self.limit
+
+ next_ = self.next_
+
+ offset = self.offset
+
+ prev = self.prev
+
+ tasks: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.tasks, Unset):
+ tasks = []
+ for tasks_item_data in self.tasks:
+ tasks_item = tasks_item_data.to_dict()
+ tasks.append(tasks_item)
+
+
+
+ total = self.total
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if href is not UNSET:
+ field_dict["href"] = href
+ if limit is not UNSET:
+ field_dict["limit"] = limit
+ if next_ is not UNSET:
+ field_dict["next"] = next_
+ if offset is not UNSET:
+ field_dict["offset"] = offset
+ if prev is not UNSET:
+ field_dict["prev"] = prev
+ if tasks is not UNSET:
+ field_dict["tasks"] = tasks
+ if total is not UNSET:
+ field_dict["total"] = total
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.service_metrics_task import ServiceMetricsTask
+ d = dict(src_dict)
+ href = d.pop("href", UNSET)
+
+ limit = d.pop("limit", UNSET)
+
+ next_ = d.pop("next", UNSET)
+
+ offset = d.pop("offset", UNSET)
+
+ prev = d.pop("prev", UNSET)
+
+ tasks = []
+ _tasks = d.pop("tasks", UNSET)
+ for tasks_item_data in (_tasks or []):
+ tasks_item = ServiceMetricsTask.from_dict(tasks_item_data)
+
+
+
+ tasks.append(tasks_item)
+
+
+ total = d.pop("total", UNSET)
+
+ customer_service_metric_task_collection = cls(
+ href=href,
+ limit=limit,
+ next_=next_,
+ offset=offset,
+ prev=prev,
+ tasks=tasks,
+ total=total,
+ )
+
+
+ customer_service_metric_task_collection.additional_properties = d
+ return customer_service_metric_task_collection
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/feed/models/customer_service_metrics_filter_criteria.py b/ebay_client/generated/feed/models/customer_service_metrics_filter_criteria.py
new file mode 100644
index 0000000..d20a5e6
--- /dev/null
+++ b/ebay_client/generated/feed/models/customer_service_metrics_filter_criteria.py
@@ -0,0 +1,134 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="CustomerServiceMetricsFilterCriteria")
+
+
+
+@_attrs_define
+class CustomerServiceMetricsFilterCriteria:
+ """ A complex data type that filters data for report creation. See CustomerServiceMetricsFilterCriteria
+ for fields and descriptions.
+
+ Attributes:
+ customer_service_metric_type (Union[Unset, str]): An enumeration value that specifies the customer service
+ metric that eBay tracks to measure seller performance.
See CustomerServiceMetricTypeEnum for values. For
+ implementation help, refer to eBay API documentation
+ evaluation_marketplace_id (Union[Unset, str]): An enumeration value that specifies the eBay marketplace where
+ the evaluation occurs.
See MarketplaceIdEnum for values. For implementation help, refer to
+ eBay API documentation
+ listing_categories (Union[Unset, list[str]]): A list of listing category IDs on which the service metric is
+ measured. A seller can use one or more L1 (top-level) eBay categories to get metrics specific to those L1
+ categories. The Category IDs for each L1 category are required. Category ID values for L1 categories can be
+ retrieved using the Taxonomy API. Note: Pass this attribute to
+ narrow down your filter results for the ITEM_NOT_AS_DESCRIBED customerServiceMetricType.
+ Supported categories include:
primary(L1) category Id
+ shipping_regions (Union[Unset, list[str]]): A list of shipping region enumeration values on which the service
+ metric is measured. This comma delimited array allows the seller to customize the report to focus on domestic or
+ international shipping. Note: Pass this attribute to narrow down
+ your filter results for the ITEM_NOT_RECEIVED customerServiceMetricType.
Supported
+ categories include:
primary(L1) category Id
See ShippingRegionTypeEnum
+ for values
+ """
+
+ customer_service_metric_type: Union[Unset, str] = UNSET
+ evaluation_marketplace_id: Union[Unset, str] = UNSET
+ listing_categories: Union[Unset, list[str]] = UNSET
+ shipping_regions: Union[Unset, list[str]] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ customer_service_metric_type = self.customer_service_metric_type
+
+ evaluation_marketplace_id = self.evaluation_marketplace_id
+
+ listing_categories: Union[Unset, list[str]] = UNSET
+ if not isinstance(self.listing_categories, Unset):
+ listing_categories = self.listing_categories
+
+
+
+ shipping_regions: Union[Unset, list[str]] = UNSET
+ if not isinstance(self.shipping_regions, Unset):
+ shipping_regions = self.shipping_regions
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if customer_service_metric_type is not UNSET:
+ field_dict["customerServiceMetricType"] = customer_service_metric_type
+ if evaluation_marketplace_id is not UNSET:
+ field_dict["evaluationMarketplaceId"] = evaluation_marketplace_id
+ if listing_categories is not UNSET:
+ field_dict["listingCategories"] = listing_categories
+ if shipping_regions is not UNSET:
+ field_dict["shippingRegions"] = shipping_regions
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ customer_service_metric_type = d.pop("customerServiceMetricType", UNSET)
+
+ evaluation_marketplace_id = d.pop("evaluationMarketplaceId", UNSET)
+
+ listing_categories = cast(list[str], d.pop("listingCategories", UNSET))
+
+
+ shipping_regions = cast(list[str], d.pop("shippingRegions", UNSET))
+
+
+ customer_service_metrics_filter_criteria = cls(
+ customer_service_metric_type=customer_service_metric_type,
+ evaluation_marketplace_id=evaluation_marketplace_id,
+ listing_categories=listing_categories,
+ shipping_regions=shipping_regions,
+ )
+
+
+ customer_service_metrics_filter_criteria.additional_properties = d
+ return customer_service_metrics_filter_criteria
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/feed/models/date_range.py b/ebay_client/generated/feed/models/date_range.py
new file mode 100644
index 0000000..4abf878
--- /dev/null
+++ b/ebay_client/generated/feed/models/date_range.py
@@ -0,0 +1,95 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="DateRange")
+
+
+
+@_attrs_define
+class DateRange:
+ """ The type that defines the fields for a date range.
+
+ Attributes:
+ from_ (Union[Unset, str]): The beginning date in the range. If the parent type is included, both the
+ from and/or the to fields become conditionally required.
Format:
+ UTC yyyy-MM-ddThh:mm:ss.SSSZ
For example: Tasks within a range
+ yyyy-MM-ddThh:mm:ss.SSSZ..yyyy-MM-ddThh:mm:ss.SSSZ
Tasks created on March 31, 2021
+
2021-03-31T00:00:00.000Z..2021-03-31T00:00:00.000Z
+ to (Union[Unset, str]): The end date for the date range, which is inclusive. If the parent type is included,
+ both the from and/or the to fields become conditionally required.
For example:
Tasks within a range
yyyy-MM-ddThh:mm:ss.SSSZ..yyyy-MM-
+ ddThh:mm:ss.SSSZ
Tasks created on March 31, 2021
+ 2021-03-31T00:00:00.000Z..2021-03-31T00:00:00.000Z
+ """
+
+ from_: Union[Unset, str] = UNSET
+ to: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from_ = self.from_
+
+ to = self.to
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if from_ is not UNSET:
+ field_dict["from"] = from_
+ if to is not UNSET:
+ field_dict["to"] = to
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ from_ = d.pop("from", UNSET)
+
+ to = d.pop("to", UNSET)
+
+ date_range = cls(
+ from_=from_,
+ to=to,
+ )
+
+
+ date_range.additional_properties = d
+ return date_range
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/feed/models/error.py b/ebay_client/generated/feed/models/error.py
new file mode 100644
index 0000000..d648d93
--- /dev/null
+++ b/ebay_client/generated/feed/models/error.py
@@ -0,0 +1,184 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.error_parameter import ErrorParameter
+
+
+
+
+
+T = TypeVar("T", bound="Error")
+
+
+
+@_attrs_define
+class Error:
+ """ This type defines the fields that can be returned in an error.
+
+ Attributes:
+ category (Union[Unset, str]): Identifies the type of erro.
+ domain (Union[Unset, str]): Name for the primary system where the error occurred. This is relevant for
+ application errors.
+ error_id (Union[Unset, int]): A unique number to identify the error.
+ input_ref_ids (Union[Unset, list[str]]): An array of request elements most closely associated to the error.
+ long_message (Union[Unset, str]): A more detailed explanation of the error.
+ message (Union[Unset, str]): Information on how to correct the problem, in the end user's terms and language
+ where applicable.
+ output_ref_ids (Union[Unset, list[str]]): An array of request elements most closely associated to the error.
+ parameters (Union[Unset, list['ErrorParameter']]): An array of name/value pairs that describe details the error
+ condition. These are useful when multiple errors are returned.
+ subdomain (Union[Unset, str]): Further helps indicate which subsystem the error is coming from. System
+ subcategories include: Initialization, Serialization, Security, Monitoring, Rate Limiting, etc.
+ """
+
+ category: Union[Unset, str] = UNSET
+ domain: Union[Unset, str] = UNSET
+ error_id: Union[Unset, int] = UNSET
+ input_ref_ids: Union[Unset, list[str]] = UNSET
+ long_message: Union[Unset, str] = UNSET
+ message: Union[Unset, str] = UNSET
+ output_ref_ids: Union[Unset, list[str]] = UNSET
+ parameters: Union[Unset, list['ErrorParameter']] = UNSET
+ subdomain: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.error_parameter import ErrorParameter
+ category = self.category
+
+ domain = self.domain
+
+ error_id = self.error_id
+
+ input_ref_ids: Union[Unset, list[str]] = UNSET
+ if not isinstance(self.input_ref_ids, Unset):
+ input_ref_ids = self.input_ref_ids
+
+
+
+ long_message = self.long_message
+
+ message = self.message
+
+ output_ref_ids: Union[Unset, list[str]] = UNSET
+ if not isinstance(self.output_ref_ids, Unset):
+ output_ref_ids = self.output_ref_ids
+
+
+
+ parameters: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.parameters, Unset):
+ parameters = []
+ for parameters_item_data in self.parameters:
+ parameters_item = parameters_item_data.to_dict()
+ parameters.append(parameters_item)
+
+
+
+ subdomain = self.subdomain
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if category is not UNSET:
+ field_dict["category"] = category
+ if domain is not UNSET:
+ field_dict["domain"] = domain
+ if error_id is not UNSET:
+ field_dict["errorId"] = error_id
+ if input_ref_ids is not UNSET:
+ field_dict["inputRefIds"] = input_ref_ids
+ if long_message is not UNSET:
+ field_dict["longMessage"] = long_message
+ if message is not UNSET:
+ field_dict["message"] = message
+ if output_ref_ids is not UNSET:
+ field_dict["outputRefIds"] = output_ref_ids
+ if parameters is not UNSET:
+ field_dict["parameters"] = parameters
+ if subdomain is not UNSET:
+ field_dict["subdomain"] = subdomain
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.error_parameter import ErrorParameter
+ d = dict(src_dict)
+ category = d.pop("category", UNSET)
+
+ domain = d.pop("domain", UNSET)
+
+ error_id = d.pop("errorId", UNSET)
+
+ input_ref_ids = cast(list[str], d.pop("inputRefIds", UNSET))
+
+
+ long_message = d.pop("longMessage", UNSET)
+
+ message = d.pop("message", UNSET)
+
+ output_ref_ids = cast(list[str], d.pop("outputRefIds", UNSET))
+
+
+ parameters = []
+ _parameters = d.pop("parameters", UNSET)
+ for parameters_item_data in (_parameters or []):
+ parameters_item = ErrorParameter.from_dict(parameters_item_data)
+
+
+
+ parameters.append(parameters_item)
+
+
+ subdomain = d.pop("subdomain", UNSET)
+
+ error = cls(
+ category=category,
+ domain=domain,
+ error_id=error_id,
+ input_ref_ids=input_ref_ids,
+ long_message=long_message,
+ message=message,
+ output_ref_ids=output_ref_ids,
+ parameters=parameters,
+ subdomain=subdomain,
+ )
+
+
+ error.additional_properties = d
+ return error
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/feed/models/error_parameter.py b/ebay_client/generated/feed/models/error_parameter.py
new file mode 100644
index 0000000..cf52861
--- /dev/null
+++ b/ebay_client/generated/feed/models/error_parameter.py
@@ -0,0 +1,86 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="ErrorParameter")
+
+
+
+@_attrs_define
+class ErrorParameter:
+ """
+ Attributes:
+ name (Union[Unset, str]): The object of the error.
+ value (Union[Unset, str]): The value of the object.
+ """
+
+ name: Union[Unset, str] = UNSET
+ value: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ name = self.name
+
+ value = self.value
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if name is not UNSET:
+ field_dict["name"] = name
+ if value is not UNSET:
+ field_dict["value"] = value
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ name = d.pop("name", UNSET)
+
+ value = d.pop("value", UNSET)
+
+ error_parameter = cls(
+ name=name,
+ value=value,
+ )
+
+
+ error_parameter.additional_properties = d
+ return error_parameter
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/feed/models/inventory_filter_criteria.py b/ebay_client/generated/feed/models/inventory_filter_criteria.py
new file mode 100644
index 0000000..457180e
--- /dev/null
+++ b/ebay_client/generated/feed/models/inventory_filter_criteria.py
@@ -0,0 +1,82 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="InventoryFilterCriteria")
+
+
+
+@_attrs_define
+class InventoryFilterCriteria:
+ """ This container is used to set the filter criteria for the ActiveInventoryReport. A seller can create an
+ ActiveInventoryReport for a single listing format.
+
+ Attributes:
+ listing_format (Union[Unset, str]): The listing format for the ActiveInventoryReport being created. Supported
+ types are:
For implementation help,
+ refer to eBay API
+ documentation
+ """
+
+ listing_format: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ listing_format = self.listing_format
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if listing_format is not UNSET:
+ field_dict["listingFormat"] = listing_format
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ listing_format = d.pop("listingFormat", UNSET)
+
+ inventory_filter_criteria = cls(
+ listing_format=listing_format,
+ )
+
+
+ inventory_filter_criteria.additional_properties = d
+ return inventory_filter_criteria
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/feed/models/inventory_task.py b/ebay_client/generated/feed/models/inventory_task.py
new file mode 100644
index 0000000..cae06bd
--- /dev/null
+++ b/ebay_client/generated/feed/models/inventory_task.py
@@ -0,0 +1,185 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.upload_summary import UploadSummary
+ from ..models.inventory_filter_criteria import InventoryFilterCriteria
+
+
+
+
+
+T = TypeVar("T", bound="InventoryTask")
+
+
+
+@_attrs_define
+class InventoryTask:
+ """
+ Attributes:
+ task_id (Union[Unset, str]): The ID of the task. This ID is generated when the task was created by the
+ createInventoryTask method.
+ status (Union[Unset, str]): The status of the task. Users must wait until status is complete before moving on to
+ the next step (such as uploading/downloading a file). For implementation help, refer to eBay API documentation
+ feed_type (Union[Unset, str]): The feed type associated with the inventory task.
+ creation_date (Union[Unset, str]): The date the task was created.
+ completion_date (Union[Unset, str]): The timestamp when the task status went into the
+ COMPLETED, COMPLETED_WITH_ERROR, or PARTIALLY_PROCESSED state. This field
+ is only returned if the status is one of the three completed values.
+ schema_version (Union[Unset, str]): The schema version number associated with the task.
+ detail_href (Union[Unset, str]): The path to the call URI used to retrieve the task. This field points to the
+ getInventoryTask URI.
+ upload_summary (Union[Unset, UploadSummary]): This container provides summary information on an upload feed (not
+ applicable for download feed types).
+ filter_criteria (Union[Unset, InventoryFilterCriteria]): This container is used to set the filter criteria for
+ the ActiveInventoryReport. A seller can create an ActiveInventoryReport for a single listing format.
+ """
+
+ task_id: Union[Unset, str] = UNSET
+ status: Union[Unset, str] = UNSET
+ feed_type: Union[Unset, str] = UNSET
+ creation_date: Union[Unset, str] = UNSET
+ completion_date: Union[Unset, str] = UNSET
+ schema_version: Union[Unset, str] = UNSET
+ detail_href: Union[Unset, str] = UNSET
+ upload_summary: Union[Unset, 'UploadSummary'] = UNSET
+ filter_criteria: Union[Unset, 'InventoryFilterCriteria'] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.upload_summary import UploadSummary
+ from ..models.inventory_filter_criteria import InventoryFilterCriteria
+ task_id = self.task_id
+
+ status = self.status
+
+ feed_type = self.feed_type
+
+ creation_date = self.creation_date
+
+ completion_date = self.completion_date
+
+ schema_version = self.schema_version
+
+ detail_href = self.detail_href
+
+ upload_summary: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.upload_summary, Unset):
+ upload_summary = self.upload_summary.to_dict()
+
+ filter_criteria: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.filter_criteria, Unset):
+ filter_criteria = self.filter_criteria.to_dict()
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if task_id is not UNSET:
+ field_dict["taskId"] = task_id
+ if status is not UNSET:
+ field_dict["status"] = status
+ if feed_type is not UNSET:
+ field_dict["feedType"] = feed_type
+ if creation_date is not UNSET:
+ field_dict["creationDate"] = creation_date
+ if completion_date is not UNSET:
+ field_dict["completionDate"] = completion_date
+ if schema_version is not UNSET:
+ field_dict["schemaVersion"] = schema_version
+ if detail_href is not UNSET:
+ field_dict["detailHref"] = detail_href
+ if upload_summary is not UNSET:
+ field_dict["uploadSummary"] = upload_summary
+ if filter_criteria is not UNSET:
+ field_dict["filterCriteria"] = filter_criteria
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.upload_summary import UploadSummary
+ from ..models.inventory_filter_criteria import InventoryFilterCriteria
+ d = dict(src_dict)
+ task_id = d.pop("taskId", UNSET)
+
+ status = d.pop("status", UNSET)
+
+ feed_type = d.pop("feedType", UNSET)
+
+ creation_date = d.pop("creationDate", UNSET)
+
+ completion_date = d.pop("completionDate", UNSET)
+
+ schema_version = d.pop("schemaVersion", UNSET)
+
+ detail_href = d.pop("detailHref", UNSET)
+
+ _upload_summary = d.pop("uploadSummary", UNSET)
+ upload_summary: Union[Unset, UploadSummary]
+ if isinstance(_upload_summary, Unset):
+ upload_summary = UNSET
+ else:
+ upload_summary = UploadSummary.from_dict(_upload_summary)
+
+
+
+
+ _filter_criteria = d.pop("filterCriteria", UNSET)
+ filter_criteria: Union[Unset, InventoryFilterCriteria]
+ if isinstance(_filter_criteria, Unset):
+ filter_criteria = UNSET
+ else:
+ filter_criteria = InventoryFilterCriteria.from_dict(_filter_criteria)
+
+
+
+
+ inventory_task = cls(
+ task_id=task_id,
+ status=status,
+ feed_type=feed_type,
+ creation_date=creation_date,
+ completion_date=completion_date,
+ schema_version=schema_version,
+ detail_href=detail_href,
+ upload_summary=upload_summary,
+ filter_criteria=filter_criteria,
+ )
+
+
+ inventory_task.additional_properties = d
+ return inventory_task
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/feed/models/inventory_task_collection.py b/ebay_client/generated/feed/models/inventory_task_collection.py
new file mode 100644
index 0000000..c925ea4
--- /dev/null
+++ b/ebay_client/generated/feed/models/inventory_task_collection.py
@@ -0,0 +1,168 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.inventory_task import InventoryTask
+
+
+
+
+
+T = TypeVar("T", bound="InventoryTaskCollection")
+
+
+
+@_attrs_define
+class InventoryTaskCollection:
+ """
+ Attributes:
+ href (Union[Unset, str]): The path to the call URI that produced the current page of results.
+ limit (Union[Unset, int]): The value of the limit parameter submitted in the request, which is
+ the maximum number of inventory tasks to return per page, from the result set. A result set is the complete set
+ of tasks returned by the method.
Note: Though this parameter
+ is not required to be submitted in the request, the parameter defaults to 10 if omitted.
+ Additionally, if this is the last or only page of the result set, the page may contain fewer tasks than the
+ limit value submitted in the request.
To determine the number of pages in a
+ result set, divide the total value (total number of tasks matching the input criteria) by this limit value, and
+ then round up to the next integer. For example, if the total value was 120 (120
+ total tasks) and the limit value was 50 (show 50 tasks per page), the total number
+ of pages in the result set is three, so the seller would have to make three separate
+ getInventoryTasks calls to view all tasks matching the input criteria.
+ next_ (Union[Unset, str]): The path to the call URI for the next page of results. This value is returned if
+ there is an additional page of results to return from the result set.
+ offset (Union[Unset, int]): The number of results skipped in the result set before listing the first returned
+ result. This value can be specified in the request with the offset query parameter.
Note: The items in a paginated result set use a zero-based list,
+ where the first item in the list has an offset of 0.
+ prev (Union[Unset, str]): The path to the call URI for the previous page of results. This is returned if there
+ is a previous page of results from the result set.
+ tasks (Union[Unset, list['InventoryTask']]): An array of the inventory tasks on this page. The tasks are sorted
+ by creation date.
Note: An empty array is returned if the
+ filter criteria excludes all tasks.
+ total (Union[Unset, int]): The total number of inventory tasks that match the input criteria.
+ """
+
+ href: Union[Unset, str] = UNSET
+ limit: Union[Unset, int] = UNSET
+ next_: Union[Unset, str] = UNSET
+ offset: Union[Unset, int] = UNSET
+ prev: Union[Unset, str] = UNSET
+ tasks: Union[Unset, list['InventoryTask']] = UNSET
+ total: Union[Unset, int] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.inventory_task import InventoryTask
+ href = self.href
+
+ limit = self.limit
+
+ next_ = self.next_
+
+ offset = self.offset
+
+ prev = self.prev
+
+ tasks: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.tasks, Unset):
+ tasks = []
+ for tasks_item_data in self.tasks:
+ tasks_item = tasks_item_data.to_dict()
+ tasks.append(tasks_item)
+
+
+
+ total = self.total
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if href is not UNSET:
+ field_dict["href"] = href
+ if limit is not UNSET:
+ field_dict["limit"] = limit
+ if next_ is not UNSET:
+ field_dict["next"] = next_
+ if offset is not UNSET:
+ field_dict["offset"] = offset
+ if prev is not UNSET:
+ field_dict["prev"] = prev
+ if tasks is not UNSET:
+ field_dict["tasks"] = tasks
+ if total is not UNSET:
+ field_dict["total"] = total
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.inventory_task import InventoryTask
+ d = dict(src_dict)
+ href = d.pop("href", UNSET)
+
+ limit = d.pop("limit", UNSET)
+
+ next_ = d.pop("next", UNSET)
+
+ offset = d.pop("offset", UNSET)
+
+ prev = d.pop("prev", UNSET)
+
+ tasks = []
+ _tasks = d.pop("tasks", UNSET)
+ for tasks_item_data in (_tasks or []):
+ tasks_item = InventoryTask.from_dict(tasks_item_data)
+
+
+
+ tasks.append(tasks_item)
+
+
+ total = d.pop("total", UNSET)
+
+ inventory_task_collection = cls(
+ href=href,
+ limit=limit,
+ next_=next_,
+ offset=offset,
+ prev=prev,
+ tasks=tasks,
+ total=total,
+ )
+
+
+ inventory_task_collection.additional_properties = d
+ return inventory_task_collection
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/feed/models/order_filter_criteria.py b/ebay_client/generated/feed/models/order_filter_criteria.py
new file mode 100644
index 0000000..4045ede
--- /dev/null
+++ b/ebay_client/generated/feed/models/order_filter_criteria.py
@@ -0,0 +1,124 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.date_range import DateRange
+
+
+
+
+
+T = TypeVar("T", bound="OrderFilterCriteria")
+
+
+
+@_attrs_define
+class OrderFilterCriteria:
+ """ The type that defines the fields for the order filters.
+
+ Attributes:
+ creation_date_range (Union[Unset, DateRange]): The type that defines the fields for a date range.
+ modified_date_range (Union[Unset, DateRange]): The type that defines the fields for a date range.
+ order_status (Union[Unset, str]): The order status of the orders returned. If the filter is omitted from
+ createOrderTask call, orders that are in both ACTIVE and COMPLETED states are
+ returned. For implementation help, refer to eBay API documentation
+ """
+
+ creation_date_range: Union[Unset, 'DateRange'] = UNSET
+ modified_date_range: Union[Unset, 'DateRange'] = UNSET
+ order_status: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.date_range import DateRange
+ creation_date_range: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.creation_date_range, Unset):
+ creation_date_range = self.creation_date_range.to_dict()
+
+ modified_date_range: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.modified_date_range, Unset):
+ modified_date_range = self.modified_date_range.to_dict()
+
+ order_status = self.order_status
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if creation_date_range is not UNSET:
+ field_dict["creationDateRange"] = creation_date_range
+ if modified_date_range is not UNSET:
+ field_dict["modifiedDateRange"] = modified_date_range
+ if order_status is not UNSET:
+ field_dict["orderStatus"] = order_status
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.date_range import DateRange
+ d = dict(src_dict)
+ _creation_date_range = d.pop("creationDateRange", UNSET)
+ creation_date_range: Union[Unset, DateRange]
+ if isinstance(_creation_date_range, Unset):
+ creation_date_range = UNSET
+ else:
+ creation_date_range = DateRange.from_dict(_creation_date_range)
+
+
+
+
+ _modified_date_range = d.pop("modifiedDateRange", UNSET)
+ modified_date_range: Union[Unset, DateRange]
+ if isinstance(_modified_date_range, Unset):
+ modified_date_range = UNSET
+ else:
+ modified_date_range = DateRange.from_dict(_modified_date_range)
+
+
+
+
+ order_status = d.pop("orderStatus", UNSET)
+
+ order_filter_criteria = cls(
+ creation_date_range=creation_date_range,
+ modified_date_range=modified_date_range,
+ order_status=order_status,
+ )
+
+
+ order_filter_criteria.additional_properties = d
+ return order_filter_criteria
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/feed/models/order_task.py b/ebay_client/generated/feed/models/order_task.py
new file mode 100644
index 0000000..402c3e4
--- /dev/null
+++ b/ebay_client/generated/feed/models/order_task.py
@@ -0,0 +1,186 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.order_filter_criteria import OrderFilterCriteria
+ from ..models.upload_summary import UploadSummary
+
+
+
+
+
+T = TypeVar("T", bound="OrderTask")
+
+
+
+@_attrs_define
+class OrderTask:
+ """ The type that defines the fields for the getOrderTask response.
+
+ Attributes:
+ completion_date (Union[Unset, str]): The timestamp when the task went into the COMPLETED or
+ COMPLETED_WITH_ERROR state. This state means that eBay has compiled the report for the seller based
+ on the seller’s filter criteria, and the seller can run a getResultFile call to download the
+ report.
+ creation_date (Union[Unset, str]): The date the task was created.
+ detail_href (Union[Unset, str]): The path to the call URI used to retrieve the task.
+ feed_type (Union[Unset, str]): The feed type associated with the task.
+ filter_criteria (Union[Unset, OrderFilterCriteria]): The type that defines the fields for the order filters.
+ schema_version (Union[Unset, str]): The schema version number associated with the create task.
+ status (Union[Unset, str]): The enumeration value that indicates the state of the task that was submitted in the
+ request. See FeedStatusEnum for information. The values COMPLETED and
+ COMPLETED_WITH_ERROR indicate the Order Report file is ready to download.
For implementation help,
+ refer to eBay API
+ documentation
+ task_id (Union[Unset, str]): The ID of the task that was submitted in the request.
+ upload_summary (Union[Unset, UploadSummary]): This container provides summary information on an upload feed (not
+ applicable for download feed types).
+ """
+
+ completion_date: Union[Unset, str] = UNSET
+ creation_date: Union[Unset, str] = UNSET
+ detail_href: Union[Unset, str] = UNSET
+ feed_type: Union[Unset, str] = UNSET
+ filter_criteria: Union[Unset, 'OrderFilterCriteria'] = UNSET
+ schema_version: Union[Unset, str] = UNSET
+ status: Union[Unset, str] = UNSET
+ task_id: Union[Unset, str] = UNSET
+ upload_summary: Union[Unset, 'UploadSummary'] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.order_filter_criteria import OrderFilterCriteria
+ from ..models.upload_summary import UploadSummary
+ completion_date = self.completion_date
+
+ creation_date = self.creation_date
+
+ detail_href = self.detail_href
+
+ feed_type = self.feed_type
+
+ filter_criteria: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.filter_criteria, Unset):
+ filter_criteria = self.filter_criteria.to_dict()
+
+ schema_version = self.schema_version
+
+ status = self.status
+
+ task_id = self.task_id
+
+ upload_summary: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.upload_summary, Unset):
+ upload_summary = self.upload_summary.to_dict()
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if completion_date is not UNSET:
+ field_dict["completionDate"] = completion_date
+ if creation_date is not UNSET:
+ field_dict["creationDate"] = creation_date
+ if detail_href is not UNSET:
+ field_dict["detailHref"] = detail_href
+ if feed_type is not UNSET:
+ field_dict["feedType"] = feed_type
+ if filter_criteria is not UNSET:
+ field_dict["filterCriteria"] = filter_criteria
+ if schema_version is not UNSET:
+ field_dict["schemaVersion"] = schema_version
+ if status is not UNSET:
+ field_dict["status"] = status
+ if task_id is not UNSET:
+ field_dict["taskId"] = task_id
+ if upload_summary is not UNSET:
+ field_dict["uploadSummary"] = upload_summary
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.order_filter_criteria import OrderFilterCriteria
+ from ..models.upload_summary import UploadSummary
+ d = dict(src_dict)
+ completion_date = d.pop("completionDate", UNSET)
+
+ creation_date = d.pop("creationDate", UNSET)
+
+ detail_href = d.pop("detailHref", UNSET)
+
+ feed_type = d.pop("feedType", UNSET)
+
+ _filter_criteria = d.pop("filterCriteria", UNSET)
+ filter_criteria: Union[Unset, OrderFilterCriteria]
+ if isinstance(_filter_criteria, Unset):
+ filter_criteria = UNSET
+ else:
+ filter_criteria = OrderFilterCriteria.from_dict(_filter_criteria)
+
+
+
+
+ schema_version = d.pop("schemaVersion", UNSET)
+
+ status = d.pop("status", UNSET)
+
+ task_id = d.pop("taskId", UNSET)
+
+ _upload_summary = d.pop("uploadSummary", UNSET)
+ upload_summary: Union[Unset, UploadSummary]
+ if isinstance(_upload_summary, Unset):
+ upload_summary = UNSET
+ else:
+ upload_summary = UploadSummary.from_dict(_upload_summary)
+
+
+
+
+ order_task = cls(
+ completion_date=completion_date,
+ creation_date=creation_date,
+ detail_href=detail_href,
+ feed_type=feed_type,
+ filter_criteria=filter_criteria,
+ schema_version=schema_version,
+ status=status,
+ task_id=task_id,
+ upload_summary=upload_summary,
+ )
+
+
+ order_task.additional_properties = d
+ return order_task
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/feed/models/order_task_collection.py b/ebay_client/generated/feed/models/order_task_collection.py
new file mode 100644
index 0000000..b0571bb
--- /dev/null
+++ b/ebay_client/generated/feed/models/order_task_collection.py
@@ -0,0 +1,169 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.order_task import OrderTask
+
+
+
+
+
+T = TypeVar("T", bound="OrderTaskCollection")
+
+
+
+@_attrs_define
+class OrderTaskCollection:
+ """ The type that defines the fields for a paginated result set of orders. The response consists of 0 or more sequenced
+ pages where each page has 0 or more items.
+
+ Attributes:
+ href (Union[Unset, str]): The path to the call URI that produced the current page of results.
+ limit (Union[Unset, int]): The value of the limit parameter submitted in the request, which is
+ the maximum number of order tasks to return per page, from the result set. A result set is the complete set of
+ tasks returned by the method. Note: Though this parameter is not
+ required to be submitted in the request, the parameter defaults to 10 if omitted.
+ Note: If this is the last or only page of the result set, the page may
+ contain fewer tasks than the limit value. To determine the number of pages in a result set,
+ divide the total value (total number of tasks matching input criteria) by this limit value, and then round up to
+ the next integer. For example, if the total value was 120 (120 total tasks) and
+ the limit value was 50 (show 50 tasks per page), the total number of pages in the
+ result set is three, so the seller would have to make three separate getOrderTasks calls to
+ view all tasks matching the input criteria.
+ next_ (Union[Unset, str]): The path to the call URI for the next page of results. This value is returned if
+ there is an additional page of results to return from the result set.
+ offset (Union[Unset, int]): The number of results skipped in the result set before listing the first returned
+ result. This value can be set in the request with the offset query parameter. Note: The items in a paginated result set use a zero-based list where the
+ first item in the list has an offset of 0.
+ prev (Union[Unset, str]): The path to the call URI for the previous page of results. This is returned if there
+ is a previous page of results from the result set.
+ tasks (Union[Unset, list['OrderTask']]): An array of the order tasks on this page. The tasks are sorted by
+ creation date. An empty array is returned if the filter criteria excludes all tasks.
+ total (Union[Unset, int]): The total number of order tasks that match the input criteria.
+ """
+
+ href: Union[Unset, str] = UNSET
+ limit: Union[Unset, int] = UNSET
+ next_: Union[Unset, str] = UNSET
+ offset: Union[Unset, int] = UNSET
+ prev: Union[Unset, str] = UNSET
+ tasks: Union[Unset, list['OrderTask']] = UNSET
+ total: Union[Unset, int] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.order_task import OrderTask
+ href = self.href
+
+ limit = self.limit
+
+ next_ = self.next_
+
+ offset = self.offset
+
+ prev = self.prev
+
+ tasks: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.tasks, Unset):
+ tasks = []
+ for tasks_item_data in self.tasks:
+ tasks_item = tasks_item_data.to_dict()
+ tasks.append(tasks_item)
+
+
+
+ total = self.total
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if href is not UNSET:
+ field_dict["href"] = href
+ if limit is not UNSET:
+ field_dict["limit"] = limit
+ if next_ is not UNSET:
+ field_dict["next"] = next_
+ if offset is not UNSET:
+ field_dict["offset"] = offset
+ if prev is not UNSET:
+ field_dict["prev"] = prev
+ if tasks is not UNSET:
+ field_dict["tasks"] = tasks
+ if total is not UNSET:
+ field_dict["total"] = total
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.order_task import OrderTask
+ d = dict(src_dict)
+ href = d.pop("href", UNSET)
+
+ limit = d.pop("limit", UNSET)
+
+ next_ = d.pop("next", UNSET)
+
+ offset = d.pop("offset", UNSET)
+
+ prev = d.pop("prev", UNSET)
+
+ tasks = []
+ _tasks = d.pop("tasks", UNSET)
+ for tasks_item_data in (_tasks or []):
+ tasks_item = OrderTask.from_dict(tasks_item_data)
+
+
+
+ tasks.append(tasks_item)
+
+
+ total = d.pop("total", UNSET)
+
+ order_task_collection = cls(
+ href=href,
+ limit=limit,
+ next_=next_,
+ offset=offset,
+ prev=prev,
+ tasks=tasks,
+ total=total,
+ )
+
+
+ order_task_collection.additional_properties = d
+ return order_task_collection
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/feed/models/schedule_template_collection.py b/ebay_client/generated/feed/models/schedule_template_collection.py
new file mode 100644
index 0000000..5d42f0f
--- /dev/null
+++ b/ebay_client/generated/feed/models/schedule_template_collection.py
@@ -0,0 +1,169 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.schedule_template_response import ScheduleTemplateResponse
+
+
+
+
+
+T = TypeVar("T", bound="ScheduleTemplateCollection")
+
+
+
+@_attrs_define
+class ScheduleTemplateCollection:
+ """ The type that defines the fields for a paginated result set of schedule templates. The response consists of 0 or
+ more sequenced pages where each page has 0 or more items.
+
+ Attributes:
+ href (Union[Unset, str]): The path to the call URI that produced the current page of results.
+ limit (Union[Unset, int]): The value of the limit parameter submitted in the request, which is
+ the maximum number of schedule templates to return per page, from the result set. A result set is the complete
+ set of schedule templates returned by the method. Note: Though this
+ parameter is not required to be submitted in the request, the parameter defaults to 10 if omitted.
+ Note: If this is the last or only page of the result set, the page may
+ contain fewer tasks than the limit value. To determine the number of pages in a result set,
+ divide the total value (total number of tasks matching input criteria) by this limit value, and then round up to
+ the next integer. For example, if the total value was 120 (120 total tasks) and
+ the limit value was 50 (show 50 tasks per page), the total number of pages in the
+ result set is three, so the seller would have to make three separate getScheduleTemplates calls
+ to view all tasks matching the input criteria.
+ next_ (Union[Unset, str]): The path to the call URI for the next page of results. This value is returned if
+ there is an additional page of results to return from the result set.
+ offset (Union[Unset, int]): The number of results skipped in the result set before listing the first returned
+ result. This value can be set in the request with the offset query parameter. Note: The items in a paginated result set use a zero-based list where the
+ first item in the list has an offset of 0.
+ prev (Union[Unset, str]): The path to the call URI for the previous page of results. This is returned if there
+ is a previous page of results from the result set.
+ schedule_templates (Union[Unset, list['ScheduleTemplateResponse']]): An array of the schedule templates on this
+ page. An empty array is returned if the filter criteria excludes all tasks.
+ total (Union[Unset, int]): The total number of schedule templates that match the input criteria.
+ """
+
+ href: Union[Unset, str] = UNSET
+ limit: Union[Unset, int] = UNSET
+ next_: Union[Unset, str] = UNSET
+ offset: Union[Unset, int] = UNSET
+ prev: Union[Unset, str] = UNSET
+ schedule_templates: Union[Unset, list['ScheduleTemplateResponse']] = UNSET
+ total: Union[Unset, int] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.schedule_template_response import ScheduleTemplateResponse
+ href = self.href
+
+ limit = self.limit
+
+ next_ = self.next_
+
+ offset = self.offset
+
+ prev = self.prev
+
+ schedule_templates: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.schedule_templates, Unset):
+ schedule_templates = []
+ for schedule_templates_item_data in self.schedule_templates:
+ schedule_templates_item = schedule_templates_item_data.to_dict()
+ schedule_templates.append(schedule_templates_item)
+
+
+
+ total = self.total
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if href is not UNSET:
+ field_dict["href"] = href
+ if limit is not UNSET:
+ field_dict["limit"] = limit
+ if next_ is not UNSET:
+ field_dict["next"] = next_
+ if offset is not UNSET:
+ field_dict["offset"] = offset
+ if prev is not UNSET:
+ field_dict["prev"] = prev
+ if schedule_templates is not UNSET:
+ field_dict["scheduleTemplates"] = schedule_templates
+ if total is not UNSET:
+ field_dict["total"] = total
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.schedule_template_response import ScheduleTemplateResponse
+ d = dict(src_dict)
+ href = d.pop("href", UNSET)
+
+ limit = d.pop("limit", UNSET)
+
+ next_ = d.pop("next", UNSET)
+
+ offset = d.pop("offset", UNSET)
+
+ prev = d.pop("prev", UNSET)
+
+ schedule_templates = []
+ _schedule_templates = d.pop("scheduleTemplates", UNSET)
+ for schedule_templates_item_data in (_schedule_templates or []):
+ schedule_templates_item = ScheduleTemplateResponse.from_dict(schedule_templates_item_data)
+
+
+
+ schedule_templates.append(schedule_templates_item)
+
+
+ total = d.pop("total", UNSET)
+
+ schedule_template_collection = cls(
+ href=href,
+ limit=limit,
+ next_=next_,
+ offset=offset,
+ prev=prev,
+ schedule_templates=schedule_templates,
+ total=total,
+ )
+
+
+ schedule_template_collection.additional_properties = d
+ return schedule_template_collection
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/feed/models/schedule_template_response.py b/ebay_client/generated/feed/models/schedule_template_response.py
new file mode 100644
index 0000000..079ced9
--- /dev/null
+++ b/ebay_client/generated/feed/models/schedule_template_response.py
@@ -0,0 +1,154 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.supported_configuration import SupportedConfiguration
+
+
+
+
+
+T = TypeVar("T", bound="ScheduleTemplateResponse")
+
+
+
+@_attrs_define
+class ScheduleTemplateResponse:
+ """ The type that defines the fields for a paginated result set of available schedule templates. The response consists
+ of 0 or more sequenced pages where each page has 0 or more items.
+
+ Attributes:
+ feed_type (Union[Unset, str]): The feed type of the schedule template. Note: When calling createSchedule and
+ updateSchedule methods you must match the feed type specified by the schedule template (this
+ feedType).
+ frequency (Union[Unset, str]): This field specifies how often the schedule is generated. If set to
+ HALF_HOUR or ONE_HOUR, you cannot set a preferredTriggerHour using
+ createSchedule or updateSchedule. For implementation help, refer to eBay API documentation
+ name (Union[Unset, str]): The template name provided by the template.
+ schedule_template_id (Union[Unset, str]): The ID of the template. Use this ID to create a schedule based on the
+ properties of this schedule template.
+ status (Union[Unset, str]): The present status of the template. You cannot create or modify a schedule using a
+ template with an INACTIVE status. For implementation help, refer to eBay API documentation
+ supported_configurations (Union[Unset, list['SupportedConfiguration']]): An array of the configuration supported
+ by this template.
+ """
+
+ feed_type: Union[Unset, str] = UNSET
+ frequency: Union[Unset, str] = UNSET
+ name: Union[Unset, str] = UNSET
+ schedule_template_id: Union[Unset, str] = UNSET
+ status: Union[Unset, str] = UNSET
+ supported_configurations: Union[Unset, list['SupportedConfiguration']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.supported_configuration import SupportedConfiguration
+ feed_type = self.feed_type
+
+ frequency = self.frequency
+
+ name = self.name
+
+ schedule_template_id = self.schedule_template_id
+
+ status = self.status
+
+ supported_configurations: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.supported_configurations, Unset):
+ supported_configurations = []
+ for supported_configurations_item_data in self.supported_configurations:
+ supported_configurations_item = supported_configurations_item_data.to_dict()
+ supported_configurations.append(supported_configurations_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if feed_type is not UNSET:
+ field_dict["feedType"] = feed_type
+ if frequency is not UNSET:
+ field_dict["frequency"] = frequency
+ if name is not UNSET:
+ field_dict["name"] = name
+ if schedule_template_id is not UNSET:
+ field_dict["scheduleTemplateId"] = schedule_template_id
+ if status is not UNSET:
+ field_dict["status"] = status
+ if supported_configurations is not UNSET:
+ field_dict["supportedConfigurations"] = supported_configurations
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.supported_configuration import SupportedConfiguration
+ d = dict(src_dict)
+ feed_type = d.pop("feedType", UNSET)
+
+ frequency = d.pop("frequency", UNSET)
+
+ name = d.pop("name", UNSET)
+
+ schedule_template_id = d.pop("scheduleTemplateId", UNSET)
+
+ status = d.pop("status", UNSET)
+
+ supported_configurations = []
+ _supported_configurations = d.pop("supportedConfigurations", UNSET)
+ for supported_configurations_item_data in (_supported_configurations or []):
+ supported_configurations_item = SupportedConfiguration.from_dict(supported_configurations_item_data)
+
+
+
+ supported_configurations.append(supported_configurations_item)
+
+
+ schedule_template_response = cls(
+ feed_type=feed_type,
+ frequency=frequency,
+ name=name,
+ schedule_template_id=schedule_template_id,
+ status=status,
+ supported_configurations=supported_configurations,
+ )
+
+
+ schedule_template_response.additional_properties = d
+ return schedule_template_response
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/feed/models/service_metrics_task.py b/ebay_client/generated/feed/models/service_metrics_task.py
new file mode 100644
index 0000000..603c940
--- /dev/null
+++ b/ebay_client/generated/feed/models/service_metrics_task.py
@@ -0,0 +1,164 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.customer_service_metrics_filter_criteria import CustomerServiceMetricsFilterCriteria
+
+
+
+
+
+T = TypeVar("T", bound="ServiceMetricsTask")
+
+
+
+@_attrs_define
+class ServiceMetricsTask:
+ """ This type defines customer service metric task response fields.
+
+ Attributes:
+ completion_date (Union[Unset, str]): The timestamp when the customer service metrics task went into the
+ COMPLETED or COMPLETED_WITH_ERROR state. This field is only returned if the status is
+ one of the two completed values. This state means that eBay has compiled the report for the seller based on the
+ seller’s filter criteria, and the seller can run a getResultFile call to download the report.
+ creation_date (Union[Unset, str]): The date the customer service metrics task was created.
+ detail_href (Union[Unset, str]): The relative getCustomerServiceMetricTask call URI path to
+ retrieve the corresponding task.
+ feed_type (Union[Unset, str]): The feed type associated with the task.
+ filter_criteria (Union[Unset, CustomerServiceMetricsFilterCriteria]): A complex data type that filters data for
+ report creation. See CustomerServiceMetricsFilterCriteria for fields and descriptions.
+ schema_version (Union[Unset, str]): The schema version number of the file format. If omitted, the default value
+ is used. Default value: 1.0
+ status (Union[Unset, str]): An enumeration value that indicates the state of the task. See
+ FeedStatusEnum for values. For implementation help, refer to eBay API documentation
+ task_id (Union[Unset, str]): The unique eBay-assigned ID of the task.
+ """
+
+ completion_date: Union[Unset, str] = UNSET
+ creation_date: Union[Unset, str] = UNSET
+ detail_href: Union[Unset, str] = UNSET
+ feed_type: Union[Unset, str] = UNSET
+ filter_criteria: Union[Unset, 'CustomerServiceMetricsFilterCriteria'] = UNSET
+ schema_version: Union[Unset, str] = UNSET
+ status: Union[Unset, str] = UNSET
+ task_id: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.customer_service_metrics_filter_criteria import CustomerServiceMetricsFilterCriteria
+ completion_date = self.completion_date
+
+ creation_date = self.creation_date
+
+ detail_href = self.detail_href
+
+ feed_type = self.feed_type
+
+ filter_criteria: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.filter_criteria, Unset):
+ filter_criteria = self.filter_criteria.to_dict()
+
+ schema_version = self.schema_version
+
+ status = self.status
+
+ task_id = self.task_id
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if completion_date is not UNSET:
+ field_dict["completionDate"] = completion_date
+ if creation_date is not UNSET:
+ field_dict["creationDate"] = creation_date
+ if detail_href is not UNSET:
+ field_dict["detailHref"] = detail_href
+ if feed_type is not UNSET:
+ field_dict["feedType"] = feed_type
+ if filter_criteria is not UNSET:
+ field_dict["filterCriteria"] = filter_criteria
+ if schema_version is not UNSET:
+ field_dict["schemaVersion"] = schema_version
+ if status is not UNSET:
+ field_dict["status"] = status
+ if task_id is not UNSET:
+ field_dict["taskId"] = task_id
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.customer_service_metrics_filter_criteria import CustomerServiceMetricsFilterCriteria
+ d = dict(src_dict)
+ completion_date = d.pop("completionDate", UNSET)
+
+ creation_date = d.pop("creationDate", UNSET)
+
+ detail_href = d.pop("detailHref", UNSET)
+
+ feed_type = d.pop("feedType", UNSET)
+
+ _filter_criteria = d.pop("filterCriteria", UNSET)
+ filter_criteria: Union[Unset, CustomerServiceMetricsFilterCriteria]
+ if isinstance(_filter_criteria, Unset):
+ filter_criteria = UNSET
+ else:
+ filter_criteria = CustomerServiceMetricsFilterCriteria.from_dict(_filter_criteria)
+
+
+
+
+ schema_version = d.pop("schemaVersion", UNSET)
+
+ status = d.pop("status", UNSET)
+
+ task_id = d.pop("taskId", UNSET)
+
+ service_metrics_task = cls(
+ completion_date=completion_date,
+ creation_date=creation_date,
+ detail_href=detail_href,
+ feed_type=feed_type,
+ filter_criteria=filter_criteria,
+ schema_version=schema_version,
+ status=status,
+ task_id=task_id,
+ )
+
+
+ service_metrics_task.additional_properties = d
+ return service_metrics_task
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/feed/models/streaming_output.py b/ebay_client/generated/feed/models/streaming_output.py
new file mode 100644
index 0000000..843ab45
--- /dev/null
+++ b/ebay_client/generated/feed/models/streaming_output.py
@@ -0,0 +1,64 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+
+
+
+
+
+
+T = TypeVar("T", bound="StreamingOutput")
+
+
+
+@_attrs_define
+class StreamingOutput:
+ """ File stream
+
+ """
+
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ streaming_output = cls(
+ )
+
+
+ streaming_output.additional_properties = d
+ return streaming_output
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/feed/models/supported_configuration.py b/ebay_client/generated/feed/models/supported_configuration.py
new file mode 100644
index 0000000..0d5b480
--- /dev/null
+++ b/ebay_client/generated/feed/models/supported_configuration.py
@@ -0,0 +1,111 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="SupportedConfiguration")
+
+
+
+@_attrs_define
+class SupportedConfiguration:
+ """ An array that defines the configuration supported by this template. This includes specified properties and usage
+ (whether the property is REQUIRED or OPTIONAL), and an optional default value.
+
+ Attributes:
+ default_value (Union[Unset, str]): The default value for the property. If a value is omitted from the schedule
+ and a default value is supplied, the default value is used.
+ property_ (Union[Unset, str]): Properties supported by the template. Properties can include the following:
+
- scheduleStartDate: The timestamp that the report generation (subscription) begins. After this
+ timestamp, the schedule status becomes active until either the scheduleEndDate occurs or the scheduleTemplate
+ becomes inactive. Format: UTC
yyyy-MM-
+ ddTHHZ - scheduleEndDate: The timestamp that the report
+ generation (subscription) ends. After this date, the schedule status becomes INACTIVE. Format: UTC
yyyy-
+ MM-ddTHHZ - schemaVersion: The schema version of the
+ schedule templates feedType. This field is required if the feedType has a schema
+ version.
- preferredTriggerDayOfMonth: The preferred day of the month to trigger the schedule.
+
- preferredTriggerDayOfWeek: The preferred day of the week to trigger the schedule.
+
- preferredTriggerHour: The preferred two-digit hour of the day to trigger the schedule. Format:
+ UTC
hhZ
+ usage (Union[Unset, str]): Whether the specified property is REQUIRED or OPTIONAL. For implementation help,
+ refer to eBay API
+ documentation
+ """
+
+ default_value: Union[Unset, str] = UNSET
+ property_: Union[Unset, str] = UNSET
+ usage: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ default_value = self.default_value
+
+ property_ = self.property_
+
+ usage = self.usage
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if default_value is not UNSET:
+ field_dict["defaultValue"] = default_value
+ if property_ is not UNSET:
+ field_dict["property"] = property_
+ if usage is not UNSET:
+ field_dict["usage"] = usage
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ default_value = d.pop("defaultValue", UNSET)
+
+ property_ = d.pop("property", UNSET)
+
+ usage = d.pop("usage", UNSET)
+
+ supported_configuration = cls(
+ default_value=default_value,
+ property_=property_,
+ usage=usage,
+ )
+
+
+ supported_configuration.additional_properties = d
+ return supported_configuration
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/feed/models/task.py b/ebay_client/generated/feed/models/task.py
new file mode 100644
index 0000000..aeb548d
--- /dev/null
+++ b/ebay_client/generated/feed/models/task.py
@@ -0,0 +1,166 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.upload_summary import UploadSummary
+
+
+
+
+
+T = TypeVar("T", bound="Task")
+
+
+
+@_attrs_define
+class Task:
+ """ The type that defines the fields for the task details.
+
+ Attributes:
+ completion_date (Union[Unset, str]): The timestamp when the task went into the COMPLETED or
+ COMPLETED_WITH_ERROR state. This state means that eBay has compiled the report for the seller based
+ on the seller’s filter criteria, and the seller can run a getResultFile call to download the
+ report.
+ creation_date (Union[Unset, str]): The date the task was created.
+ detail_href (Union[Unset, str]): The path to the call URI used to retrieve the task. This field points to the
+ GetOrderTask URI if the task is for LMS_ORDER_REPORT or will be null if this task is for
+ LMS_ORDER_ACK.
+ feed_type (Union[Unset, str]): The feed type associated with the task.
+ schema_version (Union[Unset, str]): The schema version number associated with the task.
+ status (Union[Unset, str]): The enumeration value that indicates the state of the task that was submitted in the
+ request. See FeedStatusEnum for information. The values COMPLETED and
+ COMPLETED_WITH_ERROR indicate the Order Report file is ready to download.
For implementation help,
+ refer to eBay API
+ documentation
+ task_id (Union[Unset, str]): The ID of the task that was submitted in the request.
+ upload_summary (Union[Unset, UploadSummary]): This container provides summary information on an upload feed (not
+ applicable for download feed types).
+ """
+
+ completion_date: Union[Unset, str] = UNSET
+ creation_date: Union[Unset, str] = UNSET
+ detail_href: Union[Unset, str] = UNSET
+ feed_type: Union[Unset, str] = UNSET
+ schema_version: Union[Unset, str] = UNSET
+ status: Union[Unset, str] = UNSET
+ task_id: Union[Unset, str] = UNSET
+ upload_summary: Union[Unset, 'UploadSummary'] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.upload_summary import UploadSummary
+ completion_date = self.completion_date
+
+ creation_date = self.creation_date
+
+ detail_href = self.detail_href
+
+ feed_type = self.feed_type
+
+ schema_version = self.schema_version
+
+ status = self.status
+
+ task_id = self.task_id
+
+ upload_summary: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.upload_summary, Unset):
+ upload_summary = self.upload_summary.to_dict()
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if completion_date is not UNSET:
+ field_dict["completionDate"] = completion_date
+ if creation_date is not UNSET:
+ field_dict["creationDate"] = creation_date
+ if detail_href is not UNSET:
+ field_dict["detailHref"] = detail_href
+ if feed_type is not UNSET:
+ field_dict["feedType"] = feed_type
+ if schema_version is not UNSET:
+ field_dict["schemaVersion"] = schema_version
+ if status is not UNSET:
+ field_dict["status"] = status
+ if task_id is not UNSET:
+ field_dict["taskId"] = task_id
+ if upload_summary is not UNSET:
+ field_dict["uploadSummary"] = upload_summary
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.upload_summary import UploadSummary
+ d = dict(src_dict)
+ completion_date = d.pop("completionDate", UNSET)
+
+ creation_date = d.pop("creationDate", UNSET)
+
+ detail_href = d.pop("detailHref", UNSET)
+
+ feed_type = d.pop("feedType", UNSET)
+
+ schema_version = d.pop("schemaVersion", UNSET)
+
+ status = d.pop("status", UNSET)
+
+ task_id = d.pop("taskId", UNSET)
+
+ _upload_summary = d.pop("uploadSummary", UNSET)
+ upload_summary: Union[Unset, UploadSummary]
+ if isinstance(_upload_summary, Unset):
+ upload_summary = UNSET
+ else:
+ upload_summary = UploadSummary.from_dict(_upload_summary)
+
+
+
+
+ task = cls(
+ completion_date=completion_date,
+ creation_date=creation_date,
+ detail_href=detail_href,
+ feed_type=feed_type,
+ schema_version=schema_version,
+ status=status,
+ task_id=task_id,
+ upload_summary=upload_summary,
+ )
+
+
+ task.additional_properties = d
+ return task
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/feed/models/task_collection.py b/ebay_client/generated/feed/models/task_collection.py
new file mode 100644
index 0000000..57a61a1
--- /dev/null
+++ b/ebay_client/generated/feed/models/task_collection.py
@@ -0,0 +1,169 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.task import Task
+
+
+
+
+
+T = TypeVar("T", bound="TaskCollection")
+
+
+
+@_attrs_define
+class TaskCollection:
+ """ The type that defines the fields for a paginated result set of tasks. The response consists of 0 or more sequenced
+ pages where each page has 0 or more items.
+
+ Attributes:
+ href (Union[Unset, str]): The path to the call URI that produced the current page of results.
+ limit (Union[Unset, int]): The value of the limit parameter submitted in the request, which is
+ the maximum number of tasks to return per page, from the result set. A result set is the complete set of tasks
+ returned by the method. Note: Though this parameter is not required
+ to be submitted in the request, the parameter defaults to 10 if omitted.
Note: If this is the last or only page of the result set, the page may
+ contain fewer tasks than the limit value. To determine the number of pages in a result set,
+ divide the total value (total number of tasks matching input criteria) by this limit value, and then round up to
+ the next integer. For example, if the total value was 120 (120 total tasks) and
+ the limit value was 50 (show 50 tasks per page), the total number of pages in the
+ result set is three, so the seller would have to make three separate getTasks calls to view all
+ tasks matching the input criteria.
+ next_ (Union[Unset, str]): The path to the call URI for the next page of results. This value is returned if
+ there is an additional page of results to return from the result set.
+ offset (Union[Unset, int]): The number of results skipped in the result set before listing the first returned
+ result. This value can be set in the request with the offset query parameter. Note: The items in a paginated result set use a zero-based list where the
+ first item in the list has an offset of 0.
+ prev (Union[Unset, str]): The path to the call URI for the previous page of results. This is returned if there
+ is a previous page of results from the result set.
+ tasks (Union[Unset, list['Task']]): An array of the tasks on this page. The tasks are sorted by creation date.
+ An empty array is returned if the filter criteria excludes all tasks.
+ total (Union[Unset, int]): The total number of tasks that match the input criteria.
+ """
+
+ href: Union[Unset, str] = UNSET
+ limit: Union[Unset, int] = UNSET
+ next_: Union[Unset, str] = UNSET
+ offset: Union[Unset, int] = UNSET
+ prev: Union[Unset, str] = UNSET
+ tasks: Union[Unset, list['Task']] = UNSET
+ total: Union[Unset, int] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.task import Task
+ href = self.href
+
+ limit = self.limit
+
+ next_ = self.next_
+
+ offset = self.offset
+
+ prev = self.prev
+
+ tasks: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.tasks, Unset):
+ tasks = []
+ for tasks_item_data in self.tasks:
+ tasks_item = tasks_item_data.to_dict()
+ tasks.append(tasks_item)
+
+
+
+ total = self.total
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if href is not UNSET:
+ field_dict["href"] = href
+ if limit is not UNSET:
+ field_dict["limit"] = limit
+ if next_ is not UNSET:
+ field_dict["next"] = next_
+ if offset is not UNSET:
+ field_dict["offset"] = offset
+ if prev is not UNSET:
+ field_dict["prev"] = prev
+ if tasks is not UNSET:
+ field_dict["tasks"] = tasks
+ if total is not UNSET:
+ field_dict["total"] = total
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.task import Task
+ d = dict(src_dict)
+ href = d.pop("href", UNSET)
+
+ limit = d.pop("limit", UNSET)
+
+ next_ = d.pop("next", UNSET)
+
+ offset = d.pop("offset", UNSET)
+
+ prev = d.pop("prev", UNSET)
+
+ tasks = []
+ _tasks = d.pop("tasks", UNSET)
+ for tasks_item_data in (_tasks or []):
+ tasks_item = Task.from_dict(tasks_item_data)
+
+
+
+ tasks.append(tasks_item)
+
+
+ total = d.pop("total", UNSET)
+
+ task_collection = cls(
+ href=href,
+ limit=limit,
+ next_=next_,
+ offset=offset,
+ prev=prev,
+ tasks=tasks,
+ total=total,
+ )
+
+
+ task_collection.additional_properties = d
+ return task_collection
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/feed/models/update_user_schedule_request.py b/ebay_client/generated/feed/models/update_user_schedule_request.py
new file mode 100644
index 0000000..22aae9f
--- /dev/null
+++ b/ebay_client/generated/feed/models/update_user_schedule_request.py
@@ -0,0 +1,158 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="UpdateUserScheduleRequest")
+
+
+
+@_attrs_define
+class UpdateUserScheduleRequest:
+ """ The type that defines the fields for a schedule update to a schedule generated with the Feed API.
+
+ Attributes:
+ preferred_trigger_day_of_month (Union[Unset, int]): The preferred day of the month to trigger the schedule. This
+ field can be used with preferredTriggerHour for monthly schedules. The last day of the month is
+ used for numbers larger than the actual number of days in the month.
This field is available as
+ specified by the template (scheduleTemplateId). The template can specify this field as optional
+ or required, and optionally provides a default value.
Minimum: 1
Maximum:
+ 31
+ preferred_trigger_day_of_week (Union[Unset, str]): The preferred day of the week to trigger the schedule. This
+ field can be used with preferredTriggerHour for weekly schedules.
This field is
+ available as specified by the template (scheduleTemplateId). The template can specify this
+ field as optional or required, and optionally provides a default value. For implementation help, refer to eBay API documentation
+ preferred_trigger_hour (Union[Unset, str]): The preferred two-digit hour of the day to trigger the schedule.
This field is available as specified by the template (scheduleTemplateId). The template
+ can specify this field as optional or required, and optionally provides a default value.
Format: UTC hhZ
For example, the following represents 11:00 am UTC:
+ 11Z
Minimum: 00Z
Maximum: 23Z
+ schedule_end_date (Union[Unset, str]): The timestamp on which the schedule (report generation) ends. After this
+ date, the schedule status becomes INACTIVE.
Use this field, if available, to end the
+ schedule in the future. This value must be later than scheduleStartDate (if supplied). This
+ field is available as specified by the template (scheduleTemplateId). The template can specify
+ this field as optional or required, and optionally provides a default value.
Format: UTC
+ yyyy-MM-ddTHHZ
For example, the following represents
+ UTC October 10, 2021 at 10:00 AM:
2021-10-10T10Z
+ schedule_name (Union[Unset, str]): The schedule name assigned by the user for the created schedule.
+ schedule_start_date (Union[Unset, str]): The timestamp to start generating the report. After this timestamp, the
+ schedule status becomes active until either the scheduleEndDate occurs or the
+ scheduleTemplateId becomes inactive.
Use this field, if available, to start the
+ schedule in the future but before the scheduleEndDate (if supplied). This field is available as
+ specified by the template (scheduleTemplateId). The template can specify this field as
+ optional or required, and optionally provides a default value.
Format: UTC yyyy-MM-
+ ddTHHZ
For example, the following represents a schedule
+ start date of UTC October 01, 2020 at 12:00 PM:
2020-01-01T12Z
+ schema_version (Union[Unset, str]): The schema version of a schedule.
+ """
+
+ preferred_trigger_day_of_month: Union[Unset, int] = UNSET
+ preferred_trigger_day_of_week: Union[Unset, str] = UNSET
+ preferred_trigger_hour: Union[Unset, str] = UNSET
+ schedule_end_date: Union[Unset, str] = UNSET
+ schedule_name: Union[Unset, str] = UNSET
+ schedule_start_date: Union[Unset, str] = UNSET
+ schema_version: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ preferred_trigger_day_of_month = self.preferred_trigger_day_of_month
+
+ preferred_trigger_day_of_week = self.preferred_trigger_day_of_week
+
+ preferred_trigger_hour = self.preferred_trigger_hour
+
+ schedule_end_date = self.schedule_end_date
+
+ schedule_name = self.schedule_name
+
+ schedule_start_date = self.schedule_start_date
+
+ schema_version = self.schema_version
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if preferred_trigger_day_of_month is not UNSET:
+ field_dict["preferredTriggerDayOfMonth"] = preferred_trigger_day_of_month
+ if preferred_trigger_day_of_week is not UNSET:
+ field_dict["preferredTriggerDayOfWeek"] = preferred_trigger_day_of_week
+ if preferred_trigger_hour is not UNSET:
+ field_dict["preferredTriggerHour"] = preferred_trigger_hour
+ if schedule_end_date is not UNSET:
+ field_dict["scheduleEndDate"] = schedule_end_date
+ if schedule_name is not UNSET:
+ field_dict["scheduleName"] = schedule_name
+ if schedule_start_date is not UNSET:
+ field_dict["scheduleStartDate"] = schedule_start_date
+ if schema_version is not UNSET:
+ field_dict["schemaVersion"] = schema_version
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ preferred_trigger_day_of_month = d.pop("preferredTriggerDayOfMonth", UNSET)
+
+ preferred_trigger_day_of_week = d.pop("preferredTriggerDayOfWeek", UNSET)
+
+ preferred_trigger_hour = d.pop("preferredTriggerHour", UNSET)
+
+ schedule_end_date = d.pop("scheduleEndDate", UNSET)
+
+ schedule_name = d.pop("scheduleName", UNSET)
+
+ schedule_start_date = d.pop("scheduleStartDate", UNSET)
+
+ schema_version = d.pop("schemaVersion", UNSET)
+
+ update_user_schedule_request = cls(
+ preferred_trigger_day_of_month=preferred_trigger_day_of_month,
+ preferred_trigger_day_of_week=preferred_trigger_day_of_week,
+ preferred_trigger_hour=preferred_trigger_hour,
+ schedule_end_date=schedule_end_date,
+ schedule_name=schedule_name,
+ schedule_start_date=schedule_start_date,
+ schema_version=schema_version,
+ )
+
+
+ update_user_schedule_request.additional_properties = d
+ return update_user_schedule_request
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/feed/models/upload_file_response_200.py b/ebay_client/generated/feed/models/upload_file_response_200.py
new file mode 100644
index 0000000..a0663a2
--- /dev/null
+++ b/ebay_client/generated/feed/models/upload_file_response_200.py
@@ -0,0 +1,63 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+
+
+
+
+
+
+T = TypeVar("T", bound="UploadFileResponse200")
+
+
+
+@_attrs_define
+class UploadFileResponse200:
+ """
+ """
+
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ upload_file_response_200 = cls(
+ )
+
+
+ upload_file_response_200.additional_properties = d
+ return upload_file_response_200
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/feed/models/upload_summary.py b/ebay_client/generated/feed/models/upload_summary.py
new file mode 100644
index 0000000..8ffb22a
--- /dev/null
+++ b/ebay_client/generated/feed/models/upload_summary.py
@@ -0,0 +1,91 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="UploadSummary")
+
+
+
+@_attrs_define
+class UploadSummary:
+ """ This container provides summary information on an upload feed (not applicable for download feed types).
+
+ Attributes:
+ failure_count (Union[Unset, int]): The number of records, such as the number of listings created or the number
+ of pictures uploaded to a listing, that failed to process during the upload feed. Check the response file and
+ correct any issues mentioned. If the feed fails before processing, no response file is provided. In this case
+ check the REST output response.
+ success_count (Union[Unset, int]): The number of records that were successfully processed during the upload
+ feed.
+ """
+
+ failure_count: Union[Unset, int] = UNSET
+ success_count: Union[Unset, int] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ failure_count = self.failure_count
+
+ success_count = self.success_count
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if failure_count is not UNSET:
+ field_dict["failureCount"] = failure_count
+ if success_count is not UNSET:
+ field_dict["successCount"] = success_count
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ failure_count = d.pop("failureCount", UNSET)
+
+ success_count = d.pop("successCount", UNSET)
+
+ upload_summary = cls(
+ failure_count=failure_count,
+ success_count=success_count,
+ )
+
+
+ upload_summary.additional_properties = d
+ return upload_summary
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/feed/models/user_schedule_collection.py b/ebay_client/generated/feed/models/user_schedule_collection.py
new file mode 100644
index 0000000..4f2e07e
--- /dev/null
+++ b/ebay_client/generated/feed/models/user_schedule_collection.py
@@ -0,0 +1,169 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.user_schedule_response import UserScheduleResponse
+
+
+
+
+
+T = TypeVar("T", bound="UserScheduleCollection")
+
+
+
+@_attrs_define
+class UserScheduleCollection:
+ """ The type that defines the fields for a paginated result set of user schedules. The response consists of 0 or more
+ sequenced pages where each page has 0 or more items.
+
+ Attributes:
+ href (Union[Unset, str]): The path to the call URI that produced the current page of results.
+ limit (Union[Unset, int]): The value of the limit parameter submitted in the request, which is
+ the maximum number of schedules to return per page, from the result set. A result set is the complete set of
+ schedules returned by the method. Note: Though this parameter is
+ not required to be submitted in the request, the parameter defaults to 10 if omitted. Note: If this is the last or only page of the result set, the page may
+ contain fewer tasks than the limit value. To determine the number of pages in a result set,
+ divide the total value (total number of tasks matching input criteria) by this limit value, and then round up to
+ the next integer. For example, if the total value was 120 (120 total tasks) and
+ the limit value was 50 (show 50 tasks per page), the total number of pages in the
+ result set is three, so the seller would have to make three separate getSchedules calls to view
+ all tasks matching the input criteria.
+ next_ (Union[Unset, str]): The path to the call URI for the next page of results. This value is returned if
+ there is an additional page of results to return from the result set.
+ offset (Union[Unset, int]): The number of results skipped in the result set before listing the first returned
+ result. This value can be set in the request with the offset query parameter. Note: The items in a paginated result set use a zero-based list where the
+ first item in the list has an offset of 0.
+ prev (Union[Unset, str]): The path to the call URI for the previous page of results. This is returned if there
+ is a previous page of results from the result set.
+ schedules (Union[Unset, list['UserScheduleResponse']]): An array of the schedules on this page. An empty array
+ is returned if the filter criteria excludes all tasks.
+ total (Union[Unset, int]): The total number of schedules that match the input criteria.
+ """
+
+ href: Union[Unset, str] = UNSET
+ limit: Union[Unset, int] = UNSET
+ next_: Union[Unset, str] = UNSET
+ offset: Union[Unset, int] = UNSET
+ prev: Union[Unset, str] = UNSET
+ schedules: Union[Unset, list['UserScheduleResponse']] = UNSET
+ total: Union[Unset, int] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.user_schedule_response import UserScheduleResponse
+ href = self.href
+
+ limit = self.limit
+
+ next_ = self.next_
+
+ offset = self.offset
+
+ prev = self.prev
+
+ schedules: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.schedules, Unset):
+ schedules = []
+ for schedules_item_data in self.schedules:
+ schedules_item = schedules_item_data.to_dict()
+ schedules.append(schedules_item)
+
+
+
+ total = self.total
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if href is not UNSET:
+ field_dict["href"] = href
+ if limit is not UNSET:
+ field_dict["limit"] = limit
+ if next_ is not UNSET:
+ field_dict["next"] = next_
+ if offset is not UNSET:
+ field_dict["offset"] = offset
+ if prev is not UNSET:
+ field_dict["prev"] = prev
+ if schedules is not UNSET:
+ field_dict["schedules"] = schedules
+ if total is not UNSET:
+ field_dict["total"] = total
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.user_schedule_response import UserScheduleResponse
+ d = dict(src_dict)
+ href = d.pop("href", UNSET)
+
+ limit = d.pop("limit", UNSET)
+
+ next_ = d.pop("next", UNSET)
+
+ offset = d.pop("offset", UNSET)
+
+ prev = d.pop("prev", UNSET)
+
+ schedules = []
+ _schedules = d.pop("schedules", UNSET)
+ for schedules_item_data in (_schedules or []):
+ schedules_item = UserScheduleResponse.from_dict(schedules_item_data)
+
+
+
+ schedules.append(schedules_item)
+
+
+ total = d.pop("total", UNSET)
+
+ user_schedule_collection = cls(
+ href=href,
+ limit=limit,
+ next_=next_,
+ offset=offset,
+ prev=prev,
+ schedules=schedules,
+ total=total,
+ )
+
+
+ user_schedule_collection.additional_properties = d
+ return user_schedule_collection
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/feed/models/user_schedule_response.py b/ebay_client/generated/feed/models/user_schedule_response.py
new file mode 100644
index 0000000..36bffb2
--- /dev/null
+++ b/ebay_client/generated/feed/models/user_schedule_response.py
@@ -0,0 +1,210 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="UserScheduleResponse")
+
+
+
+@_attrs_define
+class UserScheduleResponse:
+ """ The type that defines the fields for a paginated result set of available schedules. The response consists of 0 or
+ more sequenced pages where each page has 0 or more items.
+
+ Attributes:
+ schedule_id (Union[Unset, str]): The ID of the schedule. This ID is generated when the schedule was created by
+ the createSchedule method.
+ creation_date (Union[Unset, str]): The creation date of the schedule in hours based on the 24-hour Coordinated
+ Universal Time (UTC) clock.
+ feed_type (Union[Unset, str]): The feedType associated with the schedule.
+ last_modified_date (Union[Unset, str]): The date the schedule was last modified.
+ preferred_trigger_day_of_month (Union[Unset, int]): The preferred day of the month to trigger the schedule. This
+ field can be used with preferredTriggerHour for monthly schedules. The last day of the month is
+ used for numbers larger than the number of days in the month.
+ preferred_trigger_day_of_week (Union[Unset, str]): The preferred day of the week to trigger the schedule. This
+ field can be used with preferredTriggerHour for weekly schedules. For implementation help,
+ refer to eBay API
+ documentation
+ preferred_trigger_hour (Union[Unset, str]): The preferred two-digit hour of the day to trigger the schedule.
Format: UTC hhZ
For example, the following represents 11:00 am UTC:
11Z
+ schedule_end_date (Union[Unset, str]): The timestamp on which the report generation (subscription) ends. After
+ this date, the schedule status becomes INACTIVE.
+ schedule_name (Union[Unset, str]): The schedule name assigned by the user for the created schedule. Users assign
+ this name for their reference.
+ schedule_start_date (Union[Unset, str]): The timestamp that indicates the start of the report generation.
+ schedule_template_id (Union[Unset, str]): The ID of the template used to create this schedule.
+ schema_version (Union[Unset, str]): The schema version of the feedType for the schedule.
+ status (Union[Unset, str]): The enumeration value that indicates the state of the schedule. For implementation
+ help, refer to eBay API
+ documentation
+ status_reason (Union[Unset, str]): The reason the schedule is inactive. For implementation help, refer to eBay API documentation
+ """
+
+ schedule_id: Union[Unset, str] = UNSET
+ creation_date: Union[Unset, str] = UNSET
+ feed_type: Union[Unset, str] = UNSET
+ last_modified_date: Union[Unset, str] = UNSET
+ preferred_trigger_day_of_month: Union[Unset, int] = UNSET
+ preferred_trigger_day_of_week: Union[Unset, str] = UNSET
+ preferred_trigger_hour: Union[Unset, str] = UNSET
+ schedule_end_date: Union[Unset, str] = UNSET
+ schedule_name: Union[Unset, str] = UNSET
+ schedule_start_date: Union[Unset, str] = UNSET
+ schedule_template_id: Union[Unset, str] = UNSET
+ schema_version: Union[Unset, str] = UNSET
+ status: Union[Unset, str] = UNSET
+ status_reason: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ schedule_id = self.schedule_id
+
+ creation_date = self.creation_date
+
+ feed_type = self.feed_type
+
+ last_modified_date = self.last_modified_date
+
+ preferred_trigger_day_of_month = self.preferred_trigger_day_of_month
+
+ preferred_trigger_day_of_week = self.preferred_trigger_day_of_week
+
+ preferred_trigger_hour = self.preferred_trigger_hour
+
+ schedule_end_date = self.schedule_end_date
+
+ schedule_name = self.schedule_name
+
+ schedule_start_date = self.schedule_start_date
+
+ schedule_template_id = self.schedule_template_id
+
+ schema_version = self.schema_version
+
+ status = self.status
+
+ status_reason = self.status_reason
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if schedule_id is not UNSET:
+ field_dict["scheduleId"] = schedule_id
+ if creation_date is not UNSET:
+ field_dict["creationDate"] = creation_date
+ if feed_type is not UNSET:
+ field_dict["feedType"] = feed_type
+ if last_modified_date is not UNSET:
+ field_dict["lastModifiedDate"] = last_modified_date
+ if preferred_trigger_day_of_month is not UNSET:
+ field_dict["preferredTriggerDayOfMonth"] = preferred_trigger_day_of_month
+ if preferred_trigger_day_of_week is not UNSET:
+ field_dict["preferredTriggerDayOfWeek"] = preferred_trigger_day_of_week
+ if preferred_trigger_hour is not UNSET:
+ field_dict["preferredTriggerHour"] = preferred_trigger_hour
+ if schedule_end_date is not UNSET:
+ field_dict["scheduleEndDate"] = schedule_end_date
+ if schedule_name is not UNSET:
+ field_dict["scheduleName"] = schedule_name
+ if schedule_start_date is not UNSET:
+ field_dict["scheduleStartDate"] = schedule_start_date
+ if schedule_template_id is not UNSET:
+ field_dict["scheduleTemplateId"] = schedule_template_id
+ if schema_version is not UNSET:
+ field_dict["schemaVersion"] = schema_version
+ if status is not UNSET:
+ field_dict["status"] = status
+ if status_reason is not UNSET:
+ field_dict["statusReason"] = status_reason
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ schedule_id = d.pop("scheduleId", UNSET)
+
+ creation_date = d.pop("creationDate", UNSET)
+
+ feed_type = d.pop("feedType", UNSET)
+
+ last_modified_date = d.pop("lastModifiedDate", UNSET)
+
+ preferred_trigger_day_of_month = d.pop("preferredTriggerDayOfMonth", UNSET)
+
+ preferred_trigger_day_of_week = d.pop("preferredTriggerDayOfWeek", UNSET)
+
+ preferred_trigger_hour = d.pop("preferredTriggerHour", UNSET)
+
+ schedule_end_date = d.pop("scheduleEndDate", UNSET)
+
+ schedule_name = d.pop("scheduleName", UNSET)
+
+ schedule_start_date = d.pop("scheduleStartDate", UNSET)
+
+ schedule_template_id = d.pop("scheduleTemplateId", UNSET)
+
+ schema_version = d.pop("schemaVersion", UNSET)
+
+ status = d.pop("status", UNSET)
+
+ status_reason = d.pop("statusReason", UNSET)
+
+ user_schedule_response = cls(
+ schedule_id=schedule_id,
+ creation_date=creation_date,
+ feed_type=feed_type,
+ last_modified_date=last_modified_date,
+ preferred_trigger_day_of_month=preferred_trigger_day_of_month,
+ preferred_trigger_day_of_week=preferred_trigger_day_of_week,
+ preferred_trigger_hour=preferred_trigger_hour,
+ schedule_end_date=schedule_end_date,
+ schedule_name=schedule_name,
+ schedule_start_date=schedule_start_date,
+ schedule_template_id=schedule_template_id,
+ schema_version=schema_version,
+ status=status,
+ status_reason=status_reason,
+ )
+
+
+ user_schedule_response.additional_properties = d
+ return user_schedule_response
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/feed/types.py b/ebay_client/generated/feed/types.py
new file mode 100644
index 0000000..2330892
--- /dev/null
+++ b/ebay_client/generated/feed/types.py
@@ -0,0 +1,53 @@
+""" Contains some shared types for properties """
+
+from collections.abc import Mapping, MutableMapping
+from http import HTTPStatus
+from typing import BinaryIO, Generic, Optional, TypeVar, Literal, Union, IO
+
+from attrs import define
+
+
+class Unset:
+ def __bool__(self) -> Literal[False]:
+ return False
+
+
+UNSET: Unset = Unset()
+
+# The types that `httpx.Client(files=)` can accept, copied from that library.
+FileContent = Union[IO[bytes], bytes, str]
+FileTypes = Union[
+ # (filename, file (or bytes), content_type)
+ tuple[Optional[str], FileContent, Optional[str]],
+ # (filename, file (or bytes), content_type, headers)
+ tuple[Optional[str], FileContent, Optional[str], Mapping[str, str]],
+]
+RequestFiles = list[tuple[str, FileTypes]]
+
+@define
+class File:
+ """ Contains information for file uploads """
+
+ payload: BinaryIO
+ file_name: Optional[str] = None
+ mime_type: Optional[str] = None
+
+ def to_tuple(self) -> FileTypes:
+ """ Return a tuple representation that httpx will accept for multipart/form-data """
+ return self.file_name, self.payload, self.mime_type
+
+
+T = TypeVar("T")
+
+
+@define
+class Response(Generic[T]):
+ """ A response from an endpoint """
+
+ status_code: HTTPStatus
+ content: bytes
+ headers: MutableMapping[str, str]
+ parsed: Optional[T]
+
+
+__all__ = ["UNSET", "File", "FileTypes", "RequestFiles", "Response", "Unset"]
diff --git a/ebay_client/generated/fulfillment/__init__.py b/ebay_client/generated/fulfillment/__init__.py
new file mode 100644
index 0000000..0fdc3e8
--- /dev/null
+++ b/ebay_client/generated/fulfillment/__init__.py
@@ -0,0 +1,8 @@
+
+""" A client library for accessing Fulfillment API """
+from .client import AuthenticatedClient, Client
+
+__all__ = (
+ "AuthenticatedClient",
+ "Client",
+)
diff --git a/ebay_client/generated/fulfillment/api/__init__.py b/ebay_client/generated/fulfillment/api/__init__.py
new file mode 100644
index 0000000..dc035f4
--- /dev/null
+++ b/ebay_client/generated/fulfillment/api/__init__.py
@@ -0,0 +1 @@
+""" Contains methods for accessing the API """
diff --git a/ebay_client/generated/fulfillment/api/order/__init__.py b/ebay_client/generated/fulfillment/api/order/__init__.py
new file mode 100644
index 0000000..c9921b5
--- /dev/null
+++ b/ebay_client/generated/fulfillment/api/order/__init__.py
@@ -0,0 +1 @@
+""" Contains endpoint functions for accessing the API """
diff --git a/ebay_client/generated/fulfillment/api/order/get_order.py b/ebay_client/generated/fulfillment/api/order/get_order.py
new file mode 100644
index 0000000..4e97453
--- /dev/null
+++ b/ebay_client/generated/fulfillment/api/order/get_order.py
@@ -0,0 +1,240 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.order import Order
+from ...types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+
+
+def _get_kwargs(
+ order_id: str,
+ *,
+ field_groups: Union[Unset, str] = UNSET,
+
+) -> dict[str, Any]:
+
+
+
+
+ params: dict[str, Any] = {}
+
+ params["fieldGroups"] = field_groups
+
+
+ params = {k: v for k, v in params.items() if v is not UNSET and v is not None}
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/order/{order_id}".format(order_id=order_id,),
+ "params": params,
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, Order]]:
+ if response.status_code == 200:
+ response_200 = Order.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 404:
+ response_404 = cast(Any, None)
+ return response_404
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, Order]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ order_id: str,
+ *,
+ client: AuthenticatedClient,
+ field_groups: Union[Unset, str] = UNSET,
+
+) -> Response[Union[Any, Order]]:
+ """ Use this call to retrieve the contents of an order based on its unique identifier, orderId.
+ This value was returned in the getOrders call's orders.orderId field when you
+ searched for orders by creation date, modification date, or fulfillment status. Include the optional
+ fieldGroups query parameter set to TAX_BREAKDOWN to return a breakdown of the
+ taxes and fees.
The returned Order object contains information you can use to create
+ and process fulfillments, including: - Information about the buyer and seller
+ - Information about the order's line items
- The plans for packaging, addressing and
+ shipping the order
- The status of payment, packaging, addressing, and shipping the
+ order
- A summary of monetary amounts specific to the order such as pricing, payments, and
+ shipping costs
- A summary of applied taxes and fees, and optionally a breakdown of each
+
+
+ Args:
+ order_id (str):
+ field_groups (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, Order]]
+ """
+
+
+ kwargs = _get_kwargs(
+ order_id=order_id,
+field_groups=field_groups,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ order_id: str,
+ *,
+ client: AuthenticatedClient,
+ field_groups: Union[Unset, str] = UNSET,
+
+) -> Optional[Union[Any, Order]]:
+ """ Use this call to retrieve the contents of an order based on its unique identifier, orderId.
+ This value was returned in the getOrders call's orders.orderId field when you
+ searched for orders by creation date, modification date, or fulfillment status. Include the optional
+ fieldGroups query parameter set to TAX_BREAKDOWN to return a breakdown of the
+ taxes and fees.
The returned Order object contains information you can use to create
+ and process fulfillments, including: - Information about the buyer and seller
+ - Information about the order's line items
- The plans for packaging, addressing and
+ shipping the order
- The status of payment, packaging, addressing, and shipping the
+ order
- A summary of monetary amounts specific to the order such as pricing, payments, and
+ shipping costs
- A summary of applied taxes and fees, and optionally a breakdown of each
+
+
+ Args:
+ order_id (str):
+ field_groups (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, Order]
+ """
+
+
+ return sync_detailed(
+ order_id=order_id,
+client=client,
+field_groups=field_groups,
+
+ ).parsed
+
+async def asyncio_detailed(
+ order_id: str,
+ *,
+ client: AuthenticatedClient,
+ field_groups: Union[Unset, str] = UNSET,
+
+) -> Response[Union[Any, Order]]:
+ """ Use this call to retrieve the contents of an order based on its unique identifier, orderId.
+ This value was returned in the getOrders call's orders.orderId field when you
+ searched for orders by creation date, modification date, or fulfillment status. Include the optional
+ fieldGroups query parameter set to TAX_BREAKDOWN to return a breakdown of the
+ taxes and fees.
The returned Order object contains information you can use to create
+ and process fulfillments, including: - Information about the buyer and seller
+ - Information about the order's line items
- The plans for packaging, addressing and
+ shipping the order
- The status of payment, packaging, addressing, and shipping the
+ order
- A summary of monetary amounts specific to the order such as pricing, payments, and
+ shipping costs
- A summary of applied taxes and fees, and optionally a breakdown of each
+
+
+ Args:
+ order_id (str):
+ field_groups (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, Order]]
+ """
+
+
+ kwargs = _get_kwargs(
+ order_id=order_id,
+field_groups=field_groups,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ order_id: str,
+ *,
+ client: AuthenticatedClient,
+ field_groups: Union[Unset, str] = UNSET,
+
+) -> Optional[Union[Any, Order]]:
+ """ Use this call to retrieve the contents of an order based on its unique identifier, orderId.
+ This value was returned in the getOrders call's orders.orderId field when you
+ searched for orders by creation date, modification date, or fulfillment status. Include the optional
+ fieldGroups query parameter set to TAX_BREAKDOWN to return a breakdown of the
+ taxes and fees.
The returned Order object contains information you can use to create
+ and process fulfillments, including: - Information about the buyer and seller
+ - Information about the order's line items
- The plans for packaging, addressing and
+ shipping the order
- The status of payment, packaging, addressing, and shipping the
+ order
- A summary of monetary amounts specific to the order such as pricing, payments, and
+ shipping costs
- A summary of applied taxes and fees, and optionally a breakdown of each
+
+
+ Args:
+ order_id (str):
+ field_groups (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, Order]
+ """
+
+
+ return (await asyncio_detailed(
+ order_id=order_id,
+client=client,
+field_groups=field_groups,
+
+ )).parsed
diff --git a/ebay_client/generated/fulfillment/api/order/get_orders.py b/ebay_client/generated/fulfillment/api/order/get_orders.py
new file mode 100644
index 0000000..b899293
--- /dev/null
+++ b/ebay_client/generated/fulfillment/api/order/get_orders.py
@@ -0,0 +1,300 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.order_search_paged_collection import OrderSearchPagedCollection
+from ...types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+
+
+def _get_kwargs(
+ *,
+ field_groups: Union[Unset, str] = UNSET,
+ filter_: Union[Unset, str] = UNSET,
+ limit: Union[Unset, str] = UNSET,
+ offset: Union[Unset, str] = UNSET,
+ order_ids: Union[Unset, str] = UNSET,
+
+) -> dict[str, Any]:
+
+
+
+
+ params: dict[str, Any] = {}
+
+ params["fieldGroups"] = field_groups
+
+ params["filter"] = filter_
+
+ params["limit"] = limit
+
+ params["offset"] = offset
+
+ params["orderIds"] = order_ids
+
+
+ params = {k: v for k, v in params.items() if v is not UNSET and v is not None}
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/order",
+ "params": params,
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, OrderSearchPagedCollection]]:
+ if response.status_code == 200:
+ response_200 = OrderSearchPagedCollection.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, OrderSearchPagedCollection]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ *,
+ client: AuthenticatedClient,
+ field_groups: Union[Unset, str] = UNSET,
+ filter_: Union[Unset, str] = UNSET,
+ limit: Union[Unset, str] = UNSET,
+ offset: Union[Unset, str] = UNSET,
+ order_ids: Union[Unset, str] = UNSET,
+
+) -> Response[Union[Any, OrderSearchPagedCollection]]:
+ r""" Use this method to search for and retrieve one or more orders based on their creation date, last
+ modification date, or fulfillment status using the filter parameter. You can alternatively
+ specify a list of orders using the orderIds parameter. Include the optional
+ fieldGroups query parameter set to TAX_BREAKDOWN to return a breakdown of the
+ taxes and fees. By default, when no filters are used this call returns all orders created within the
+ last 90 days.
The returned Order objects contain information you can use to create
+ and process fulfillments, including: - Information about the buyer and seller
+ - Information about the order's line items
- The plans for packaging, addressing and
+ shipping the order
- The status of payment, packaging, addressing, and shipping the
+ order
- A summary of monetary amounts specific to the order such as pricing, payments, and
+ shipping costs
- A summary of applied taxes and fees, and optionally a breakdown of each
+
Important: In this call, the
+ cancelStatus.cancelRequests array is returned but is always empty. Use the getOrder
+ call instead, which returns this array fully populated with information about any cancellation
+ requests.
+
+ Args:
+ field_groups (Union[Unset, str]):
+ filter_ (Union[Unset, str]):
+ limit (Union[Unset, str]):
+ offset (Union[Unset, str]):
+ order_ids (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, OrderSearchPagedCollection]]
+ """
+
+
+ kwargs = _get_kwargs(
+ field_groups=field_groups,
+filter_=filter_,
+limit=limit,
+offset=offset,
+order_ids=order_ids,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ *,
+ client: AuthenticatedClient,
+ field_groups: Union[Unset, str] = UNSET,
+ filter_: Union[Unset, str] = UNSET,
+ limit: Union[Unset, str] = UNSET,
+ offset: Union[Unset, str] = UNSET,
+ order_ids: Union[Unset, str] = UNSET,
+
+) -> Optional[Union[Any, OrderSearchPagedCollection]]:
+ r""" Use this method to search for and retrieve one or more orders based on their creation date, last
+ modification date, or fulfillment status using the filter parameter. You can alternatively
+ specify a list of orders using the orderIds parameter. Include the optional
+ fieldGroups query parameter set to TAX_BREAKDOWN to return a breakdown of the
+ taxes and fees. By default, when no filters are used this call returns all orders created within the
+ last 90 days.
The returned Order objects contain information you can use to create
+ and process fulfillments, including: - Information about the buyer and seller
+ - Information about the order's line items
- The plans for packaging, addressing and
+ shipping the order
- The status of payment, packaging, addressing, and shipping the
+ order
- A summary of monetary amounts specific to the order such as pricing, payments, and
+ shipping costs
- A summary of applied taxes and fees, and optionally a breakdown of each
+
Important: In this call, the
+ cancelStatus.cancelRequests array is returned but is always empty. Use the getOrder
+ call instead, which returns this array fully populated with information about any cancellation
+ requests.
+
+ Args:
+ field_groups (Union[Unset, str]):
+ filter_ (Union[Unset, str]):
+ limit (Union[Unset, str]):
+ offset (Union[Unset, str]):
+ order_ids (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, OrderSearchPagedCollection]
+ """
+
+
+ return sync_detailed(
+ client=client,
+field_groups=field_groups,
+filter_=filter_,
+limit=limit,
+offset=offset,
+order_ids=order_ids,
+
+ ).parsed
+
+async def asyncio_detailed(
+ *,
+ client: AuthenticatedClient,
+ field_groups: Union[Unset, str] = UNSET,
+ filter_: Union[Unset, str] = UNSET,
+ limit: Union[Unset, str] = UNSET,
+ offset: Union[Unset, str] = UNSET,
+ order_ids: Union[Unset, str] = UNSET,
+
+) -> Response[Union[Any, OrderSearchPagedCollection]]:
+ r""" Use this method to search for and retrieve one or more orders based on their creation date, last
+ modification date, or fulfillment status using the filter parameter. You can alternatively
+ specify a list of orders using the orderIds parameter. Include the optional
+ fieldGroups query parameter set to TAX_BREAKDOWN to return a breakdown of the
+ taxes and fees. By default, when no filters are used this call returns all orders created within the
+ last 90 days.
The returned Order objects contain information you can use to create
+ and process fulfillments, including: - Information about the buyer and seller
+ - Information about the order's line items
- The plans for packaging, addressing and
+ shipping the order
- The status of payment, packaging, addressing, and shipping the
+ order
- A summary of monetary amounts specific to the order such as pricing, payments, and
+ shipping costs
- A summary of applied taxes and fees, and optionally a breakdown of each
+
Important: In this call, the
+ cancelStatus.cancelRequests array is returned but is always empty. Use the getOrder
+ call instead, which returns this array fully populated with information about any cancellation
+ requests.
+
+ Args:
+ field_groups (Union[Unset, str]):
+ filter_ (Union[Unset, str]):
+ limit (Union[Unset, str]):
+ offset (Union[Unset, str]):
+ order_ids (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, OrderSearchPagedCollection]]
+ """
+
+
+ kwargs = _get_kwargs(
+ field_groups=field_groups,
+filter_=filter_,
+limit=limit,
+offset=offset,
+order_ids=order_ids,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ *,
+ client: AuthenticatedClient,
+ field_groups: Union[Unset, str] = UNSET,
+ filter_: Union[Unset, str] = UNSET,
+ limit: Union[Unset, str] = UNSET,
+ offset: Union[Unset, str] = UNSET,
+ order_ids: Union[Unset, str] = UNSET,
+
+) -> Optional[Union[Any, OrderSearchPagedCollection]]:
+ r""" Use this method to search for and retrieve one or more orders based on their creation date, last
+ modification date, or fulfillment status using the filter parameter. You can alternatively
+ specify a list of orders using the orderIds parameter. Include the optional
+ fieldGroups query parameter set to TAX_BREAKDOWN to return a breakdown of the
+ taxes and fees. By default, when no filters are used this call returns all orders created within the
+ last 90 days.
The returned Order objects contain information you can use to create
+ and process fulfillments, including: - Information about the buyer and seller
+ - Information about the order's line items
- The plans for packaging, addressing and
+ shipping the order
- The status of payment, packaging, addressing, and shipping the
+ order
- A summary of monetary amounts specific to the order such as pricing, payments, and
+ shipping costs
- A summary of applied taxes and fees, and optionally a breakdown of each
+
Important: In this call, the
+ cancelStatus.cancelRequests array is returned but is always empty. Use the getOrder
+ call instead, which returns this array fully populated with information about any cancellation
+ requests.
+
+ Args:
+ field_groups (Union[Unset, str]):
+ filter_ (Union[Unset, str]):
+ limit (Union[Unset, str]):
+ offset (Union[Unset, str]):
+ order_ids (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, OrderSearchPagedCollection]
+ """
+
+
+ return (await asyncio_detailed(
+ client=client,
+field_groups=field_groups,
+filter_=filter_,
+limit=limit,
+offset=offset,
+order_ids=order_ids,
+
+ )).parsed
diff --git a/ebay_client/generated/fulfillment/api/order/issue_refund.py b/ebay_client/generated/fulfillment/api/order/issue_refund.py
new file mode 100644
index 0000000..f69357b
--- /dev/null
+++ b/ebay_client/generated/fulfillment/api/order/issue_refund.py
@@ -0,0 +1,299 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.issue_refund_request import IssueRefundRequest
+from ...models.refund import Refund
+from typing import cast
+
+
+
+def _get_kwargs(
+ order_id: str,
+ *,
+ body: IssueRefundRequest,
+ content_type: str,
+
+) -> dict[str, Any]:
+ headers: dict[str, Any] = {}
+ headers["Content-Type"] = content_type
+
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "post",
+ "url": "/order/{order_id}/issue_refund".format(order_id=order_id,),
+ }
+
+ _kwargs["json"] = body.to_dict()
+
+
+ headers["Content-Type"] = "application/json"
+
+ _kwargs["headers"] = headers
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, Refund]]:
+ if response.status_code == 200:
+ response_200 = Refund.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 403:
+ response_403 = cast(Any, None)
+ return response_403
+ if response.status_code == 404:
+ response_404 = cast(Any, None)
+ return response_404
+ if response.status_code == 409:
+ response_409 = cast(Any, None)
+ return response_409
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, Refund]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ order_id: str,
+ *,
+ client: AuthenticatedClient,
+ body: IssueRefundRequest,
+ content_type: str,
+
+) -> Response[Union[Any, Refund]]:
+ r""" Issue Refund
+
+ Important! Due to EU & UK Payments regulatory
+ requirements, an additional security verification via Digital Signatures is required for certain API
+ calls that are made on behalf of EU/UK sellers, including issueRefund. Please refer to Digital Signatures for
+ APIs to learn more on the impacted APIs and the process to create signatures to be included in
+ the HTTP payload.
This method allows a seller to issue a full or partial refund to a
+ buyer for an order. Full or partial refunds can be issued at the order level or line item
+ level.
The refunds issued through this method are processed asynchronously, so the refund
+ will not show as 'Refunded' right away. A seller will have to make a subsequent getOrder call to
+ check the status of the refund. The status of an order refund can be found in the paymentSummary.refunds.refundStatus field of the getOrder response.
+
+ Args:
+ order_id (str):
+ content_type (str):
+ body (IssueRefundRequest): The base type used by the request payload of the
+ issueRefund method.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, Refund]]
+ """
+
+
+ kwargs = _get_kwargs(
+ order_id=order_id,
+body=body,
+content_type=content_type,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ order_id: str,
+ *,
+ client: AuthenticatedClient,
+ body: IssueRefundRequest,
+ content_type: str,
+
+) -> Optional[Union[Any, Refund]]:
+ r""" Issue Refund
+
+ Important! Due to EU & UK Payments regulatory
+ requirements, an additional security verification via Digital Signatures is required for certain API
+ calls that are made on behalf of EU/UK sellers, including issueRefund. Please refer to Digital Signatures for
+ APIs to learn more on the impacted APIs and the process to create signatures to be included in
+ the HTTP payload.
This method allows a seller to issue a full or partial refund to a
+ buyer for an order. Full or partial refunds can be issued at the order level or line item
+ level.
The refunds issued through this method are processed asynchronously, so the refund
+ will not show as 'Refunded' right away. A seller will have to make a subsequent getOrder call to
+ check the status of the refund. The status of an order refund can be found in the paymentSummary.refunds.refundStatus field of the getOrder response.
+
+ Args:
+ order_id (str):
+ content_type (str):
+ body (IssueRefundRequest): The base type used by the request payload of the
+ issueRefund method.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, Refund]
+ """
+
+
+ return sync_detailed(
+ order_id=order_id,
+client=client,
+body=body,
+content_type=content_type,
+
+ ).parsed
+
+async def asyncio_detailed(
+ order_id: str,
+ *,
+ client: AuthenticatedClient,
+ body: IssueRefundRequest,
+ content_type: str,
+
+) -> Response[Union[Any, Refund]]:
+ r""" Issue Refund
+
+ Important! Due to EU & UK Payments regulatory
+ requirements, an additional security verification via Digital Signatures is required for certain API
+ calls that are made on behalf of EU/UK sellers, including issueRefund. Please refer to Digital Signatures for
+ APIs to learn more on the impacted APIs and the process to create signatures to be included in
+ the HTTP payload.
This method allows a seller to issue a full or partial refund to a
+ buyer for an order. Full or partial refunds can be issued at the order level or line item
+ level.
The refunds issued through this method are processed asynchronously, so the refund
+ will not show as 'Refunded' right away. A seller will have to make a subsequent getOrder call to
+ check the status of the refund. The status of an order refund can be found in the paymentSummary.refunds.refundStatus field of the getOrder response.
+
+ Args:
+ order_id (str):
+ content_type (str):
+ body (IssueRefundRequest): The base type used by the request payload of the
+ issueRefund method.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, Refund]]
+ """
+
+
+ kwargs = _get_kwargs(
+ order_id=order_id,
+body=body,
+content_type=content_type,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ order_id: str,
+ *,
+ client: AuthenticatedClient,
+ body: IssueRefundRequest,
+ content_type: str,
+
+) -> Optional[Union[Any, Refund]]:
+ r""" Issue Refund
+
+ Important! Due to EU & UK Payments regulatory
+ requirements, an additional security verification via Digital Signatures is required for certain API
+ calls that are made on behalf of EU/UK sellers, including issueRefund. Please refer to Digital Signatures for
+ APIs to learn more on the impacted APIs and the process to create signatures to be included in
+ the HTTP payload.
This method allows a seller to issue a full or partial refund to a
+ buyer for an order. Full or partial refunds can be issued at the order level or line item
+ level.
The refunds issued through this method are processed asynchronously, so the refund
+ will not show as 'Refunded' right away. A seller will have to make a subsequent getOrder call to
+ check the status of the refund. The status of an order refund can be found in the paymentSummary.refunds.refundStatus field of the getOrder response.
+
+ Args:
+ order_id (str):
+ content_type (str):
+ body (IssueRefundRequest): The base type used by the request payload of the
+ issueRefund method.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, Refund]
+ """
+
+
+ return (await asyncio_detailed(
+ order_id=order_id,
+client=client,
+body=body,
+content_type=content_type,
+
+ )).parsed
diff --git a/ebay_client/generated/fulfillment/api/payment_dispute/__init__.py b/ebay_client/generated/fulfillment/api/payment_dispute/__init__.py
new file mode 100644
index 0000000..c9921b5
--- /dev/null
+++ b/ebay_client/generated/fulfillment/api/payment_dispute/__init__.py
@@ -0,0 +1 @@
+""" Contains endpoint functions for accessing the API """
diff --git a/ebay_client/generated/fulfillment/api/payment_dispute/accept_payment_dispute.py b/ebay_client/generated/fulfillment/api/payment_dispute/accept_payment_dispute.py
new file mode 100644
index 0000000..14bb390
--- /dev/null
+++ b/ebay_client/generated/fulfillment/api/payment_dispute/accept_payment_dispute.py
@@ -0,0 +1,161 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.accept_payment_dispute_request import AcceptPaymentDisputeRequest
+from typing import cast
+
+
+
+def _get_kwargs(
+ payment_dispute_id: str,
+ *,
+ body: AcceptPaymentDisputeRequest,
+ content_type: str,
+
+) -> dict[str, Any]:
+ headers: dict[str, Any] = {}
+ headers["Content-Type"] = content_type
+
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "post",
+ "url": "/payment_dispute/{payment_dispute_id}/accept".format(payment_dispute_id=payment_dispute_id,),
+ }
+
+ _kwargs["json"] = body.to_dict()
+
+
+ headers["Content-Type"] = "application/json"
+
+ _kwargs["headers"] = headers
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Any]:
+ if response.status_code == 400:
+ return None
+ if response.status_code == 500:
+ return None
+ if response.status_code == 204:
+ return None
+ if response.status_code == 404:
+ return None
+ if response.status_code == 409:
+ return None
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Any]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ payment_dispute_id: str,
+ *,
+ client: AuthenticatedClient,
+ body: AcceptPaymentDisputeRequest,
+ content_type: str,
+
+) -> Response[Any]:
+ """ Accept Payment Dispute
+
+ This method is used if the seller wishes to accept a payment dispute. The unique identifier of the
+ payment dispute is passed in as a path parameter, and unique identifiers for payment disputes can be
+ retrieved with the getPaymentDisputeSummaries method.
The
+ revision field in the request payload is required, and the
+ returnAddress field should be supplied if the seller is expecting the buyer to
+ return the item. See the Request Payload section for more information on theste fields.
+
+ Args:
+ payment_dispute_id (str):
+ content_type (str):
+ body (AcceptPaymentDisputeRequest): This type is used by base request of the
+ acceptPaymentDispute method.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ payment_dispute_id=payment_dispute_id,
+body=body,
+content_type=content_type,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+
+async def asyncio_detailed(
+ payment_dispute_id: str,
+ *,
+ client: AuthenticatedClient,
+ body: AcceptPaymentDisputeRequest,
+ content_type: str,
+
+) -> Response[Any]:
+ """ Accept Payment Dispute
+
+ This method is used if the seller wishes to accept a payment dispute. The unique identifier of the
+ payment dispute is passed in as a path parameter, and unique identifiers for payment disputes can be
+ retrieved with the getPaymentDisputeSummaries method.
The
+ revision field in the request payload is required, and the
+ returnAddress field should be supplied if the seller is expecting the buyer to
+ return the item. See the Request Payload section for more information on theste fields.
+
+ Args:
+ payment_dispute_id (str):
+ content_type (str):
+ body (AcceptPaymentDisputeRequest): This type is used by base request of the
+ acceptPaymentDispute method.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ payment_dispute_id=payment_dispute_id,
+body=body,
+content_type=content_type,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
diff --git a/ebay_client/generated/fulfillment/api/payment_dispute/add_evidence.py b/ebay_client/generated/fulfillment/api/payment_dispute/add_evidence.py
new file mode 100644
index 0000000..1eb0cc2
--- /dev/null
+++ b/ebay_client/generated/fulfillment/api/payment_dispute/add_evidence.py
@@ -0,0 +1,324 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.add_evidence_payment_dispute_request import AddEvidencePaymentDisputeRequest
+from ...models.add_evidence_payment_dispute_response import AddEvidencePaymentDisputeResponse
+from typing import cast
+
+
+
+def _get_kwargs(
+ payment_dispute_id: str,
+ *,
+ body: AddEvidencePaymentDisputeRequest,
+ content_type: str,
+
+) -> dict[str, Any]:
+ headers: dict[str, Any] = {}
+ headers["Content-Type"] = content_type
+
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "post",
+ "url": "/payment_dispute/{payment_dispute_id}/add_evidence".format(payment_dispute_id=payment_dispute_id,),
+ }
+
+ _kwargs["json"] = body.to_dict()
+
+
+ headers["Content-Type"] = "application/json"
+
+ _kwargs["headers"] = headers
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[AddEvidencePaymentDisputeResponse, Any]]:
+ if response.status_code == 200:
+ response_200 = AddEvidencePaymentDisputeResponse.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 404:
+ response_404 = cast(Any, None)
+ return response_404
+ if response.status_code == 409:
+ response_409 = cast(Any, None)
+ return response_409
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[AddEvidencePaymentDisputeResponse, Any]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ payment_dispute_id: str,
+ *,
+ client: AuthenticatedClient,
+ body: AddEvidencePaymentDisputeRequest,
+ content_type: str,
+
+) -> Response[Union[AddEvidencePaymentDisputeResponse, Any]]:
+ r""" Add an Evidence File
+
+ This method is used by the seller to add one or more evidence files to address a payment dispute
+ initiated by the buyer. The unique identifier of the payment dispute is passed in as a path
+ parameter, and unique identifiers for payment disputes can be retrieved with the
+ getPaymentDisputeSummaries method.
Note: All evidence files should be uploaded using
+ addEvidence and updateEvidence before the seller decides to
+ contest the payment dispute. Once the seller has officially contested the dispute (using
+ contestPaymentDispute or through My eBay), the addEvidence and
+ updateEvidence methods can no longer be used. In the
+ evidenceRequests array of the getPaymentDispute response, eBay
+ prompts the seller with the type of evidence file(s) that will be needed to contest the payment
+ dispute.
The file(s) to add are identified through the files array in
+ the request payload. Adding one or more new evidence files for a payment dispute triggers the
+ creation of an evidence file, and the unique identifier for the new evidence file is automatically
+ generated and returned in the evidenceId field of the addEvidence
+ response payload upon a successful call.
The type of evidence being added should be specified
+ in the evidenceType field. All files being added (if more than one) should
+ correspond to this evidence type.
Upon a successful call, an evidenceId
+ value is returned in the response. This indicates that a new evidence set has been created for the
+ payment dispute, and this evidence set includes the evidence file(s) that were passed in to the
+ fileId array. The evidenceId value will be needed if the seller
+ wishes to add to the evidence set by using the updateEvidence method, or if they
+ want to retrieve a specific evidence file within the evidence set by using the
+ fetchEvidenceContent method.
+
+ Args:
+ payment_dispute_id (str):
+ content_type (str):
+ body (AddEvidencePaymentDisputeRequest): This type is used by the request payload of the
+ addEvidence method. The addEvidence method is used to
+ create a new evidence set against a payment dispute with one or more evidence files.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[AddEvidencePaymentDisputeResponse, Any]]
+ """
+
+
+ kwargs = _get_kwargs(
+ payment_dispute_id=payment_dispute_id,
+body=body,
+content_type=content_type,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ payment_dispute_id: str,
+ *,
+ client: AuthenticatedClient,
+ body: AddEvidencePaymentDisputeRequest,
+ content_type: str,
+
+) -> Optional[Union[AddEvidencePaymentDisputeResponse, Any]]:
+ r""" Add an Evidence File
+
+ This method is used by the seller to add one or more evidence files to address a payment dispute
+ initiated by the buyer. The unique identifier of the payment dispute is passed in as a path
+ parameter, and unique identifiers for payment disputes can be retrieved with the
+ getPaymentDisputeSummaries method.
Note: All evidence files should be uploaded using
+ addEvidence and updateEvidence before the seller decides to
+ contest the payment dispute. Once the seller has officially contested the dispute (using
+ contestPaymentDispute or through My eBay), the addEvidence and
+ updateEvidence methods can no longer be used. In the
+ evidenceRequests array of the getPaymentDispute response, eBay
+ prompts the seller with the type of evidence file(s) that will be needed to contest the payment
+ dispute.
The file(s) to add are identified through the files array in
+ the request payload. Adding one or more new evidence files for a payment dispute triggers the
+ creation of an evidence file, and the unique identifier for the new evidence file is automatically
+ generated and returned in the evidenceId field of the addEvidence
+ response payload upon a successful call.
The type of evidence being added should be specified
+ in the evidenceType field. All files being added (if more than one) should
+ correspond to this evidence type.
Upon a successful call, an evidenceId
+ value is returned in the response. This indicates that a new evidence set has been created for the
+ payment dispute, and this evidence set includes the evidence file(s) that were passed in to the
+ fileId array. The evidenceId value will be needed if the seller
+ wishes to add to the evidence set by using the updateEvidence method, or if they
+ want to retrieve a specific evidence file within the evidence set by using the
+ fetchEvidenceContent method.
+
+ Args:
+ payment_dispute_id (str):
+ content_type (str):
+ body (AddEvidencePaymentDisputeRequest): This type is used by the request payload of the
+ addEvidence method. The addEvidence method is used to
+ create a new evidence set against a payment dispute with one or more evidence files.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[AddEvidencePaymentDisputeResponse, Any]
+ """
+
+
+ return sync_detailed(
+ payment_dispute_id=payment_dispute_id,
+client=client,
+body=body,
+content_type=content_type,
+
+ ).parsed
+
+async def asyncio_detailed(
+ payment_dispute_id: str,
+ *,
+ client: AuthenticatedClient,
+ body: AddEvidencePaymentDisputeRequest,
+ content_type: str,
+
+) -> Response[Union[AddEvidencePaymentDisputeResponse, Any]]:
+ r""" Add an Evidence File
+
+ This method is used by the seller to add one or more evidence files to address a payment dispute
+ initiated by the buyer. The unique identifier of the payment dispute is passed in as a path
+ parameter, and unique identifiers for payment disputes can be retrieved with the
+ getPaymentDisputeSummaries method.
Note: All evidence files should be uploaded using
+ addEvidence and updateEvidence before the seller decides to
+ contest the payment dispute. Once the seller has officially contested the dispute (using
+ contestPaymentDispute or through My eBay), the addEvidence and
+ updateEvidence methods can no longer be used. In the
+ evidenceRequests array of the getPaymentDispute response, eBay
+ prompts the seller with the type of evidence file(s) that will be needed to contest the payment
+ dispute.
The file(s) to add are identified through the files array in
+ the request payload. Adding one or more new evidence files for a payment dispute triggers the
+ creation of an evidence file, and the unique identifier for the new evidence file is automatically
+ generated and returned in the evidenceId field of the addEvidence
+ response payload upon a successful call.
The type of evidence being added should be specified
+ in the evidenceType field. All files being added (if more than one) should
+ correspond to this evidence type.
Upon a successful call, an evidenceId
+ value is returned in the response. This indicates that a new evidence set has been created for the
+ payment dispute, and this evidence set includes the evidence file(s) that were passed in to the
+ fileId array. The evidenceId value will be needed if the seller
+ wishes to add to the evidence set by using the updateEvidence method, or if they
+ want to retrieve a specific evidence file within the evidence set by using the
+ fetchEvidenceContent method.
+
+ Args:
+ payment_dispute_id (str):
+ content_type (str):
+ body (AddEvidencePaymentDisputeRequest): This type is used by the request payload of the
+ addEvidence method. The addEvidence method is used to
+ create a new evidence set against a payment dispute with one or more evidence files.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[AddEvidencePaymentDisputeResponse, Any]]
+ """
+
+
+ kwargs = _get_kwargs(
+ payment_dispute_id=payment_dispute_id,
+body=body,
+content_type=content_type,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ payment_dispute_id: str,
+ *,
+ client: AuthenticatedClient,
+ body: AddEvidencePaymentDisputeRequest,
+ content_type: str,
+
+) -> Optional[Union[AddEvidencePaymentDisputeResponse, Any]]:
+ r""" Add an Evidence File
+
+ This method is used by the seller to add one or more evidence files to address a payment dispute
+ initiated by the buyer. The unique identifier of the payment dispute is passed in as a path
+ parameter, and unique identifiers for payment disputes can be retrieved with the
+ getPaymentDisputeSummaries method.
Note: All evidence files should be uploaded using
+ addEvidence and updateEvidence before the seller decides to
+ contest the payment dispute. Once the seller has officially contested the dispute (using
+ contestPaymentDispute or through My eBay), the addEvidence and
+ updateEvidence methods can no longer be used. In the
+ evidenceRequests array of the getPaymentDispute response, eBay
+ prompts the seller with the type of evidence file(s) that will be needed to contest the payment
+ dispute.
The file(s) to add are identified through the files array in
+ the request payload. Adding one or more new evidence files for a payment dispute triggers the
+ creation of an evidence file, and the unique identifier for the new evidence file is automatically
+ generated and returned in the evidenceId field of the addEvidence
+ response payload upon a successful call.
The type of evidence being added should be specified
+ in the evidenceType field. All files being added (if more than one) should
+ correspond to this evidence type.
Upon a successful call, an evidenceId
+ value is returned in the response. This indicates that a new evidence set has been created for the
+ payment dispute, and this evidence set includes the evidence file(s) that were passed in to the
+ fileId array. The evidenceId value will be needed if the seller
+ wishes to add to the evidence set by using the updateEvidence method, or if they
+ want to retrieve a specific evidence file within the evidence set by using the
+ fetchEvidenceContent method.
+
+ Args:
+ payment_dispute_id (str):
+ content_type (str):
+ body (AddEvidencePaymentDisputeRequest): This type is used by the request payload of the
+ addEvidence method. The addEvidence method is used to
+ create a new evidence set against a payment dispute with one or more evidence files.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[AddEvidencePaymentDisputeResponse, Any]
+ """
+
+
+ return (await asyncio_detailed(
+ payment_dispute_id=payment_dispute_id,
+client=client,
+body=body,
+content_type=content_type,
+
+ )).parsed
diff --git a/ebay_client/generated/fulfillment/api/payment_dispute/contest_payment_dispute.py b/ebay_client/generated/fulfillment/api/payment_dispute/contest_payment_dispute.py
new file mode 100644
index 0000000..037b221
--- /dev/null
+++ b/ebay_client/generated/fulfillment/api/payment_dispute/contest_payment_dispute.py
@@ -0,0 +1,183 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.contest_payment_dispute_request import ContestPaymentDisputeRequest
+from typing import cast
+
+
+
+def _get_kwargs(
+ payment_dispute_id: str,
+ *,
+ body: ContestPaymentDisputeRequest,
+ content_type: str,
+
+) -> dict[str, Any]:
+ headers: dict[str, Any] = {}
+ headers["Content-Type"] = content_type
+
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "post",
+ "url": "/payment_dispute/{payment_dispute_id}/contest".format(payment_dispute_id=payment_dispute_id,),
+ }
+
+ _kwargs["json"] = body.to_dict()
+
+
+ headers["Content-Type"] = "application/json"
+
+ _kwargs["headers"] = headers
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Any]:
+ if response.status_code == 400:
+ return None
+ if response.status_code == 500:
+ return None
+ if response.status_code == 204:
+ return None
+ if response.status_code == 404:
+ return None
+ if response.status_code == 409:
+ return None
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Any]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ payment_dispute_id: str,
+ *,
+ client: AuthenticatedClient,
+ body: ContestPaymentDisputeRequest,
+ content_type: str,
+
+) -> Response[Any]:
+ r""" Contest Payment Dispute
+
+ This method is used if the seller wishes to contest a payment dispute initiated by the buyer. The
+ unique identifier of the payment dispute is passed in as a path parameter, and unique identifiers
+ for payment disputes can be retrieved with the getPaymentDisputeSummaries
+ method.
Note: Before contesting a payment dispute,
+ the seller must upload all supporting files using the addEvidence and
+ updateEvidence methods. Once the seller has officially contested the dispute (using
+ contestPaymentDispute), the addEvidence and
+ updateEvidence methods can no longer be used. In the
+ evidenceRequests array of the getPaymentDispute response, eBay
+ prompts the seller with the type of supporting file(s) that will be needed to contest the payment
+ dispute.
If a seller decides to contest a payment dispute, that seller should be
+ prepared to provide supporting documents such as proof of delivery, proof of authentication, or
+ other documents. The type of supporting documents that the seller will provide will depend on why
+ the buyer filed the payment dispute.
The revision field in the request
+ payload is required, and the returnAddress field should be supplied if the seller
+ is expecting the buyer to return the item. See the Request Payload section for more information on
+ these fields.
+
+ Args:
+ payment_dispute_id (str):
+ content_type (str):
+ body (ContestPaymentDisputeRequest): This type is used by the request payload of the
+ contestPaymentDispute method.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ payment_dispute_id=payment_dispute_id,
+body=body,
+content_type=content_type,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+
+async def asyncio_detailed(
+ payment_dispute_id: str,
+ *,
+ client: AuthenticatedClient,
+ body: ContestPaymentDisputeRequest,
+ content_type: str,
+
+) -> Response[Any]:
+ r""" Contest Payment Dispute
+
+ This method is used if the seller wishes to contest a payment dispute initiated by the buyer. The
+ unique identifier of the payment dispute is passed in as a path parameter, and unique identifiers
+ for payment disputes can be retrieved with the getPaymentDisputeSummaries
+ method.
Note: Before contesting a payment dispute,
+ the seller must upload all supporting files using the addEvidence and
+ updateEvidence methods. Once the seller has officially contested the dispute (using
+ contestPaymentDispute), the addEvidence and
+ updateEvidence methods can no longer be used. In the
+ evidenceRequests array of the getPaymentDispute response, eBay
+ prompts the seller with the type of supporting file(s) that will be needed to contest the payment
+ dispute.
If a seller decides to contest a payment dispute, that seller should be
+ prepared to provide supporting documents such as proof of delivery, proof of authentication, or
+ other documents. The type of supporting documents that the seller will provide will depend on why
+ the buyer filed the payment dispute.
The revision field in the request
+ payload is required, and the returnAddress field should be supplied if the seller
+ is expecting the buyer to return the item. See the Request Payload section for more information on
+ these fields.
+
+ Args:
+ payment_dispute_id (str):
+ content_type (str):
+ body (ContestPaymentDisputeRequest): This type is used by the request payload of the
+ contestPaymentDispute method.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ payment_dispute_id=payment_dispute_id,
+body=body,
+content_type=content_type,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
diff --git a/ebay_client/generated/fulfillment/api/payment_dispute/fetch_evidence_content.py b/ebay_client/generated/fulfillment/api/payment_dispute/fetch_evidence_content.py
new file mode 100644
index 0000000..b11089b
--- /dev/null
+++ b/ebay_client/generated/fulfillment/api/payment_dispute/fetch_evidence_content.py
@@ -0,0 +1,262 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from typing import cast
+
+
+
+def _get_kwargs(
+ payment_dispute_id: str,
+ *,
+ evidence_id: str,
+ file_id: str,
+
+) -> dict[str, Any]:
+
+
+
+
+ params: dict[str, Any] = {}
+
+ params["evidence_id"] = evidence_id
+
+ params["file_id"] = file_id
+
+
+ params = {k: v for k, v in params.items() if v is not UNSET and v is not None}
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/payment_dispute/{payment_dispute_id}/fetch_evidence_content".format(payment_dispute_id=payment_dispute_id,),
+ "params": params,
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, list[str]]]:
+ if response.status_code == 200:
+ response_200 = cast(list[str], response.content)
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 404:
+ response_404 = cast(Any, None)
+ return response_404
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, list[str]]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ payment_dispute_id: str,
+ *,
+ client: AuthenticatedClient,
+ evidence_id: str,
+ file_id: str,
+
+) -> Response[Union[Any, list[str]]]:
+ """ Get Payment Dispute Evidence File
+
+ This call retrieves a specific evidence file for a payment dispute. The following three identifying
+ parameters are needed in the call URI:- payment_dispute_id: the identifier of
+ the payment dispute. The identifier of each payment dispute is returned in the
+ getPaymentDisputeSummaries response.
- evidence_id: the
+ identifier of the evidential file set. The identifier of an evidential file set for a payment
+ dispute is returned under the evidence array in the
+ getPaymentDispute response.
- file_id: the identifier of an
+ evidential file. This file must belong to the evidential file set identified through the
+ evidence_id query parameter. The identifier of each evidential file is returned
+ under the evidence.files array in the getPaymentDispute
+ response.
An actual binary file is returned if the call is successful. An error will
+ occur if any of three identifiers are invalid.
+
+ Args:
+ payment_dispute_id (str):
+ evidence_id (str):
+ file_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, list[str]]]
+ """
+
+
+ kwargs = _get_kwargs(
+ payment_dispute_id=payment_dispute_id,
+evidence_id=evidence_id,
+file_id=file_id,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ payment_dispute_id: str,
+ *,
+ client: AuthenticatedClient,
+ evidence_id: str,
+ file_id: str,
+
+) -> Optional[Union[Any, list[str]]]:
+ """ Get Payment Dispute Evidence File
+
+ This call retrieves a specific evidence file for a payment dispute. The following three identifying
+ parameters are needed in the call URI:- payment_dispute_id: the identifier of
+ the payment dispute. The identifier of each payment dispute is returned in the
+ getPaymentDisputeSummaries response.
- evidence_id: the
+ identifier of the evidential file set. The identifier of an evidential file set for a payment
+ dispute is returned under the evidence array in the
+ getPaymentDispute response.
- file_id: the identifier of an
+ evidential file. This file must belong to the evidential file set identified through the
+ evidence_id query parameter. The identifier of each evidential file is returned
+ under the evidence.files array in the getPaymentDispute
+ response.
An actual binary file is returned if the call is successful. An error will
+ occur if any of three identifiers are invalid.
+
+ Args:
+ payment_dispute_id (str):
+ evidence_id (str):
+ file_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, list[str]]
+ """
+
+
+ return sync_detailed(
+ payment_dispute_id=payment_dispute_id,
+client=client,
+evidence_id=evidence_id,
+file_id=file_id,
+
+ ).parsed
+
+async def asyncio_detailed(
+ payment_dispute_id: str,
+ *,
+ client: AuthenticatedClient,
+ evidence_id: str,
+ file_id: str,
+
+) -> Response[Union[Any, list[str]]]:
+ """ Get Payment Dispute Evidence File
+
+ This call retrieves a specific evidence file for a payment dispute. The following three identifying
+ parameters are needed in the call URI:- payment_dispute_id: the identifier of
+ the payment dispute. The identifier of each payment dispute is returned in the
+ getPaymentDisputeSummaries response.
- evidence_id: the
+ identifier of the evidential file set. The identifier of an evidential file set for a payment
+ dispute is returned under the evidence array in the
+ getPaymentDispute response.
- file_id: the identifier of an
+ evidential file. This file must belong to the evidential file set identified through the
+ evidence_id query parameter. The identifier of each evidential file is returned
+ under the evidence.files array in the getPaymentDispute
+ response.
An actual binary file is returned if the call is successful. An error will
+ occur if any of three identifiers are invalid.
+
+ Args:
+ payment_dispute_id (str):
+ evidence_id (str):
+ file_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, list[str]]]
+ """
+
+
+ kwargs = _get_kwargs(
+ payment_dispute_id=payment_dispute_id,
+evidence_id=evidence_id,
+file_id=file_id,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ payment_dispute_id: str,
+ *,
+ client: AuthenticatedClient,
+ evidence_id: str,
+ file_id: str,
+
+) -> Optional[Union[Any, list[str]]]:
+ """ Get Payment Dispute Evidence File
+
+ This call retrieves a specific evidence file for a payment dispute. The following three identifying
+ parameters are needed in the call URI:- payment_dispute_id: the identifier of
+ the payment dispute. The identifier of each payment dispute is returned in the
+ getPaymentDisputeSummaries response.
- evidence_id: the
+ identifier of the evidential file set. The identifier of an evidential file set for a payment
+ dispute is returned under the evidence array in the
+ getPaymentDispute response.
- file_id: the identifier of an
+ evidential file. This file must belong to the evidential file set identified through the
+ evidence_id query parameter. The identifier of each evidential file is returned
+ under the evidence.files array in the getPaymentDispute
+ response.
An actual binary file is returned if the call is successful. An error will
+ occur if any of three identifiers are invalid.
+
+ Args:
+ payment_dispute_id (str):
+ evidence_id (str):
+ file_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, list[str]]
+ """
+
+
+ return (await asyncio_detailed(
+ payment_dispute_id=payment_dispute_id,
+client=client,
+evidence_id=evidence_id,
+file_id=file_id,
+
+ )).parsed
diff --git a/ebay_client/generated/fulfillment/api/payment_dispute/get_activities.py b/ebay_client/generated/fulfillment/api/payment_dispute/get_activities.py
new file mode 100644
index 0000000..81ad868
--- /dev/null
+++ b/ebay_client/generated/fulfillment/api/payment_dispute/get_activities.py
@@ -0,0 +1,193 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.payment_dispute_activity_history import PaymentDisputeActivityHistory
+from typing import cast
+
+
+
+def _get_kwargs(
+ payment_dispute_id: str,
+
+) -> dict[str, Any]:
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/payment_dispute/{payment_dispute_id}/activity".format(payment_dispute_id=payment_dispute_id,),
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, PaymentDisputeActivityHistory]]:
+ if response.status_code == 200:
+ response_200 = PaymentDisputeActivityHistory.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 404:
+ response_404 = cast(Any, None)
+ return response_404
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, PaymentDisputeActivityHistory]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ payment_dispute_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, PaymentDisputeActivityHistory]]:
+ """ Get Payment Dispute Activity
+
+ This method retrieve a log of activity for a payment dispute. The identifier of the payment dispute
+ is passed in as a path parameter. The output includes a timestamp for each action of the payment
+ dispute, from creation to resolution, and all steps in between.
+
+ Args:
+ payment_dispute_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, PaymentDisputeActivityHistory]]
+ """
+
+
+ kwargs = _get_kwargs(
+ payment_dispute_id=payment_dispute_id,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ payment_dispute_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, PaymentDisputeActivityHistory]]:
+ """ Get Payment Dispute Activity
+
+ This method retrieve a log of activity for a payment dispute. The identifier of the payment dispute
+ is passed in as a path parameter. The output includes a timestamp for each action of the payment
+ dispute, from creation to resolution, and all steps in between.
+
+ Args:
+ payment_dispute_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, PaymentDisputeActivityHistory]
+ """
+
+
+ return sync_detailed(
+ payment_dispute_id=payment_dispute_id,
+client=client,
+
+ ).parsed
+
+async def asyncio_detailed(
+ payment_dispute_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, PaymentDisputeActivityHistory]]:
+ """ Get Payment Dispute Activity
+
+ This method retrieve a log of activity for a payment dispute. The identifier of the payment dispute
+ is passed in as a path parameter. The output includes a timestamp for each action of the payment
+ dispute, from creation to resolution, and all steps in between.
+
+ Args:
+ payment_dispute_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, PaymentDisputeActivityHistory]]
+ """
+
+
+ kwargs = _get_kwargs(
+ payment_dispute_id=payment_dispute_id,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ payment_dispute_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, PaymentDisputeActivityHistory]]:
+ """ Get Payment Dispute Activity
+
+ This method retrieve a log of activity for a payment dispute. The identifier of the payment dispute
+ is passed in as a path parameter. The output includes a timestamp for each action of the payment
+ dispute, from creation to resolution, and all steps in between.
+
+ Args:
+ payment_dispute_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, PaymentDisputeActivityHistory]
+ """
+
+
+ return (await asyncio_detailed(
+ payment_dispute_id=payment_dispute_id,
+client=client,
+
+ )).parsed
diff --git a/ebay_client/generated/fulfillment/api/payment_dispute/get_payment_dispute.py b/ebay_client/generated/fulfillment/api/payment_dispute/get_payment_dispute.py
new file mode 100644
index 0000000..4cd3984
--- /dev/null
+++ b/ebay_client/generated/fulfillment/api/payment_dispute/get_payment_dispute.py
@@ -0,0 +1,213 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.payment_dispute import PaymentDispute
+from typing import cast
+
+
+
+def _get_kwargs(
+ payment_dispute_id: str,
+
+) -> dict[str, Any]:
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/payment_dispute/{payment_dispute_id}".format(payment_dispute_id=payment_dispute_id,),
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, PaymentDispute]]:
+ if response.status_code == 200:
+ response_200 = PaymentDispute.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 404:
+ response_404 = cast(Any, None)
+ return response_404
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, PaymentDispute]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ payment_dispute_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, PaymentDispute]]:
+ """ Get Payment Dispute Details
+
+ This method retrieves detailed information on a specific payment dispute. The payment dispute
+ identifier is passed in as path parameter at the end of the call URI.
Below is a summary of
+ the information that is retrieved:- Current status of payment dispute
- Amount of the
+ payment dispute
- Reason the payment dispute was opened
- Order and line items
+ associated with the payment dispute
- Seller response options if an action is currently
+ required on the payment dispute
- Details on the results of the payment dispute if it has been
+ closed
- Details on any evidence that was provided by the seller to fight the payment
+ dispute
+
+ Args:
+ payment_dispute_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, PaymentDispute]]
+ """
+
+
+ kwargs = _get_kwargs(
+ payment_dispute_id=payment_dispute_id,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ payment_dispute_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, PaymentDispute]]:
+ """ Get Payment Dispute Details
+
+ This method retrieves detailed information on a specific payment dispute. The payment dispute
+ identifier is passed in as path parameter at the end of the call URI.
Below is a summary of
+ the information that is retrieved:- Current status of payment dispute
- Amount of the
+ payment dispute
- Reason the payment dispute was opened
- Order and line items
+ associated with the payment dispute
- Seller response options if an action is currently
+ required on the payment dispute
- Details on the results of the payment dispute if it has been
+ closed
- Details on any evidence that was provided by the seller to fight the payment
+ dispute
+
+ Args:
+ payment_dispute_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, PaymentDispute]
+ """
+
+
+ return sync_detailed(
+ payment_dispute_id=payment_dispute_id,
+client=client,
+
+ ).parsed
+
+async def asyncio_detailed(
+ payment_dispute_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, PaymentDispute]]:
+ """ Get Payment Dispute Details
+
+ This method retrieves detailed information on a specific payment dispute. The payment dispute
+ identifier is passed in as path parameter at the end of the call URI.
Below is a summary of
+ the information that is retrieved:- Current status of payment dispute
- Amount of the
+ payment dispute
- Reason the payment dispute was opened
- Order and line items
+ associated with the payment dispute
- Seller response options if an action is currently
+ required on the payment dispute
- Details on the results of the payment dispute if it has been
+ closed
- Details on any evidence that was provided by the seller to fight the payment
+ dispute
+
+ Args:
+ payment_dispute_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, PaymentDispute]]
+ """
+
+
+ kwargs = _get_kwargs(
+ payment_dispute_id=payment_dispute_id,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ payment_dispute_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, PaymentDispute]]:
+ """ Get Payment Dispute Details
+
+ This method retrieves detailed information on a specific payment dispute. The payment dispute
+ identifier is passed in as path parameter at the end of the call URI.
Below is a summary of
+ the information that is retrieved:- Current status of payment dispute
- Amount of the
+ payment dispute
- Reason the payment dispute was opened
- Order and line items
+ associated with the payment dispute
- Seller response options if an action is currently
+ required on the payment dispute
- Details on the results of the payment dispute if it has been
+ closed
- Details on any evidence that was provided by the seller to fight the payment
+ dispute
+
+ Args:
+ payment_dispute_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, PaymentDispute]
+ """
+
+
+ return (await asyncio_detailed(
+ payment_dispute_id=payment_dispute_id,
+client=client,
+
+ )).parsed
diff --git a/ebay_client/generated/fulfillment/api/payment_dispute/get_payment_dispute_summaries.py b/ebay_client/generated/fulfillment/api/payment_dispute/get_payment_dispute_summaries.py
new file mode 100644
index 0000000..3b20132
--- /dev/null
+++ b/ebay_client/generated/fulfillment/api/payment_dispute/get_payment_dispute_summaries.py
@@ -0,0 +1,322 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.dispute_summary_response import DisputeSummaryResponse
+from ...types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+
+
+def _get_kwargs(
+ *,
+ order_id: Union[Unset, str] = UNSET,
+ buyer_username: Union[Unset, str] = UNSET,
+ open_date_from: Union[Unset, str] = UNSET,
+ open_date_to: Union[Unset, str] = UNSET,
+ payment_dispute_status: Union[Unset, str] = UNSET,
+ limit: Union[Unset, str] = UNSET,
+ offset: Union[Unset, str] = UNSET,
+
+) -> dict[str, Any]:
+
+
+
+
+ params: dict[str, Any] = {}
+
+ params["order_id"] = order_id
+
+ params["buyer_username"] = buyer_username
+
+ params["open_date_from"] = open_date_from
+
+ params["open_date_to"] = open_date_to
+
+ params["payment_dispute_status"] = payment_dispute_status
+
+ params["limit"] = limit
+
+ params["offset"] = offset
+
+
+ params = {k: v for k, v in params.items() if v is not UNSET and v is not None}
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/payment_dispute_summary",
+ "params": params,
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, DisputeSummaryResponse]]:
+ if response.status_code == 200:
+ response_200 = DisputeSummaryResponse.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, DisputeSummaryResponse]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ *,
+ client: AuthenticatedClient,
+ order_id: Union[Unset, str] = UNSET,
+ buyer_username: Union[Unset, str] = UNSET,
+ open_date_from: Union[Unset, str] = UNSET,
+ open_date_to: Union[Unset, str] = UNSET,
+ payment_dispute_status: Union[Unset, str] = UNSET,
+ limit: Union[Unset, str] = UNSET,
+ offset: Union[Unset, str] = UNSET,
+
+) -> Response[Union[Any, DisputeSummaryResponse]]:
+ """ Search Payment Dispute by Filters
+
+ This method is used retrieve one or more payment disputes filed against the seller. These payment
+ disputes can be open or recently closed. The following filter types are available in the request
+ payload to control the payment disputes that are returned:- Dispute filed against a specific
+ order (order_id parameter is used)
- Dispute(s) filed by a specific buyer
+ (buyer_username parameter is used)
- Dispute(s) filed within a specific date range
+ (open_date_from and/or open_date_to parameters are used)
- Disputes in a
+ specific state (payment_dispute_status parameter is used)
More than one of these
+ filter types can be used together. See the request payload request fields for more information about
+ how each filter is used.
If none of the filters are used, all open and recently closed
+ payment disputes are returned.
Pagination is also available. See the limit and
+ offset fields for more information on how pagination is used for this method.
+
+ Args:
+ order_id (Union[Unset, str]):
+ buyer_username (Union[Unset, str]):
+ open_date_from (Union[Unset, str]):
+ open_date_to (Union[Unset, str]):
+ payment_dispute_status (Union[Unset, str]):
+ limit (Union[Unset, str]):
+ offset (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, DisputeSummaryResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ order_id=order_id,
+buyer_username=buyer_username,
+open_date_from=open_date_from,
+open_date_to=open_date_to,
+payment_dispute_status=payment_dispute_status,
+limit=limit,
+offset=offset,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ *,
+ client: AuthenticatedClient,
+ order_id: Union[Unset, str] = UNSET,
+ buyer_username: Union[Unset, str] = UNSET,
+ open_date_from: Union[Unset, str] = UNSET,
+ open_date_to: Union[Unset, str] = UNSET,
+ payment_dispute_status: Union[Unset, str] = UNSET,
+ limit: Union[Unset, str] = UNSET,
+ offset: Union[Unset, str] = UNSET,
+
+) -> Optional[Union[Any, DisputeSummaryResponse]]:
+ """ Search Payment Dispute by Filters
+
+ This method is used retrieve one or more payment disputes filed against the seller. These payment
+ disputes can be open or recently closed. The following filter types are available in the request
+ payload to control the payment disputes that are returned:- Dispute filed against a specific
+ order (order_id parameter is used)
- Dispute(s) filed by a specific buyer
+ (buyer_username parameter is used)
- Dispute(s) filed within a specific date range
+ (open_date_from and/or open_date_to parameters are used)
- Disputes in a
+ specific state (payment_dispute_status parameter is used)
More than one of these
+ filter types can be used together. See the request payload request fields for more information about
+ how each filter is used.
If none of the filters are used, all open and recently closed
+ payment disputes are returned.
Pagination is also available. See the limit and
+ offset fields for more information on how pagination is used for this method.
+
+ Args:
+ order_id (Union[Unset, str]):
+ buyer_username (Union[Unset, str]):
+ open_date_from (Union[Unset, str]):
+ open_date_to (Union[Unset, str]):
+ payment_dispute_status (Union[Unset, str]):
+ limit (Union[Unset, str]):
+ offset (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, DisputeSummaryResponse]
+ """
+
+
+ return sync_detailed(
+ client=client,
+order_id=order_id,
+buyer_username=buyer_username,
+open_date_from=open_date_from,
+open_date_to=open_date_to,
+payment_dispute_status=payment_dispute_status,
+limit=limit,
+offset=offset,
+
+ ).parsed
+
+async def asyncio_detailed(
+ *,
+ client: AuthenticatedClient,
+ order_id: Union[Unset, str] = UNSET,
+ buyer_username: Union[Unset, str] = UNSET,
+ open_date_from: Union[Unset, str] = UNSET,
+ open_date_to: Union[Unset, str] = UNSET,
+ payment_dispute_status: Union[Unset, str] = UNSET,
+ limit: Union[Unset, str] = UNSET,
+ offset: Union[Unset, str] = UNSET,
+
+) -> Response[Union[Any, DisputeSummaryResponse]]:
+ """ Search Payment Dispute by Filters
+
+ This method is used retrieve one or more payment disputes filed against the seller. These payment
+ disputes can be open or recently closed. The following filter types are available in the request
+ payload to control the payment disputes that are returned:- Dispute filed against a specific
+ order (order_id parameter is used)
- Dispute(s) filed by a specific buyer
+ (buyer_username parameter is used)
- Dispute(s) filed within a specific date range
+ (open_date_from and/or open_date_to parameters are used)
- Disputes in a
+ specific state (payment_dispute_status parameter is used)
More than one of these
+ filter types can be used together. See the request payload request fields for more information about
+ how each filter is used.
If none of the filters are used, all open and recently closed
+ payment disputes are returned.
Pagination is also available. See the limit and
+ offset fields for more information on how pagination is used for this method.
+
+ Args:
+ order_id (Union[Unset, str]):
+ buyer_username (Union[Unset, str]):
+ open_date_from (Union[Unset, str]):
+ open_date_to (Union[Unset, str]):
+ payment_dispute_status (Union[Unset, str]):
+ limit (Union[Unset, str]):
+ offset (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, DisputeSummaryResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ order_id=order_id,
+buyer_username=buyer_username,
+open_date_from=open_date_from,
+open_date_to=open_date_to,
+payment_dispute_status=payment_dispute_status,
+limit=limit,
+offset=offset,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ *,
+ client: AuthenticatedClient,
+ order_id: Union[Unset, str] = UNSET,
+ buyer_username: Union[Unset, str] = UNSET,
+ open_date_from: Union[Unset, str] = UNSET,
+ open_date_to: Union[Unset, str] = UNSET,
+ payment_dispute_status: Union[Unset, str] = UNSET,
+ limit: Union[Unset, str] = UNSET,
+ offset: Union[Unset, str] = UNSET,
+
+) -> Optional[Union[Any, DisputeSummaryResponse]]:
+ """ Search Payment Dispute by Filters
+
+ This method is used retrieve one or more payment disputes filed against the seller. These payment
+ disputes can be open or recently closed. The following filter types are available in the request
+ payload to control the payment disputes that are returned:- Dispute filed against a specific
+ order (order_id parameter is used)
- Dispute(s) filed by a specific buyer
+ (buyer_username parameter is used)
- Dispute(s) filed within a specific date range
+ (open_date_from and/or open_date_to parameters are used)
- Disputes in a
+ specific state (payment_dispute_status parameter is used)
More than one of these
+ filter types can be used together. See the request payload request fields for more information about
+ how each filter is used.
If none of the filters are used, all open and recently closed
+ payment disputes are returned.
Pagination is also available. See the limit and
+ offset fields for more information on how pagination is used for this method.
+
+ Args:
+ order_id (Union[Unset, str]):
+ buyer_username (Union[Unset, str]):
+ open_date_from (Union[Unset, str]):
+ open_date_to (Union[Unset, str]):
+ payment_dispute_status (Union[Unset, str]):
+ limit (Union[Unset, str]):
+ offset (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, DisputeSummaryResponse]
+ """
+
+
+ return (await asyncio_detailed(
+ client=client,
+order_id=order_id,
+buyer_username=buyer_username,
+open_date_from=open_date_from,
+open_date_to=open_date_to,
+payment_dispute_status=payment_dispute_status,
+limit=limit,
+offset=offset,
+
+ )).parsed
diff --git a/ebay_client/generated/fulfillment/api/payment_dispute/update_evidence.py b/ebay_client/generated/fulfillment/api/payment_dispute/update_evidence.py
new file mode 100644
index 0000000..226c9d9
--- /dev/null
+++ b/ebay_client/generated/fulfillment/api/payment_dispute/update_evidence.py
@@ -0,0 +1,199 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.update_evidence_payment_dispute_request import UpdateEvidencePaymentDisputeRequest
+from typing import cast
+
+
+
+def _get_kwargs(
+ payment_dispute_id: str,
+ *,
+ body: UpdateEvidencePaymentDisputeRequest,
+ content_type: str,
+
+) -> dict[str, Any]:
+ headers: dict[str, Any] = {}
+ headers["Content-Type"] = content_type
+
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "post",
+ "url": "/payment_dispute/{payment_dispute_id}/update_evidence".format(payment_dispute_id=payment_dispute_id,),
+ }
+
+ _kwargs["json"] = body.to_dict()
+
+
+ headers["Content-Type"] = "application/json"
+
+ _kwargs["headers"] = headers
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Any]:
+ if response.status_code == 400:
+ return None
+ if response.status_code == 500:
+ return None
+ if response.status_code == 204:
+ return None
+ if response.status_code == 404:
+ return None
+ if response.status_code == 409:
+ return None
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Any]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ payment_dispute_id: str,
+ *,
+ client: AuthenticatedClient,
+ body: UpdateEvidencePaymentDisputeRequest,
+ content_type: str,
+
+) -> Response[Any]:
+ r""" Update evidence
+
+ This method is used by the seller to update an existing evidence set for a payment dispute with one
+ or more evidence files. The unique identifier of the payment dispute is passed in as a path
+ parameter, and unique identifiers for payment disputes can be retrieved with the
+ getPaymentDisputeSummaries method.
Note: All evidence files should be uploaded using
+ addEvidence and updateEvidence before the seller decides to
+ contest the payment dispute. Once the seller has officially contested the dispute (using
+ contestPaymentDispute or through My eBay), the addEvidence and
+ updateEvidence methods can no longer be used. In the
+ evidenceRequests array of the getPaymentDispute response, eBay
+ prompts the seller with the type of evidence file(s) that will be needed to contest the payment
+ dispute.
The unique identifier of the evidence set to update is specified through the
+ evidenceId field, and the file(s) to add are identified through the
+ files array in the request payload. The unique identifier for an evidence file is
+ automatically generated and returned in the fileId field of the
+ uploadEvidence response payload upon a successful call. Sellers must make sure to
+ capture the fileId value for each evidence file that is uploaded with the
+ uploadEvidence method.
The type of evidence being added should be specified
+ in the evidenceType field. All files being added (if more than one) should
+ correspond to this evidence type.
Upon a successful call, an http status code of 204
+ Success is returned. There is no response payload unless an error occurs. To verify that a
+ new file is a part of the evidence set, the seller can use the fetchEvidenceContent
+ method, passing in the proper evidenceId and fileId values.
+
+ Args:
+ payment_dispute_id (str):
+ content_type (str):
+ body (UpdateEvidencePaymentDisputeRequest): This type is used by the request payload of
+ the updateEvidence method. The updateEvidence method is
+ used to update an existing evidence set against a payment dispute with one or more
+ evidence files.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ payment_dispute_id=payment_dispute_id,
+body=body,
+content_type=content_type,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+
+async def asyncio_detailed(
+ payment_dispute_id: str,
+ *,
+ client: AuthenticatedClient,
+ body: UpdateEvidencePaymentDisputeRequest,
+ content_type: str,
+
+) -> Response[Any]:
+ r""" Update evidence
+
+ This method is used by the seller to update an existing evidence set for a payment dispute with one
+ or more evidence files. The unique identifier of the payment dispute is passed in as a path
+ parameter, and unique identifiers for payment disputes can be retrieved with the
+ getPaymentDisputeSummaries method.
Note: All evidence files should be uploaded using
+ addEvidence and updateEvidence before the seller decides to
+ contest the payment dispute. Once the seller has officially contested the dispute (using
+ contestPaymentDispute or through My eBay), the addEvidence and
+ updateEvidence methods can no longer be used. In the
+ evidenceRequests array of the getPaymentDispute response, eBay
+ prompts the seller with the type of evidence file(s) that will be needed to contest the payment
+ dispute.
The unique identifier of the evidence set to update is specified through the
+ evidenceId field, and the file(s) to add are identified through the
+ files array in the request payload. The unique identifier for an evidence file is
+ automatically generated and returned in the fileId field of the
+ uploadEvidence response payload upon a successful call. Sellers must make sure to
+ capture the fileId value for each evidence file that is uploaded with the
+ uploadEvidence method.
The type of evidence being added should be specified
+ in the evidenceType field. All files being added (if more than one) should
+ correspond to this evidence type.
Upon a successful call, an http status code of 204
+ Success is returned. There is no response payload unless an error occurs. To verify that a
+ new file is a part of the evidence set, the seller can use the fetchEvidenceContent
+ method, passing in the proper evidenceId and fileId values.
+
+ Args:
+ payment_dispute_id (str):
+ content_type (str):
+ body (UpdateEvidencePaymentDisputeRequest): This type is used by the request payload of
+ the updateEvidence method. The updateEvidence method is
+ used to update an existing evidence set against a payment dispute with one or more
+ evidence files.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ payment_dispute_id=payment_dispute_id,
+body=body,
+content_type=content_type,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
diff --git a/ebay_client/generated/fulfillment/api/payment_dispute/upload_evidence_file.py b/ebay_client/generated/fulfillment/api/payment_dispute/upload_evidence_file.py
new file mode 100644
index 0000000..9962fba
--- /dev/null
+++ b/ebay_client/generated/fulfillment/api/payment_dispute/upload_evidence_file.py
@@ -0,0 +1,254 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.file_evidence import FileEvidence
+from typing import cast
+
+
+
+def _get_kwargs(
+ payment_dispute_id: str,
+ *,
+ content_type: str,
+
+) -> dict[str, Any]:
+ headers: dict[str, Any] = {}
+ headers["Content-Type"] = content_type
+
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "post",
+ "url": "/payment_dispute/{payment_dispute_id}/upload_evidence_file".format(payment_dispute_id=payment_dispute_id,),
+ }
+
+
+ _kwargs["headers"] = headers
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, FileEvidence]]:
+ if response.status_code == 200:
+ response_200 = FileEvidence.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 404:
+ response_404 = cast(Any, None)
+ return response_404
+ if response.status_code == 409:
+ response_409 = cast(Any, None)
+ return response_409
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, FileEvidence]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ payment_dispute_id: str,
+ *,
+ client: AuthenticatedClient,
+ content_type: str,
+
+) -> Response[Union[Any, FileEvidence]]:
+ r""" Upload an Evidence File
+
+ This method is used to upload an evidence file for a contested payment dispute. The unique
+ identifier of the payment dispute is passed in as a path parameter, and unique identifiers for
+ payment disputes can be retrieved with the getPaymentDisputeSummaries
+ method.
Note: The
+ uploadEvidenceFile only uploads an encrypted, binary image file (using
+ multipart/form-data HTTP request header), and does not have a JSON-based request
+ payload.
Use 'file' as the name of the key that you use to upload the image file. The upload
+ will not be successful if a different key name is used.
The three image formats supported at
+ this time are .JPEG, .JPG, and
+ .PNG.
After the file is successfully uploaded, the seller will need
+ to grab the fileId value in the response payload to add this file to a new evidence
+ set using the addEvidence method, or to add this file to an existing evidence set
+ using the updateEvidence method.
+
+ Args:
+ payment_dispute_id (str):
+ content_type (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, FileEvidence]]
+ """
+
+
+ kwargs = _get_kwargs(
+ payment_dispute_id=payment_dispute_id,
+content_type=content_type,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ payment_dispute_id: str,
+ *,
+ client: AuthenticatedClient,
+ content_type: str,
+
+) -> Optional[Union[Any, FileEvidence]]:
+ r""" Upload an Evidence File
+
+ This method is used to upload an evidence file for a contested payment dispute. The unique
+ identifier of the payment dispute is passed in as a path parameter, and unique identifiers for
+ payment disputes can be retrieved with the getPaymentDisputeSummaries
+ method.
Note: The
+ uploadEvidenceFile only uploads an encrypted, binary image file (using
+ multipart/form-data HTTP request header), and does not have a JSON-based request
+ payload.
Use 'file' as the name of the key that you use to upload the image file. The upload
+ will not be successful if a different key name is used.
The three image formats supported at
+ this time are .JPEG, .JPG, and
+ .PNG.
After the file is successfully uploaded, the seller will need
+ to grab the fileId value in the response payload to add this file to a new evidence
+ set using the addEvidence method, or to add this file to an existing evidence set
+ using the updateEvidence method.
+
+ Args:
+ payment_dispute_id (str):
+ content_type (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, FileEvidence]
+ """
+
+
+ return sync_detailed(
+ payment_dispute_id=payment_dispute_id,
+client=client,
+content_type=content_type,
+
+ ).parsed
+
+async def asyncio_detailed(
+ payment_dispute_id: str,
+ *,
+ client: AuthenticatedClient,
+ content_type: str,
+
+) -> Response[Union[Any, FileEvidence]]:
+ r""" Upload an Evidence File
+
+ This method is used to upload an evidence file for a contested payment dispute. The unique
+ identifier of the payment dispute is passed in as a path parameter, and unique identifiers for
+ payment disputes can be retrieved with the getPaymentDisputeSummaries
+ method.
Note: The
+ uploadEvidenceFile only uploads an encrypted, binary image file (using
+ multipart/form-data HTTP request header), and does not have a JSON-based request
+ payload.
Use 'file' as the name of the key that you use to upload the image file. The upload
+ will not be successful if a different key name is used.
The three image formats supported at
+ this time are .JPEG, .JPG, and
+ .PNG.
After the file is successfully uploaded, the seller will need
+ to grab the fileId value in the response payload to add this file to a new evidence
+ set using the addEvidence method, or to add this file to an existing evidence set
+ using the updateEvidence method.
+
+ Args:
+ payment_dispute_id (str):
+ content_type (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, FileEvidence]]
+ """
+
+
+ kwargs = _get_kwargs(
+ payment_dispute_id=payment_dispute_id,
+content_type=content_type,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ payment_dispute_id: str,
+ *,
+ client: AuthenticatedClient,
+ content_type: str,
+
+) -> Optional[Union[Any, FileEvidence]]:
+ r""" Upload an Evidence File
+
+ This method is used to upload an evidence file for a contested payment dispute. The unique
+ identifier of the payment dispute is passed in as a path parameter, and unique identifiers for
+ payment disputes can be retrieved with the getPaymentDisputeSummaries
+ method.
Note: The
+ uploadEvidenceFile only uploads an encrypted, binary image file (using
+ multipart/form-data HTTP request header), and does not have a JSON-based request
+ payload.
Use 'file' as the name of the key that you use to upload the image file. The upload
+ will not be successful if a different key name is used.
The three image formats supported at
+ this time are .JPEG, .JPG, and
+ .PNG.
After the file is successfully uploaded, the seller will need
+ to grab the fileId value in the response payload to add this file to a new evidence
+ set using the addEvidence method, or to add this file to an existing evidence set
+ using the updateEvidence method.
+
+ Args:
+ payment_dispute_id (str):
+ content_type (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, FileEvidence]
+ """
+
+
+ return (await asyncio_detailed(
+ payment_dispute_id=payment_dispute_id,
+client=client,
+content_type=content_type,
+
+ )).parsed
diff --git a/ebay_client/generated/fulfillment/api/shipping_fulfillment/__init__.py b/ebay_client/generated/fulfillment/api/shipping_fulfillment/__init__.py
new file mode 100644
index 0000000..c9921b5
--- /dev/null
+++ b/ebay_client/generated/fulfillment/api/shipping_fulfillment/__init__.py
@@ -0,0 +1 @@
+""" Contains endpoint functions for accessing the API """
diff --git a/ebay_client/generated/fulfillment/api/shipping_fulfillment/create_shipping_fulfillment.py b/ebay_client/generated/fulfillment/api/shipping_fulfillment/create_shipping_fulfillment.py
new file mode 100644
index 0000000..865052e
--- /dev/null
+++ b/ebay_client/generated/fulfillment/api/shipping_fulfillment/create_shipping_fulfillment.py
@@ -0,0 +1,253 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.create_shipping_fulfillment_response_201 import CreateShippingFulfillmentResponse201
+from ...models.shipping_fulfillment_details import ShippingFulfillmentDetails
+from typing import cast
+
+
+
+def _get_kwargs(
+ order_id: str,
+ *,
+ body: ShippingFulfillmentDetails,
+ content_type: str,
+
+) -> dict[str, Any]:
+ headers: dict[str, Any] = {}
+ headers["Content-Type"] = content_type
+
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "post",
+ "url": "/order/{order_id}/shipping_fulfillment".format(order_id=order_id,),
+ }
+
+ _kwargs["json"] = body.to_dict()
+
+
+ headers["Content-Type"] = "application/json"
+
+ _kwargs["headers"] = headers
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, CreateShippingFulfillmentResponse201]]:
+ if response.status_code == 201:
+ response_201 = CreateShippingFulfillmentResponse201.from_dict(response.json())
+
+
+
+ return response_201
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 409:
+ response_409 = cast(Any, None)
+ return response_409
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, CreateShippingFulfillmentResponse201]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ order_id: str,
+ *,
+ client: AuthenticatedClient,
+ body: ShippingFulfillmentDetails,
+ content_type: str,
+
+) -> Response[Union[Any, CreateShippingFulfillmentResponse201]]:
+ r""" When you group an order's line items into one or more packages, each package requires a
+ corresponding plan for handling, addressing, and shipping; this is a shipping fulfillment.
+ For each package, execute this call once to generate a shipping fulfillment associated with that
+ package.
Note: A single line item in an order
+ can consist of multiple units of a purchased item, and one unit can consist of multiple parts or
+ components. Although these components might be provided by the manufacturer in separate packaging,
+ the seller must include all components of a given line item in the same package.
+
Before using this call for a given package, you must determine which line items are in the
+ package. If the package has been shipped, you should provide the date of shipment in the request. If
+ not provided, it will default to the current date and time.
+
+ Args:
+ order_id (str):
+ content_type (str):
+ body (ShippingFulfillmentDetails): This type contains the details for creating a
+ fulfillment for an order.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, CreateShippingFulfillmentResponse201]]
+ """
+
+
+ kwargs = _get_kwargs(
+ order_id=order_id,
+body=body,
+content_type=content_type,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ order_id: str,
+ *,
+ client: AuthenticatedClient,
+ body: ShippingFulfillmentDetails,
+ content_type: str,
+
+) -> Optional[Union[Any, CreateShippingFulfillmentResponse201]]:
+ r""" When you group an order's line items into one or more packages, each package requires a
+ corresponding plan for handling, addressing, and shipping; this is a shipping fulfillment.
+ For each package, execute this call once to generate a shipping fulfillment associated with that
+ package.
Note: A single line item in an order
+ can consist of multiple units of a purchased item, and one unit can consist of multiple parts or
+ components. Although these components might be provided by the manufacturer in separate packaging,
+ the seller must include all components of a given line item in the same package.
+
Before using this call for a given package, you must determine which line items are in the
+ package. If the package has been shipped, you should provide the date of shipment in the request. If
+ not provided, it will default to the current date and time.
+
+ Args:
+ order_id (str):
+ content_type (str):
+ body (ShippingFulfillmentDetails): This type contains the details for creating a
+ fulfillment for an order.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, CreateShippingFulfillmentResponse201]
+ """
+
+
+ return sync_detailed(
+ order_id=order_id,
+client=client,
+body=body,
+content_type=content_type,
+
+ ).parsed
+
+async def asyncio_detailed(
+ order_id: str,
+ *,
+ client: AuthenticatedClient,
+ body: ShippingFulfillmentDetails,
+ content_type: str,
+
+) -> Response[Union[Any, CreateShippingFulfillmentResponse201]]:
+ r""" When you group an order's line items into one or more packages, each package requires a
+ corresponding plan for handling, addressing, and shipping; this is a shipping fulfillment.
+ For each package, execute this call once to generate a shipping fulfillment associated with that
+ package.
Note: A single line item in an order
+ can consist of multiple units of a purchased item, and one unit can consist of multiple parts or
+ components. Although these components might be provided by the manufacturer in separate packaging,
+ the seller must include all components of a given line item in the same package.
+
Before using this call for a given package, you must determine which line items are in the
+ package. If the package has been shipped, you should provide the date of shipment in the request. If
+ not provided, it will default to the current date and time.
+
+ Args:
+ order_id (str):
+ content_type (str):
+ body (ShippingFulfillmentDetails): This type contains the details for creating a
+ fulfillment for an order.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, CreateShippingFulfillmentResponse201]]
+ """
+
+
+ kwargs = _get_kwargs(
+ order_id=order_id,
+body=body,
+content_type=content_type,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ order_id: str,
+ *,
+ client: AuthenticatedClient,
+ body: ShippingFulfillmentDetails,
+ content_type: str,
+
+) -> Optional[Union[Any, CreateShippingFulfillmentResponse201]]:
+ r""" When you group an order's line items into one or more packages, each package requires a
+ corresponding plan for handling, addressing, and shipping; this is a shipping fulfillment.
+ For each package, execute this call once to generate a shipping fulfillment associated with that
+ package.
Note: A single line item in an order
+ can consist of multiple units of a purchased item, and one unit can consist of multiple parts or
+ components. Although these components might be provided by the manufacturer in separate packaging,
+ the seller must include all components of a given line item in the same package.
+
Before using this call for a given package, you must determine which line items are in the
+ package. If the package has been shipped, you should provide the date of shipment in the request. If
+ not provided, it will default to the current date and time.
+
+ Args:
+ order_id (str):
+ content_type (str):
+ body (ShippingFulfillmentDetails): This type contains the details for creating a
+ fulfillment for an order.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, CreateShippingFulfillmentResponse201]
+ """
+
+
+ return (await asyncio_detailed(
+ order_id=order_id,
+client=client,
+body=body,
+content_type=content_type,
+
+ )).parsed
diff --git a/ebay_client/generated/fulfillment/api/shipping_fulfillment/get_shipping_fulfillment.py b/ebay_client/generated/fulfillment/api/shipping_fulfillment/get_shipping_fulfillment.py
new file mode 100644
index 0000000..e7a1748
--- /dev/null
+++ b/ebay_client/generated/fulfillment/api/shipping_fulfillment/get_shipping_fulfillment.py
@@ -0,0 +1,202 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.shipping_fulfillment import ShippingFulfillment
+from typing import cast
+
+
+
+def _get_kwargs(
+ order_id: str,
+ fulfillment_id: str,
+
+) -> dict[str, Any]:
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/order/{order_id}/shipping_fulfillment/{fulfillment_id}".format(order_id=order_id,fulfillment_id=fulfillment_id,),
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, ShippingFulfillment]]:
+ if response.status_code == 200:
+ response_200 = ShippingFulfillment.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 404:
+ response_404 = cast(Any, None)
+ return response_404
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, ShippingFulfillment]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ order_id: str,
+ fulfillment_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, ShippingFulfillment]]:
+ """ Use this call to retrieve the contents of a fulfillment based on its unique identifier,
+ fulfillmentId (combined with the associated order's orderId). The fulfillmentId
+ value was originally generated by the createShippingFulfillment call, and is returned by the
+ getShippingFulfillments call in the members.fulfillmentId field.
+
+ Args:
+ order_id (str):
+ fulfillment_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, ShippingFulfillment]]
+ """
+
+
+ kwargs = _get_kwargs(
+ order_id=order_id,
+fulfillment_id=fulfillment_id,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ order_id: str,
+ fulfillment_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, ShippingFulfillment]]:
+ """ Use this call to retrieve the contents of a fulfillment based on its unique identifier,
+ fulfillmentId (combined with the associated order's orderId). The fulfillmentId
+ value was originally generated by the createShippingFulfillment call, and is returned by the
+ getShippingFulfillments call in the members.fulfillmentId field.
+
+ Args:
+ order_id (str):
+ fulfillment_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, ShippingFulfillment]
+ """
+
+
+ return sync_detailed(
+ order_id=order_id,
+fulfillment_id=fulfillment_id,
+client=client,
+
+ ).parsed
+
+async def asyncio_detailed(
+ order_id: str,
+ fulfillment_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, ShippingFulfillment]]:
+ """ Use this call to retrieve the contents of a fulfillment based on its unique identifier,
+ fulfillmentId (combined with the associated order's orderId). The fulfillmentId
+ value was originally generated by the createShippingFulfillment call, and is returned by the
+ getShippingFulfillments call in the members.fulfillmentId field.
+
+ Args:
+ order_id (str):
+ fulfillment_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, ShippingFulfillment]]
+ """
+
+
+ kwargs = _get_kwargs(
+ order_id=order_id,
+fulfillment_id=fulfillment_id,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ order_id: str,
+ fulfillment_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, ShippingFulfillment]]:
+ """ Use this call to retrieve the contents of a fulfillment based on its unique identifier,
+ fulfillmentId (combined with the associated order's orderId). The fulfillmentId
+ value was originally generated by the createShippingFulfillment call, and is returned by the
+ getShippingFulfillments call in the members.fulfillmentId field.
+
+ Args:
+ order_id (str):
+ fulfillment_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, ShippingFulfillment]
+ """
+
+
+ return (await asyncio_detailed(
+ order_id=order_id,
+fulfillment_id=fulfillment_id,
+client=client,
+
+ )).parsed
diff --git a/ebay_client/generated/fulfillment/api/shipping_fulfillment/get_shipping_fulfillments.py b/ebay_client/generated/fulfillment/api/shipping_fulfillment/get_shipping_fulfillments.py
new file mode 100644
index 0000000..8b20b0f
--- /dev/null
+++ b/ebay_client/generated/fulfillment/api/shipping_fulfillment/get_shipping_fulfillments.py
@@ -0,0 +1,186 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.shipping_fulfillment_paged_collection import ShippingFulfillmentPagedCollection
+from typing import cast
+
+
+
+def _get_kwargs(
+ order_id: str,
+
+) -> dict[str, Any]:
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/order/{order_id}/shipping_fulfillment".format(order_id=order_id,),
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, ShippingFulfillmentPagedCollection]]:
+ if response.status_code == 200:
+ response_200 = ShippingFulfillmentPagedCollection.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, ShippingFulfillmentPagedCollection]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ order_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, ShippingFulfillmentPagedCollection]]:
+ """ Use this call to retrieve the contents of all fulfillments currently defined for a specified order
+ based on the order's unique identifier, orderId. This value is returned in the
+ getOrders call's members.orderId field when you search for orders by creation date or
+ shipment status.
+
+ Args:
+ order_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, ShippingFulfillmentPagedCollection]]
+ """
+
+
+ kwargs = _get_kwargs(
+ order_id=order_id,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ order_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, ShippingFulfillmentPagedCollection]]:
+ """ Use this call to retrieve the contents of all fulfillments currently defined for a specified order
+ based on the order's unique identifier, orderId. This value is returned in the
+ getOrders call's members.orderId field when you search for orders by creation date or
+ shipment status.
+
+ Args:
+ order_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, ShippingFulfillmentPagedCollection]
+ """
+
+
+ return sync_detailed(
+ order_id=order_id,
+client=client,
+
+ ).parsed
+
+async def asyncio_detailed(
+ order_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, ShippingFulfillmentPagedCollection]]:
+ """ Use this call to retrieve the contents of all fulfillments currently defined for a specified order
+ based on the order's unique identifier, orderId. This value is returned in the
+ getOrders call's members.orderId field when you search for orders by creation date or
+ shipment status.
+
+ Args:
+ order_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, ShippingFulfillmentPagedCollection]]
+ """
+
+
+ kwargs = _get_kwargs(
+ order_id=order_id,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ order_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, ShippingFulfillmentPagedCollection]]:
+ """ Use this call to retrieve the contents of all fulfillments currently defined for a specified order
+ based on the order's unique identifier, orderId. This value is returned in the
+ getOrders call's members.orderId field when you search for orders by creation date or
+ shipment status.
+
+ Args:
+ order_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, ShippingFulfillmentPagedCollection]
+ """
+
+
+ return (await asyncio_detailed(
+ order_id=order_id,
+client=client,
+
+ )).parsed
diff --git a/ebay_client/generated/fulfillment/client.py b/ebay_client/generated/fulfillment/client.py
new file mode 100644
index 0000000..998cf0b
--- /dev/null
+++ b/ebay_client/generated/fulfillment/client.py
@@ -0,0 +1,271 @@
+import ssl
+from typing import Any, Union, Optional
+
+from attrs import define, field, evolve
+import httpx
+
+
+
+
+
+@define
+class Client:
+ """A class for keeping track of data related to the API
+
+ The following are accepted as keyword arguments and will be used to construct httpx Clients internally:
+
+ ``base_url``: The base URL for the API, all requests are made to a relative path to this URL
+
+ ``cookies``: A dictionary of cookies to be sent with every request
+
+ ``headers``: A dictionary of headers to be sent with every request
+
+ ``timeout``: The maximum amount of a time a request can take. API functions will raise
+ httpx.TimeoutException if this is exceeded.
+
+ ``verify_ssl``: Whether or not to verify the SSL certificate of the API server. This should be True in production,
+ but can be set to False for testing purposes.
+
+ ``follow_redirects``: Whether or not to follow redirects. Default value is False.
+
+ ``httpx_args``: A dictionary of additional arguments to be passed to the ``httpx.Client`` and ``httpx.AsyncClient`` constructor.
+
+
+ Attributes:
+ raise_on_unexpected_status: Whether or not to raise an errors.UnexpectedStatus if the API returns a
+ status code that was not documented in the source OpenAPI document. Can also be provided as a keyword
+ argument to the constructor.
+ """
+ raise_on_unexpected_status: bool = field(default=False, kw_only=True)
+ _base_url: str = field(alias="base_url")
+ _cookies: dict[str, str] = field(factory=dict, kw_only=True, alias="cookies")
+ _headers: dict[str, str] = field(factory=dict, kw_only=True, alias="headers")
+ _timeout: Optional[httpx.Timeout] = field(default=None, kw_only=True, alias="timeout")
+ _verify_ssl: Union[str, bool, ssl.SSLContext] = field(default=True, kw_only=True, alias="verify_ssl")
+ _follow_redirects: bool = field(default=False, kw_only=True, alias="follow_redirects")
+ _httpx_args: dict[str, Any] = field(factory=dict, kw_only=True, alias="httpx_args")
+ _client: Optional[httpx.Client] = field(default=None, init=False)
+ _async_client: Optional[httpx.AsyncClient] = field(default=None, init=False)
+
+ def with_headers(self, headers: dict[str, str]) -> "Client":
+ """Get a new client matching this one with additional headers"""
+ if self._client is not None:
+ self._client.headers.update(headers)
+ if self._async_client is not None:
+ self._async_client.headers.update(headers)
+ return evolve(self, headers={**self._headers, **headers})
+
+ def with_cookies(self, cookies: dict[str, str]) -> "Client":
+ """Get a new client matching this one with additional cookies"""
+ if self._client is not None:
+ self._client.cookies.update(cookies)
+ if self._async_client is not None:
+ self._async_client.cookies.update(cookies)
+ return evolve(self, cookies={**self._cookies, **cookies})
+
+ def with_timeout(self, timeout: httpx.Timeout) -> "Client":
+ """Get a new client matching this one with a new timeout (in seconds)"""
+ if self._client is not None:
+ self._client.timeout = timeout
+ if self._async_client is not None:
+ self._async_client.timeout = timeout
+ return evolve(self, timeout=timeout)
+
+ def set_httpx_client(self, client: httpx.Client) -> "Client":
+ """Manually set the underlying httpx.Client
+
+ **NOTE**: This will override any other settings on the client, including cookies, headers, and timeout.
+ """
+ self._client = client
+ return self
+
+ def get_httpx_client(self) -> httpx.Client:
+ """Get the underlying httpx.Client, constructing a new one if not previously set"""
+ if self._client is None:
+ self._client = httpx.Client(
+ base_url=self._base_url,
+ cookies=self._cookies,
+ headers=self._headers,
+ timeout=self._timeout,
+ verify=self._verify_ssl,
+ follow_redirects=self._follow_redirects,
+ **self._httpx_args,
+ )
+ return self._client
+
+ def __enter__(self) -> "Client":
+ """Enter a context manager for self.client—you cannot enter twice (see httpx docs)"""
+ self.get_httpx_client().__enter__()
+ return self
+
+ def __exit__(self, *args: Any, **kwargs: Any) -> None:
+ """Exit a context manager for internal httpx.Client (see httpx docs)"""
+ self.get_httpx_client().__exit__(*args, **kwargs)
+
+ def set_async_httpx_client(self, async_client: httpx.AsyncClient) -> "Client":
+ """Manually the underlying httpx.AsyncClient
+
+ **NOTE**: This will override any other settings on the client, including cookies, headers, and timeout.
+ """
+ self._async_client = async_client
+ return self
+
+ def get_async_httpx_client(self) -> httpx.AsyncClient:
+ """Get the underlying httpx.AsyncClient, constructing a new one if not previously set"""
+ if self._async_client is None:
+ self._async_client = httpx.AsyncClient(
+ base_url=self._base_url,
+ cookies=self._cookies,
+ headers=self._headers,
+ timeout=self._timeout,
+ verify=self._verify_ssl,
+ follow_redirects=self._follow_redirects,
+ **self._httpx_args,
+ )
+ return self._async_client
+
+ async def __aenter__(self) -> "Client":
+ """Enter a context manager for underlying httpx.AsyncClient—you cannot enter twice (see httpx docs)"""
+ await self.get_async_httpx_client().__aenter__()
+ return self
+
+ async def __aexit__(self, *args: Any, **kwargs: Any) -> None:
+ """Exit a context manager for underlying httpx.AsyncClient (see httpx docs)"""
+ await self.get_async_httpx_client().__aexit__(*args, **kwargs)
+
+
+@define
+class AuthenticatedClient:
+ """A Client which has been authenticated for use on secured endpoints
+
+ The following are accepted as keyword arguments and will be used to construct httpx Clients internally:
+
+ ``base_url``: The base URL for the API, all requests are made to a relative path to this URL
+
+ ``cookies``: A dictionary of cookies to be sent with every request
+
+ ``headers``: A dictionary of headers to be sent with every request
+
+ ``timeout``: The maximum amount of a time a request can take. API functions will raise
+ httpx.TimeoutException if this is exceeded.
+
+ ``verify_ssl``: Whether or not to verify the SSL certificate of the API server. This should be True in production,
+ but can be set to False for testing purposes.
+
+ ``follow_redirects``: Whether or not to follow redirects. Default value is False.
+
+ ``httpx_args``: A dictionary of additional arguments to be passed to the ``httpx.Client`` and ``httpx.AsyncClient`` constructor.
+
+
+ Attributes:
+ raise_on_unexpected_status: Whether or not to raise an errors.UnexpectedStatus if the API returns a
+ status code that was not documented in the source OpenAPI document. Can also be provided as a keyword
+ argument to the constructor.
+ token: The token to use for authentication
+ prefix: The prefix to use for the Authorization header
+ auth_header_name: The name of the Authorization header
+ """
+
+ raise_on_unexpected_status: bool = field(default=False, kw_only=True)
+ _base_url: str = field(alias="base_url")
+ _cookies: dict[str, str] = field(factory=dict, kw_only=True, alias="cookies")
+ _headers: dict[str, str] = field(factory=dict, kw_only=True, alias="headers")
+ _timeout: Optional[httpx.Timeout] = field(default=None, kw_only=True, alias="timeout")
+ _verify_ssl: Union[str, bool, ssl.SSLContext] = field(default=True, kw_only=True, alias="verify_ssl")
+ _follow_redirects: bool = field(default=False, kw_only=True, alias="follow_redirects")
+ _httpx_args: dict[str, Any] = field(factory=dict, kw_only=True, alias="httpx_args")
+ _client: Optional[httpx.Client] = field(default=None, init=False)
+ _async_client: Optional[httpx.AsyncClient] = field(default=None, init=False)
+
+ token: str
+ prefix: str = "Bearer"
+ auth_header_name: str = "Authorization"
+
+ def with_headers(self, headers: dict[str, str]) -> "AuthenticatedClient":
+ """Get a new client matching this one with additional headers"""
+ if self._client is not None:
+ self._client.headers.update(headers)
+ if self._async_client is not None:
+ self._async_client.headers.update(headers)
+ return evolve(self, headers={**self._headers, **headers})
+
+ def with_cookies(self, cookies: dict[str, str]) -> "AuthenticatedClient":
+ """Get a new client matching this one with additional cookies"""
+ if self._client is not None:
+ self._client.cookies.update(cookies)
+ if self._async_client is not None:
+ self._async_client.cookies.update(cookies)
+ return evolve(self, cookies={**self._cookies, **cookies})
+
+ def with_timeout(self, timeout: httpx.Timeout) -> "AuthenticatedClient":
+ """Get a new client matching this one with a new timeout (in seconds)"""
+ if self._client is not None:
+ self._client.timeout = timeout
+ if self._async_client is not None:
+ self._async_client.timeout = timeout
+ return evolve(self, timeout=timeout)
+
+ def set_httpx_client(self, client: httpx.Client) -> "AuthenticatedClient":
+ """Manually set the underlying httpx.Client
+
+ **NOTE**: This will override any other settings on the client, including cookies, headers, and timeout.
+ """
+ self._client = client
+ return self
+
+ def get_httpx_client(self) -> httpx.Client:
+ """Get the underlying httpx.Client, constructing a new one if not previously set"""
+ if self._client is None:
+ self._headers[self.auth_header_name] = f"{self.prefix} {self.token}" if self.prefix else self.token
+ self._client = httpx.Client(
+ base_url=self._base_url,
+ cookies=self._cookies,
+ headers=self._headers,
+ timeout=self._timeout,
+ verify=self._verify_ssl,
+ follow_redirects=self._follow_redirects,
+ **self._httpx_args,
+ )
+ return self._client
+
+ def __enter__(self) -> "AuthenticatedClient":
+ """Enter a context manager for self.client—you cannot enter twice (see httpx docs)"""
+ self.get_httpx_client().__enter__()
+ return self
+
+ def __exit__(self, *args: Any, **kwargs: Any) -> None:
+ """Exit a context manager for internal httpx.Client (see httpx docs)"""
+ self.get_httpx_client().__exit__(*args, **kwargs)
+
+ def set_async_httpx_client(self, async_client: httpx.AsyncClient) -> "AuthenticatedClient":
+ """Manually the underlying httpx.AsyncClient
+
+ **NOTE**: This will override any other settings on the client, including cookies, headers, and timeout.
+ """
+ self._async_client = async_client
+ return self
+
+ def get_async_httpx_client(self) -> httpx.AsyncClient:
+ """Get the underlying httpx.AsyncClient, constructing a new one if not previously set"""
+ if self._async_client is None:
+ self._headers[self.auth_header_name] = f"{self.prefix} {self.token}" if self.prefix else self.token
+ self._async_client = httpx.AsyncClient(
+ base_url=self._base_url,
+ cookies=self._cookies,
+ headers=self._headers,
+ timeout=self._timeout,
+ verify=self._verify_ssl,
+ follow_redirects=self._follow_redirects,
+ **self._httpx_args,
+ )
+ return self._async_client
+
+ async def __aenter__(self) -> "AuthenticatedClient":
+ """Enter a context manager for underlying httpx.AsyncClient—you cannot enter twice (see httpx docs)"""
+ await self.get_async_httpx_client().__aenter__()
+ return self
+
+ async def __aexit__(self, *args: Any, **kwargs: Any) -> None:
+ """Exit a context manager for underlying httpx.AsyncClient (see httpx docs)"""
+ await self.get_async_httpx_client().__aexit__(*args, **kwargs)
+
diff --git a/ebay_client/generated/fulfillment/errors.py b/ebay_client/generated/fulfillment/errors.py
new file mode 100644
index 0000000..b912123
--- /dev/null
+++ b/ebay_client/generated/fulfillment/errors.py
@@ -0,0 +1,14 @@
+""" Contains shared errors types that can be raised from API functions """
+
+class UnexpectedStatus(Exception):
+ """Raised by api functions when the response status an undocumented status and Client.raise_on_unexpected_status is True"""
+
+ def __init__(self, status_code: int, content: bytes):
+ self.status_code = status_code
+ self.content = content
+
+ super().__init__(
+ f"Unexpected status code: {status_code}\n\nResponse content:\n{content.decode(errors='ignore')}"
+ )
+
+__all__ = ["UnexpectedStatus"]
diff --git a/ebay_client/generated/fulfillment/models/__init__.py b/ebay_client/generated/fulfillment/models/__init__.py
new file mode 100644
index 0000000..dca3137
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/__init__.py
@@ -0,0 +1,159 @@
+""" Contains all the data models used in inputs/outputs """
+
+from .accept_payment_dispute_request import AcceptPaymentDisputeRequest
+from .add_evidence_payment_dispute_request import AddEvidencePaymentDisputeRequest
+from .add_evidence_payment_dispute_response import AddEvidencePaymentDisputeResponse
+from .address import Address
+from .amount import Amount
+from .applied_promotion import AppliedPromotion
+from .appointment_details import AppointmentDetails
+from .buyer import Buyer
+from .cancel_request import CancelRequest
+from .cancel_status import CancelStatus
+from .charge import Charge
+from .contest_payment_dispute_request import ContestPaymentDisputeRequest
+from .create_shipping_fulfillment_response_201 import CreateShippingFulfillmentResponse201
+from .delivery_cost import DeliveryCost
+from .dispute_amount import DisputeAmount
+from .dispute_evidence import DisputeEvidence
+from .dispute_summary_response import DisputeSummaryResponse
+from .ebay_collect_and_remit_tax import EbayCollectAndRemitTax
+from .ebay_collected_charges import EbayCollectedCharges
+from .ebay_fulfillment_program import EbayFulfillmentProgram
+from .ebay_international_shipping import EbayInternationalShipping
+from .ebay_shipping import EbayShipping
+from .ebay_tax_reference import EbayTaxReference
+from .ebay_vault_program import EbayVaultProgram
+from .error import Error
+from .error_parameter import ErrorParameter
+from .evidence_request import EvidenceRequest
+from .extended_contact import ExtendedContact
+from .file_evidence import FileEvidence
+from .file_info import FileInfo
+from .fulfillment_start_instruction import FulfillmentStartInstruction
+from .gift_details import GiftDetails
+from .info_from_buyer import InfoFromBuyer
+from .issue_refund_request import IssueRefundRequest
+from .item_location import ItemLocation
+from .legacy_reference import LegacyReference
+from .line_item import LineItem
+from .line_item_fulfillment_instructions import LineItemFulfillmentInstructions
+from .line_item_properties import LineItemProperties
+from .line_item_reference import LineItemReference
+from .line_item_refund import LineItemRefund
+from .linked_order_line_item import LinkedOrderLineItem
+from .monetary_transaction import MonetaryTransaction
+from .name_value_pair import NameValuePair
+from .order import Order
+from .order_line_items import OrderLineItems
+from .order_refund import OrderRefund
+from .order_search_paged_collection import OrderSearchPagedCollection
+from .payment import Payment
+from .payment_dispute import PaymentDispute
+from .payment_dispute_activity import PaymentDisputeActivity
+from .payment_dispute_activity_history import PaymentDisputeActivityHistory
+from .payment_dispute_outcome_detail import PaymentDisputeOutcomeDetail
+from .payment_dispute_summary import PaymentDisputeSummary
+from .payment_hold import PaymentHold
+from .payment_summary import PaymentSummary
+from .phone import Phone
+from .phone_number import PhoneNumber
+from .pickup_step import PickupStep
+from .post_sale_authentication_program import PostSaleAuthenticationProgram
+from .pricing_summary import PricingSummary
+from .program import Program
+from .property_ import Property
+from .refund import Refund
+from .refund_item import RefundItem
+from .return_address import ReturnAddress
+from .seller_actions_to_release import SellerActionsToRelease
+from .shipping_fulfillment import ShippingFulfillment
+from .shipping_fulfillment_details import ShippingFulfillmentDetails
+from .shipping_fulfillment_paged_collection import ShippingFulfillmentPagedCollection
+from .shipping_step import ShippingStep
+from .simple_amount import SimpleAmount
+from .tax import Tax
+from .tax_address import TaxAddress
+from .tax_identifier import TaxIdentifier
+from .tracking_info import TrackingInfo
+from .update_evidence_payment_dispute_request import UpdateEvidencePaymentDisputeRequest
+
+__all__ = (
+ "AcceptPaymentDisputeRequest",
+ "AddEvidencePaymentDisputeRequest",
+ "AddEvidencePaymentDisputeResponse",
+ "Address",
+ "Amount",
+ "AppliedPromotion",
+ "AppointmentDetails",
+ "Buyer",
+ "CancelRequest",
+ "CancelStatus",
+ "Charge",
+ "ContestPaymentDisputeRequest",
+ "CreateShippingFulfillmentResponse201",
+ "DeliveryCost",
+ "DisputeAmount",
+ "DisputeEvidence",
+ "DisputeSummaryResponse",
+ "EbayCollectAndRemitTax",
+ "EbayCollectedCharges",
+ "EbayFulfillmentProgram",
+ "EbayInternationalShipping",
+ "EbayShipping",
+ "EbayTaxReference",
+ "EbayVaultProgram",
+ "Error",
+ "ErrorParameter",
+ "EvidenceRequest",
+ "ExtendedContact",
+ "FileEvidence",
+ "FileInfo",
+ "FulfillmentStartInstruction",
+ "GiftDetails",
+ "InfoFromBuyer",
+ "IssueRefundRequest",
+ "ItemLocation",
+ "LegacyReference",
+ "LineItem",
+ "LineItemFulfillmentInstructions",
+ "LineItemProperties",
+ "LineItemReference",
+ "LineItemRefund",
+ "LinkedOrderLineItem",
+ "MonetaryTransaction",
+ "NameValuePair",
+ "Order",
+ "OrderLineItems",
+ "OrderRefund",
+ "OrderSearchPagedCollection",
+ "Payment",
+ "PaymentDispute",
+ "PaymentDisputeActivity",
+ "PaymentDisputeActivityHistory",
+ "PaymentDisputeOutcomeDetail",
+ "PaymentDisputeSummary",
+ "PaymentHold",
+ "PaymentSummary",
+ "Phone",
+ "PhoneNumber",
+ "PickupStep",
+ "PostSaleAuthenticationProgram",
+ "PricingSummary",
+ "Program",
+ "Property",
+ "Refund",
+ "RefundItem",
+ "ReturnAddress",
+ "SellerActionsToRelease",
+ "ShippingFulfillment",
+ "ShippingFulfillmentDetails",
+ "ShippingFulfillmentPagedCollection",
+ "ShippingStep",
+ "SimpleAmount",
+ "Tax",
+ "TaxAddress",
+ "TaxIdentifier",
+ "TrackingInfo",
+ "UpdateEvidencePaymentDisputeRequest",
+)
diff --git a/ebay_client/generated/fulfillment/models/accept_payment_dispute_request.py b/ebay_client/generated/fulfillment/models/accept_payment_dispute_request.py
new file mode 100644
index 0000000..017fc24
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/accept_payment_dispute_request.py
@@ -0,0 +1,106 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.return_address import ReturnAddress
+
+
+
+
+
+T = TypeVar("T", bound="AcceptPaymentDisputeRequest")
+
+
+
+@_attrs_define
+class AcceptPaymentDisputeRequest:
+ """ This type is used by base request of the acceptPaymentDispute method.
+
+ Attributes:
+ return_address (Union[Unset, ReturnAddress]): This type is used by the payment dispute methods, and is relevant
+ if the buyer will be returning the item to the seller.
+ revision (Union[Unset, int]): This integer value indicates the revision number of the payment dispute. This
+ field is required. The current revision number for a payment dispute can be retrieved with the
+ getPaymentDispute method. Each time an action is taken against a payment dispute, this integer
+ value increases by 1.
+ """
+
+ return_address: Union[Unset, 'ReturnAddress'] = UNSET
+ revision: Union[Unset, int] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.return_address import ReturnAddress
+ return_address: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.return_address, Unset):
+ return_address = self.return_address.to_dict()
+
+ revision = self.revision
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if return_address is not UNSET:
+ field_dict["returnAddress"] = return_address
+ if revision is not UNSET:
+ field_dict["revision"] = revision
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.return_address import ReturnAddress
+ d = dict(src_dict)
+ _return_address = d.pop("returnAddress", UNSET)
+ return_address: Union[Unset, ReturnAddress]
+ if isinstance(_return_address, Unset):
+ return_address = UNSET
+ else:
+ return_address = ReturnAddress.from_dict(_return_address)
+
+
+
+
+ revision = d.pop("revision", UNSET)
+
+ accept_payment_dispute_request = cls(
+ return_address=return_address,
+ revision=revision,
+ )
+
+
+ accept_payment_dispute_request.additional_properties = d
+ return accept_payment_dispute_request
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/add_evidence_payment_dispute_request.py b/ebay_client/generated/fulfillment/models/add_evidence_payment_dispute_request.py
new file mode 100644
index 0000000..a4f068e
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/add_evidence_payment_dispute_request.py
@@ -0,0 +1,147 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.order_line_items import OrderLineItems
+ from ..models.file_evidence import FileEvidence
+
+
+
+
+
+T = TypeVar("T", bound="AddEvidencePaymentDisputeRequest")
+
+
+
+@_attrs_define
+class AddEvidencePaymentDisputeRequest:
+ """ This type is used by the request payload of the addEvidence method. The
+ addEvidence method is used to create a new evidence set against a payment dispute with one or more
+ evidence files.
+
+ Attributes:
+ evidence_type (Union[Unset, str]): This field is used to indicate the type of evidence being provided through
+ one or more evidence files. All evidence files (if more than one) should be associated with the evidence type
+ passed in this field.
See the EvidenceTypeEnum type for the supported evidence types. For implementation help, refer to
+ eBay API
+ documentation
+ files (Union[Unset, list['FileEvidence']]): This array is used to specify one or more evidence files that will
+ become part of a new evidence set associated with a payment dispute. At least one evidence file must be
+ specified in the files array.
+ line_items (Union[Unset, list['OrderLineItems']]): This array identifies the order line item(s) for which the
+ evidence file(s) will be applicable.
These values are returned under the
+ evidenceRequests.lineItems array in the getPaymentDispute response.
+ """
+
+ evidence_type: Union[Unset, str] = UNSET
+ files: Union[Unset, list['FileEvidence']] = UNSET
+ line_items: Union[Unset, list['OrderLineItems']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.order_line_items import OrderLineItems
+ from ..models.file_evidence import FileEvidence
+ evidence_type = self.evidence_type
+
+ files: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.files, Unset):
+ files = []
+ for files_item_data in self.files:
+ files_item = files_item_data.to_dict()
+ files.append(files_item)
+
+
+
+ line_items: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.line_items, Unset):
+ line_items = []
+ for line_items_item_data in self.line_items:
+ line_items_item = line_items_item_data.to_dict()
+ line_items.append(line_items_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if evidence_type is not UNSET:
+ field_dict["evidenceType"] = evidence_type
+ if files is not UNSET:
+ field_dict["files"] = files
+ if line_items is not UNSET:
+ field_dict["lineItems"] = line_items
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.order_line_items import OrderLineItems
+ from ..models.file_evidence import FileEvidence
+ d = dict(src_dict)
+ evidence_type = d.pop("evidenceType", UNSET)
+
+ files = []
+ _files = d.pop("files", UNSET)
+ for files_item_data in (_files or []):
+ files_item = FileEvidence.from_dict(files_item_data)
+
+
+
+ files.append(files_item)
+
+
+ line_items = []
+ _line_items = d.pop("lineItems", UNSET)
+ for line_items_item_data in (_line_items or []):
+ line_items_item = OrderLineItems.from_dict(line_items_item_data)
+
+
+
+ line_items.append(line_items_item)
+
+
+ add_evidence_payment_dispute_request = cls(
+ evidence_type=evidence_type,
+ files=files,
+ line_items=line_items,
+ )
+
+
+ add_evidence_payment_dispute_request.additional_properties = d
+ return add_evidence_payment_dispute_request
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/add_evidence_payment_dispute_response.py b/ebay_client/generated/fulfillment/models/add_evidence_payment_dispute_response.py
new file mode 100644
index 0000000..6c76f9f
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/add_evidence_payment_dispute_response.py
@@ -0,0 +1,84 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="AddEvidencePaymentDisputeResponse")
+
+
+
+@_attrs_define
+class AddEvidencePaymentDisputeResponse:
+ """ This type is used by the response payload of the addEvidence method. Its only field is an unique
+ identifier of an evidence set.
+
+ Attributes:
+ evidence_id (Union[Unset, str]): The value returned in this field is the unique identifier of the newly-created
+ evidence set. Upon a successful call, this value is automatically genererated. This new evidence set for the
+ payment dispute includes the evidence file(s) that were passed in to the fileId array in the
+ request payload. The evidenceId value will be needed if the seller wishes to add to the
+ evidence set by using the updateEvidence method, or if they want to retrieve a specific
+ evidence file within the evidence set by using the fetchEvidenceContent method.
+ """
+
+ evidence_id: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ evidence_id = self.evidence_id
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if evidence_id is not UNSET:
+ field_dict["evidenceId"] = evidence_id
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ evidence_id = d.pop("evidenceId", UNSET)
+
+ add_evidence_payment_dispute_response = cls(
+ evidence_id=evidence_id,
+ )
+
+
+ add_evidence_payment_dispute_response.additional_properties = d
+ return add_evidence_payment_dispute_response
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/address.py b/ebay_client/generated/fulfillment/models/address.py
new file mode 100644
index 0000000..39acb7d
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/address.py
@@ -0,0 +1,143 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="Address")
+
+
+
+@_attrs_define
+class Address:
+ """ This type contains the details of a geographical address.
+
+ Attributes:
+ address_line_1 (Union[Unset, str]): The first line of the street address.
Note: addressLine1 will not be returned for any order that is more
+ than 90 days old.
+ address_line_2 (Union[Unset, str]): The second line of the street address. This field can be used for additional
+ address information, such as a suite or apartment number. This field will be returned if defined for the
+ shipping address.
Note: addressLine2 will not be returned
+ for any order that is more than 90 days old.
+ city (Union[Unset, str]): The city of the shipping destination.
+ country_code (Union[Unset, str]): The country of the shipping destination, represented as a two-letter ISO
+ 3166-1 alpha-2 country code. For example, US represents the United States, and DE
+ represents Germany. For implementation help, refer to eBay API documentation
+ county (Union[Unset, str]): The county of the shipping destination. Counties typically, but not always, contain
+ multiple cities or towns. This field is returned if known/available.
+ postal_code (Union[Unset, str]): The postal code of the shipping destination. Usually referred to as Zip codes
+ in the US. Most countries have postal codes, but not all. The postal code will be returned if applicable.
+ state_or_province (Union[Unset, str]): The state or province of the shipping destination. Most countries have
+ states or provinces, but not all. The state or province will be returned if applicable.
+ """
+
+ address_line_1: Union[Unset, str] = UNSET
+ address_line_2: Union[Unset, str] = UNSET
+ city: Union[Unset, str] = UNSET
+ country_code: Union[Unset, str] = UNSET
+ county: Union[Unset, str] = UNSET
+ postal_code: Union[Unset, str] = UNSET
+ state_or_province: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ address_line_1 = self.address_line_1
+
+ address_line_2 = self.address_line_2
+
+ city = self.city
+
+ country_code = self.country_code
+
+ county = self.county
+
+ postal_code = self.postal_code
+
+ state_or_province = self.state_or_province
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if address_line_1 is not UNSET:
+ field_dict["addressLine1"] = address_line_1
+ if address_line_2 is not UNSET:
+ field_dict["addressLine2"] = address_line_2
+ if city is not UNSET:
+ field_dict["city"] = city
+ if country_code is not UNSET:
+ field_dict["countryCode"] = country_code
+ if county is not UNSET:
+ field_dict["county"] = county
+ if postal_code is not UNSET:
+ field_dict["postalCode"] = postal_code
+ if state_or_province is not UNSET:
+ field_dict["stateOrProvince"] = state_or_province
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ address_line_1 = d.pop("addressLine1", UNSET)
+
+ address_line_2 = d.pop("addressLine2", UNSET)
+
+ city = d.pop("city", UNSET)
+
+ country_code = d.pop("countryCode", UNSET)
+
+ county = d.pop("county", UNSET)
+
+ postal_code = d.pop("postalCode", UNSET)
+
+ state_or_province = d.pop("stateOrProvince", UNSET)
+
+ address = cls(
+ address_line_1=address_line_1,
+ address_line_2=address_line_2,
+ city=city,
+ country_code=country_code,
+ county=county,
+ postal_code=postal_code,
+ state_or_province=state_or_province,
+ )
+
+
+ address.additional_properties = d
+ return address
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/amount.py b/ebay_client/generated/fulfillment/models/amount.py
new file mode 100644
index 0000000..832bd9c
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/amount.py
@@ -0,0 +1,120 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="Amount")
+
+
+
+@_attrs_define
+class Amount:
+ """ This type defines the monetary value of an amount. It can provide the amount in both the currency used on the eBay
+ site where an item is being offered and the conversion of that value into another currency, if applicable.
+
+ Attributes:
+ converted_from_currency (Union[Unset, str]): A three-letter ISO 4217 code that indicates the currency of the
+ amount in the convertedFromValue field. This value is required or returned only if currency
+ conversion/localization is required, and represents the pre-conversion currency. For implementation help, refer
+ to eBay API
+ documentation
+ converted_from_value (Union[Unset, str]): The monetary amount before any conversion is performed, in the
+ currency specified by the convertedFromCurrency field. This value is required or returned only if
+ currency conversion/localization is required. The value field contains the converted amount of this
+ value, in the currency specified by the currency field.
+ currency (Union[Unset, str]): A three-letter ISO 4217 code that indicates the currency of the amount in the
+ value field. If currency conversion/localization is required, this is the post-conversion currency of the
+ amount in the value field.
Default: The default currency of the eBay marketplace that hosts
+ the listing. For implementation help, refer to eBay API documentation
+ value (Union[Unset, str]): The monetary amount, in the currency specified by the currency field. If
+ currency conversion/localization is required, this value is the converted amount, and the
+ convertedFromValue field contains the amount in the original currency.
Required in the
+ amount type.
+ """
+
+ converted_from_currency: Union[Unset, str] = UNSET
+ converted_from_value: Union[Unset, str] = UNSET
+ currency: Union[Unset, str] = UNSET
+ value: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ converted_from_currency = self.converted_from_currency
+
+ converted_from_value = self.converted_from_value
+
+ currency = self.currency
+
+ value = self.value
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if converted_from_currency is not UNSET:
+ field_dict["convertedFromCurrency"] = converted_from_currency
+ if converted_from_value is not UNSET:
+ field_dict["convertedFromValue"] = converted_from_value
+ if currency is not UNSET:
+ field_dict["currency"] = currency
+ if value is not UNSET:
+ field_dict["value"] = value
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ converted_from_currency = d.pop("convertedFromCurrency", UNSET)
+
+ converted_from_value = d.pop("convertedFromValue", UNSET)
+
+ currency = d.pop("currency", UNSET)
+
+ value = d.pop("value", UNSET)
+
+ amount = cls(
+ converted_from_currency=converted_from_currency,
+ converted_from_value=converted_from_value,
+ currency=currency,
+ value=value,
+ )
+
+
+ amount.additional_properties = d
+ return amount
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/applied_promotion.py b/ebay_client/generated/fulfillment/models/applied_promotion.py
new file mode 100644
index 0000000..47409cb
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/applied_promotion.py
@@ -0,0 +1,117 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.amount import Amount
+
+
+
+
+
+T = TypeVar("T", bound="AppliedPromotion")
+
+
+
+@_attrs_define
+class AppliedPromotion:
+ """ This type contains information about a sales promotion that is applied to a line item.
+
+ Attributes:
+ description (Union[Unset, str]): A description of the applied sales promotion.
+ discount_amount (Union[Unset, Amount]): This type defines the monetary value of an amount. It can provide the
+ amount in both the currency used on the eBay site where an item is being offered and the conversion of that
+ value into another currency, if applicable.
+ promotion_id (Union[Unset, str]): An eBay-generated unique identifier of the sales promotion.
Multiple
+ types of sales promotions are available to eBay Store owners, including order size/volume discounts, shipping
+ discounts, special coupons, and price markdowns. Sales promotions can be managed through the Marketing tab of
+ Seller Hub in My eBay, or by using the Trading API's SetPromotionalSale call or the Marketing API's
+ createItemPromotion method.
+ """
+
+ description: Union[Unset, str] = UNSET
+ discount_amount: Union[Unset, 'Amount'] = UNSET
+ promotion_id: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.amount import Amount
+ description = self.description
+
+ discount_amount: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.discount_amount, Unset):
+ discount_amount = self.discount_amount.to_dict()
+
+ promotion_id = self.promotion_id
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if description is not UNSET:
+ field_dict["description"] = description
+ if discount_amount is not UNSET:
+ field_dict["discountAmount"] = discount_amount
+ if promotion_id is not UNSET:
+ field_dict["promotionId"] = promotion_id
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.amount import Amount
+ d = dict(src_dict)
+ description = d.pop("description", UNSET)
+
+ _discount_amount = d.pop("discountAmount", UNSET)
+ discount_amount: Union[Unset, Amount]
+ if isinstance(_discount_amount, Unset):
+ discount_amount = UNSET
+ else:
+ discount_amount = Amount.from_dict(_discount_amount)
+
+
+
+
+ promotion_id = d.pop("promotionId", UNSET)
+
+ applied_promotion = cls(
+ description=description,
+ discount_amount=discount_amount,
+ promotion_id=promotion_id,
+ )
+
+
+ applied_promotion.additional_properties = d
+ return applied_promotion
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/appointment_details.py b/ebay_client/generated/fulfillment/models/appointment_details.py
new file mode 100644
index 0000000..f8a18c9
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/appointment_details.py
@@ -0,0 +1,139 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="AppointmentDetails")
+
+
+
+@_attrs_define
+class AppointmentDetails:
+ """ This type contains information used by the installation provider concerning appointment details selected by the
+ buyer
+
+ Attributes:
+ appointment_end_time (Union[Unset, str]): The date and time the appointment ends, formatted as an ISO
+ 8601 string, which is based on the 24-hour Coordinated Universal Time (UTC) clock. Required for tire
+ installation.
Format: [YYYY]-[MM]-[DD]T[hh]:[mm]:[ss].[sss]Z
Example:
+ 2022-10-28T00:00:00.000Z
+ appointment_start_time (Union[Unset, str]): The date and time the appointment begins, formatted as an ISO
+ 8601 string, which is based on the 24-hour Coordinated Universal Time (UTC) clock.
Format:
+ [YYYY]-[MM]-[DD]T[hh]:[mm]:[ss].[sss]Z
Example: 2022-10-28T00:10:00.000Z
+ appointment_status (Union[Unset, str]): The status of the appointment. For implementation help, refer to eBay API
+ documentation
+ appointment_type (Union[Unset, str]): The type of appointment. MACRO appointments only have a start time (not
+ bounded with end time). TIME_SLOT appointments have a period (both start time and end time). Required for tire
+ installation. For implementation help, refer to eBay API documentation
+ appointment_window (Union[Unset, str]): Appointment window for MACRO appointments. For implementation help,
+ refer to eBay API
+ documentation
+ service_provider_appointment_date (Union[Unset, str]): Service provider date of the appointment (no time stamp).
+ Returned only for MACRO appointment types.
+ """
+
+ appointment_end_time: Union[Unset, str] = UNSET
+ appointment_start_time: Union[Unset, str] = UNSET
+ appointment_status: Union[Unset, str] = UNSET
+ appointment_type: Union[Unset, str] = UNSET
+ appointment_window: Union[Unset, str] = UNSET
+ service_provider_appointment_date: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ appointment_end_time = self.appointment_end_time
+
+ appointment_start_time = self.appointment_start_time
+
+ appointment_status = self.appointment_status
+
+ appointment_type = self.appointment_type
+
+ appointment_window = self.appointment_window
+
+ service_provider_appointment_date = self.service_provider_appointment_date
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if appointment_end_time is not UNSET:
+ field_dict["appointmentEndTime"] = appointment_end_time
+ if appointment_start_time is not UNSET:
+ field_dict["appointmentStartTime"] = appointment_start_time
+ if appointment_status is not UNSET:
+ field_dict["appointmentStatus"] = appointment_status
+ if appointment_type is not UNSET:
+ field_dict["appointmentType"] = appointment_type
+ if appointment_window is not UNSET:
+ field_dict["appointmentWindow"] = appointment_window
+ if service_provider_appointment_date is not UNSET:
+ field_dict["serviceProviderAppointmentDate"] = service_provider_appointment_date
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ appointment_end_time = d.pop("appointmentEndTime", UNSET)
+
+ appointment_start_time = d.pop("appointmentStartTime", UNSET)
+
+ appointment_status = d.pop("appointmentStatus", UNSET)
+
+ appointment_type = d.pop("appointmentType", UNSET)
+
+ appointment_window = d.pop("appointmentWindow", UNSET)
+
+ service_provider_appointment_date = d.pop("serviceProviderAppointmentDate", UNSET)
+
+ appointment_details = cls(
+ appointment_end_time=appointment_end_time,
+ appointment_start_time=appointment_start_time,
+ appointment_status=appointment_status,
+ appointment_type=appointment_type,
+ appointment_window=appointment_window,
+ service_provider_appointment_date=service_provider_appointment_date,
+ )
+
+
+ appointment_details.additional_properties = d
+ return appointment_details
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/buyer.py b/ebay_client/generated/fulfillment/models/buyer.py
new file mode 100644
index 0000000..7e3848f
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/buyer.py
@@ -0,0 +1,155 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.tax_identifier import TaxIdentifier
+ from ..models.extended_contact import ExtendedContact
+ from ..models.tax_address import TaxAddress
+
+
+
+
+
+T = TypeVar("T", bound="Buyer")
+
+
+
+@_attrs_define
+class Buyer:
+ """ This type contains information about the order's buyer.
+
+ Attributes:
+ buyer_registration_address (Union[Unset, ExtendedContact]): This type contains shipping and contact information
+ for a buyer or an eBay shipping partner.
+ tax_address (Union[Unset, TaxAddress]): This container consists of address information that can be used by
+ sellers for tax purpose.
+ tax_identifier (Union[Unset, TaxIdentifier]): This type is used by the taxIdentifier container
+ that is returned in getOrder. The taxIdentifier container consists of taxpayer
+ identification information for buyers from Italy, Spain, or Guatemala. It is currently only returned for orders
+ occurring on the eBay Italy or eBay Spain marketplaces.
Note:
+ Currently, the taxIdentifier container is only returned in getOrder and not in
+ getOrders. So, if a seller wanted to view a buyer's tax information for a particular order
+ returned in getOrders, that seller would need to use the orderId value for
+ that particular order, and then run a getOrder call against that order ID.
+ username (Union[Unset, str]): The buyer's eBay user ID.
+ """
+
+ buyer_registration_address: Union[Unset, 'ExtendedContact'] = UNSET
+ tax_address: Union[Unset, 'TaxAddress'] = UNSET
+ tax_identifier: Union[Unset, 'TaxIdentifier'] = UNSET
+ username: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.tax_identifier import TaxIdentifier
+ from ..models.extended_contact import ExtendedContact
+ from ..models.tax_address import TaxAddress
+ buyer_registration_address: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.buyer_registration_address, Unset):
+ buyer_registration_address = self.buyer_registration_address.to_dict()
+
+ tax_address: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.tax_address, Unset):
+ tax_address = self.tax_address.to_dict()
+
+ tax_identifier: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.tax_identifier, Unset):
+ tax_identifier = self.tax_identifier.to_dict()
+
+ username = self.username
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if buyer_registration_address is not UNSET:
+ field_dict["buyerRegistrationAddress"] = buyer_registration_address
+ if tax_address is not UNSET:
+ field_dict["taxAddress"] = tax_address
+ if tax_identifier is not UNSET:
+ field_dict["taxIdentifier"] = tax_identifier
+ if username is not UNSET:
+ field_dict["username"] = username
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.tax_identifier import TaxIdentifier
+ from ..models.extended_contact import ExtendedContact
+ from ..models.tax_address import TaxAddress
+ d = dict(src_dict)
+ _buyer_registration_address = d.pop("buyerRegistrationAddress", UNSET)
+ buyer_registration_address: Union[Unset, ExtendedContact]
+ if isinstance(_buyer_registration_address, Unset):
+ buyer_registration_address = UNSET
+ else:
+ buyer_registration_address = ExtendedContact.from_dict(_buyer_registration_address)
+
+
+
+
+ _tax_address = d.pop("taxAddress", UNSET)
+ tax_address: Union[Unset, TaxAddress]
+ if isinstance(_tax_address, Unset):
+ tax_address = UNSET
+ else:
+ tax_address = TaxAddress.from_dict(_tax_address)
+
+
+
+
+ _tax_identifier = d.pop("taxIdentifier", UNSET)
+ tax_identifier: Union[Unset, TaxIdentifier]
+ if isinstance(_tax_identifier, Unset):
+ tax_identifier = UNSET
+ else:
+ tax_identifier = TaxIdentifier.from_dict(_tax_identifier)
+
+
+
+
+ username = d.pop("username", UNSET)
+
+ buyer = cls(
+ buyer_registration_address=buyer_registration_address,
+ tax_address=tax_address,
+ tax_identifier=tax_identifier,
+ username=username,
+ )
+
+
+ buyer.additional_properties = d
+ return buyer
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/cancel_request.py b/ebay_client/generated/fulfillment/models/cancel_request.py
new file mode 100644
index 0000000..dd45c27
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/cancel_request.py
@@ -0,0 +1,139 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="CancelRequest")
+
+
+
+@_attrs_define
+class CancelRequest:
+ """ This type contains information about a buyer request to cancel an order.
+
+ Attributes:
+ cancel_completed_date (Union[Unset, str]): The date and time that the order cancellation was completed, if
+ applicable. This timestamp is in ISO 8601 format, which uses the 24-hour Universal Coordinated Time (UTC) clock.
+ This field is not returned until the cancellation request has actually been approved by the
+ seller.
Format: [YYYY]-[MM]-[DD]T[hh]:[mm]:[ss].[sss]Z
Example:
+ 2015-08-04T19:09:02.768Z
+ cancel_initiator (Union[Unset, str]): This string value indicates the party who made the initial cancellation
+ request. Typically, either the 'Buyer' or 'Seller'. If a cancellation request has been made, this field should
+ be returned.
+ cancel_reason (Union[Unset, str]): The reason why the cancelInitiator initiated the cancellation request.
+ Cancellation reasons for a buyer might include 'order placed by mistake' or 'order won't arrive in time'. For a
+ seller, a typical cancellation reason is 'out of stock'. If a cancellation request has been made, this field
+ should be returned.
+ cancel_requested_date (Union[Unset, str]): The date and time that the order cancellation was requested. This
+ timestamp is in ISO 8601 format, which uses the 24-hour Universal Coordinated Time (UTC) clock. This field is
+ returned for each cancellation request.
Format:
+ [YYYY]-[MM]-[DD]T[hh]:[mm]:[ss].[sss]Z
Example: 2015-08-04T19:09:02.768Z
+ cancel_request_id (Union[Unset, str]): The unique identifier of the order cancellation request. This field is
+ returned for each cancellation request.
+ cancel_request_state (Union[Unset, str]): The current stage or condition of the cancellation request. This field
+ is returned for each cancellation request. For implementation help, refer to eBay API
+ documentation
+ """
+
+ cancel_completed_date: Union[Unset, str] = UNSET
+ cancel_initiator: Union[Unset, str] = UNSET
+ cancel_reason: Union[Unset, str] = UNSET
+ cancel_requested_date: Union[Unset, str] = UNSET
+ cancel_request_id: Union[Unset, str] = UNSET
+ cancel_request_state: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ cancel_completed_date = self.cancel_completed_date
+
+ cancel_initiator = self.cancel_initiator
+
+ cancel_reason = self.cancel_reason
+
+ cancel_requested_date = self.cancel_requested_date
+
+ cancel_request_id = self.cancel_request_id
+
+ cancel_request_state = self.cancel_request_state
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if cancel_completed_date is not UNSET:
+ field_dict["cancelCompletedDate"] = cancel_completed_date
+ if cancel_initiator is not UNSET:
+ field_dict["cancelInitiator"] = cancel_initiator
+ if cancel_reason is not UNSET:
+ field_dict["cancelReason"] = cancel_reason
+ if cancel_requested_date is not UNSET:
+ field_dict["cancelRequestedDate"] = cancel_requested_date
+ if cancel_request_id is not UNSET:
+ field_dict["cancelRequestId"] = cancel_request_id
+ if cancel_request_state is not UNSET:
+ field_dict["cancelRequestState"] = cancel_request_state
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ cancel_completed_date = d.pop("cancelCompletedDate", UNSET)
+
+ cancel_initiator = d.pop("cancelInitiator", UNSET)
+
+ cancel_reason = d.pop("cancelReason", UNSET)
+
+ cancel_requested_date = d.pop("cancelRequestedDate", UNSET)
+
+ cancel_request_id = d.pop("cancelRequestId", UNSET)
+
+ cancel_request_state = d.pop("cancelRequestState", UNSET)
+
+ cancel_request = cls(
+ cancel_completed_date=cancel_completed_date,
+ cancel_initiator=cancel_initiator,
+ cancel_reason=cancel_reason,
+ cancel_requested_date=cancel_requested_date,
+ cancel_request_id=cancel_request_id,
+ cancel_request_state=cancel_request_state,
+ )
+
+
+ cancel_request.additional_properties = d
+ return cancel_request
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/cancel_status.py b/ebay_client/generated/fulfillment/models/cancel_status.py
new file mode 100644
index 0000000..d34080e
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/cancel_status.py
@@ -0,0 +1,124 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.cancel_request import CancelRequest
+
+
+
+
+
+T = TypeVar("T", bound="CancelStatus")
+
+
+
+@_attrs_define
+class CancelStatus:
+ """ This type contains information about any requests that have been made to cancel an order.
+
+ Attributes:
+ cancelled_date (Union[Unset, str]): The date and time the order was cancelled, if applicable. This timestamp is
+ in ISO 8601 format, which uses the 24-hour Universal Coordinated Time (UTC) clock.
Format:
+ [YYYY]-[MM]-[DD]T[hh]:[mm]:[ss].[sss]Z
Example: 2015-08-04T19:09:02.768Z
+ cancel_requests (Union[Unset, list['CancelRequest']]): This array contains details of one or more buyer requests
+ to cancel the order.
For the getOrders call: This array is returned but is always
+ empty.
For the getOrder call: This array is returned fully populated with information about any
+ cancellation requests.
+ cancel_state (Union[Unset, str]): The state of the order with regard to cancellation. This field is always
+ returned, and if there are no cancellation requests, a value of NONE_REQUESTED is returned. For
+ implementation help, refer to eBay API documentation
+ """
+
+ cancelled_date: Union[Unset, str] = UNSET
+ cancel_requests: Union[Unset, list['CancelRequest']] = UNSET
+ cancel_state: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.cancel_request import CancelRequest
+ cancelled_date = self.cancelled_date
+
+ cancel_requests: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.cancel_requests, Unset):
+ cancel_requests = []
+ for cancel_requests_item_data in self.cancel_requests:
+ cancel_requests_item = cancel_requests_item_data.to_dict()
+ cancel_requests.append(cancel_requests_item)
+
+
+
+ cancel_state = self.cancel_state
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if cancelled_date is not UNSET:
+ field_dict["cancelledDate"] = cancelled_date
+ if cancel_requests is not UNSET:
+ field_dict["cancelRequests"] = cancel_requests
+ if cancel_state is not UNSET:
+ field_dict["cancelState"] = cancel_state
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.cancel_request import CancelRequest
+ d = dict(src_dict)
+ cancelled_date = d.pop("cancelledDate", UNSET)
+
+ cancel_requests = []
+ _cancel_requests = d.pop("cancelRequests", UNSET)
+ for cancel_requests_item_data in (_cancel_requests or []):
+ cancel_requests_item = CancelRequest.from_dict(cancel_requests_item_data)
+
+
+
+ cancel_requests.append(cancel_requests_item)
+
+
+ cancel_state = d.pop("cancelState", UNSET)
+
+ cancel_status = cls(
+ cancelled_date=cancelled_date,
+ cancel_requests=cancel_requests,
+ cancel_state=cancel_state,
+ )
+
+
+ cancel_status.additional_properties = d
+ return cancel_status
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/charge.py b/ebay_client/generated/fulfillment/models/charge.py
new file mode 100644
index 0000000..a196deb
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/charge.py
@@ -0,0 +1,107 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.amount import Amount
+
+
+
+
+
+T = TypeVar("T", bound="Charge")
+
+
+
+@_attrs_define
+class Charge:
+ """ This type is used to display the charge type and the amount of the charge against the buyer.
+
+ Attributes:
+ amount (Union[Unset, Amount]): This type defines the monetary value of an amount. It can provide the amount in
+ both the currency used on the eBay site where an item is being offered and the conversion of that value into
+ another currency, if applicable.
+ charge_type (Union[Unset, str]): This field shows the type of buyer charge
+ Note: Currently, the only supported charge type is BUYER_PROTECTION. For
+ implementation help, refer to eBay API documentation
+ """
+
+ amount: Union[Unset, 'Amount'] = UNSET
+ charge_type: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.amount import Amount
+ amount: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.amount, Unset):
+ amount = self.amount.to_dict()
+
+ charge_type = self.charge_type
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if amount is not UNSET:
+ field_dict["amount"] = amount
+ if charge_type is not UNSET:
+ field_dict["chargeType"] = charge_type
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.amount import Amount
+ d = dict(src_dict)
+ _amount = d.pop("amount", UNSET)
+ amount: Union[Unset, Amount]
+ if isinstance(_amount, Unset):
+ amount = UNSET
+ else:
+ amount = Amount.from_dict(_amount)
+
+
+
+
+ charge_type = d.pop("chargeType", UNSET)
+
+ charge = cls(
+ amount=amount,
+ charge_type=charge_type,
+ )
+
+
+ charge.additional_properties = d
+ return charge
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/contest_payment_dispute_request.py b/ebay_client/generated/fulfillment/models/contest_payment_dispute_request.py
new file mode 100644
index 0000000..306ce88
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/contest_payment_dispute_request.py
@@ -0,0 +1,117 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.return_address import ReturnAddress
+
+
+
+
+
+T = TypeVar("T", bound="ContestPaymentDisputeRequest")
+
+
+
+@_attrs_define
+class ContestPaymentDisputeRequest:
+ """ This type is used by the request payload of the contestPaymentDispute method.
+
+ Attributes:
+ note (Union[Unset, str]): This field shows information that the seller provides about the dispute, such as the
+ basis for the dispute, any relevant evidence, tracking numbers, and so forth.
Max Length: 1000
+ characters.
+ return_address (Union[Unset, ReturnAddress]): This type is used by the payment dispute methods, and is relevant
+ if the buyer will be returning the item to the seller.
+ revision (Union[Unset, int]): This integer value indicates the revision number of the payment dispute. This
+ field is required. The current revision number for a payment dispute can be retrieved with the
+ getPaymentDispute method. Each time an action is taken against a payment dispute, this integer
+ value increases by 1.
+ """
+
+ note: Union[Unset, str] = UNSET
+ return_address: Union[Unset, 'ReturnAddress'] = UNSET
+ revision: Union[Unset, int] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.return_address import ReturnAddress
+ note = self.note
+
+ return_address: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.return_address, Unset):
+ return_address = self.return_address.to_dict()
+
+ revision = self.revision
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if note is not UNSET:
+ field_dict["note"] = note
+ if return_address is not UNSET:
+ field_dict["returnAddress"] = return_address
+ if revision is not UNSET:
+ field_dict["revision"] = revision
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.return_address import ReturnAddress
+ d = dict(src_dict)
+ note = d.pop("note", UNSET)
+
+ _return_address = d.pop("returnAddress", UNSET)
+ return_address: Union[Unset, ReturnAddress]
+ if isinstance(_return_address, Unset):
+ return_address = UNSET
+ else:
+ return_address = ReturnAddress.from_dict(_return_address)
+
+
+
+
+ revision = d.pop("revision", UNSET)
+
+ contest_payment_dispute_request = cls(
+ note=note,
+ return_address=return_address,
+ revision=revision,
+ )
+
+
+ contest_payment_dispute_request.additional_properties = d
+ return contest_payment_dispute_request
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/create_shipping_fulfillment_response_201.py b/ebay_client/generated/fulfillment/models/create_shipping_fulfillment_response_201.py
new file mode 100644
index 0000000..8b322a6
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/create_shipping_fulfillment_response_201.py
@@ -0,0 +1,63 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+
+
+
+
+
+
+T = TypeVar("T", bound="CreateShippingFulfillmentResponse201")
+
+
+
+@_attrs_define
+class CreateShippingFulfillmentResponse201:
+ """
+ """
+
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ create_shipping_fulfillment_response_201 = cls(
+ )
+
+
+ create_shipping_fulfillment_response_201.additional_properties = d
+ return create_shipping_fulfillment_response_201
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/delivery_cost.py b/ebay_client/generated/fulfillment/models/delivery_cost.py
new file mode 100644
index 0000000..0095171
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/delivery_cost.py
@@ -0,0 +1,179 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.amount import Amount
+
+
+
+
+
+T = TypeVar("T", bound="DeliveryCost")
+
+
+
+@_attrs_define
+class DeliveryCost:
+ """ This type contains a breakdown of all costs associated with the fulfillment of a line item.
+
+ Attributes:
+ discount_amount (Union[Unset, Amount]): This type defines the monetary value of an amount. It can provide the
+ amount in both the currency used on the eBay site where an item is being offered and the conversion of that
+ value into another currency, if applicable.
+ handling_cost (Union[Unset, Amount]): This type defines the monetary value of an amount. It can provide the
+ amount in both the currency used on the eBay site where an item is being offered and the conversion of that
+ value into another currency, if applicable.
+ import_charges (Union[Unset, Amount]): This type defines the monetary value of an amount. It can provide the
+ amount in both the currency used on the eBay site where an item is being offered and the conversion of that
+ value into another currency, if applicable.
+ shipping_cost (Union[Unset, Amount]): This type defines the monetary value of an amount. It can provide the
+ amount in both the currency used on the eBay site where an item is being offered and the conversion of that
+ value into another currency, if applicable.
+ shipping_intermediation_fee (Union[Unset, Amount]): This type defines the monetary value of an amount. It can
+ provide the amount in both the currency used on the eBay site where an item is being offered and the conversion
+ of that value into another currency, if applicable.
+ """
+
+ discount_amount: Union[Unset, 'Amount'] = UNSET
+ handling_cost: Union[Unset, 'Amount'] = UNSET
+ import_charges: Union[Unset, 'Amount'] = UNSET
+ shipping_cost: Union[Unset, 'Amount'] = UNSET
+ shipping_intermediation_fee: Union[Unset, 'Amount'] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.amount import Amount
+ discount_amount: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.discount_amount, Unset):
+ discount_amount = self.discount_amount.to_dict()
+
+ handling_cost: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.handling_cost, Unset):
+ handling_cost = self.handling_cost.to_dict()
+
+ import_charges: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.import_charges, Unset):
+ import_charges = self.import_charges.to_dict()
+
+ shipping_cost: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.shipping_cost, Unset):
+ shipping_cost = self.shipping_cost.to_dict()
+
+ shipping_intermediation_fee: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.shipping_intermediation_fee, Unset):
+ shipping_intermediation_fee = self.shipping_intermediation_fee.to_dict()
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if discount_amount is not UNSET:
+ field_dict["discountAmount"] = discount_amount
+ if handling_cost is not UNSET:
+ field_dict["handlingCost"] = handling_cost
+ if import_charges is not UNSET:
+ field_dict["importCharges"] = import_charges
+ if shipping_cost is not UNSET:
+ field_dict["shippingCost"] = shipping_cost
+ if shipping_intermediation_fee is not UNSET:
+ field_dict["shippingIntermediationFee"] = shipping_intermediation_fee
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.amount import Amount
+ d = dict(src_dict)
+ _discount_amount = d.pop("discountAmount", UNSET)
+ discount_amount: Union[Unset, Amount]
+ if isinstance(_discount_amount, Unset):
+ discount_amount = UNSET
+ else:
+ discount_amount = Amount.from_dict(_discount_amount)
+
+
+
+
+ _handling_cost = d.pop("handlingCost", UNSET)
+ handling_cost: Union[Unset, Amount]
+ if isinstance(_handling_cost, Unset):
+ handling_cost = UNSET
+ else:
+ handling_cost = Amount.from_dict(_handling_cost)
+
+
+
+
+ _import_charges = d.pop("importCharges", UNSET)
+ import_charges: Union[Unset, Amount]
+ if isinstance(_import_charges, Unset):
+ import_charges = UNSET
+ else:
+ import_charges = Amount.from_dict(_import_charges)
+
+
+
+
+ _shipping_cost = d.pop("shippingCost", UNSET)
+ shipping_cost: Union[Unset, Amount]
+ if isinstance(_shipping_cost, Unset):
+ shipping_cost = UNSET
+ else:
+ shipping_cost = Amount.from_dict(_shipping_cost)
+
+
+
+
+ _shipping_intermediation_fee = d.pop("shippingIntermediationFee", UNSET)
+ shipping_intermediation_fee: Union[Unset, Amount]
+ if isinstance(_shipping_intermediation_fee, Unset):
+ shipping_intermediation_fee = UNSET
+ else:
+ shipping_intermediation_fee = Amount.from_dict(_shipping_intermediation_fee)
+
+
+
+
+ delivery_cost = cls(
+ discount_amount=discount_amount,
+ handling_cost=handling_cost,
+ import_charges=import_charges,
+ shipping_cost=shipping_cost,
+ shipping_intermediation_fee=shipping_intermediation_fee,
+ )
+
+
+ delivery_cost.additional_properties = d
+ return delivery_cost
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/dispute_amount.py b/ebay_client/generated/fulfillment/models/dispute_amount.py
new file mode 100644
index 0000000..1aaa226
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/dispute_amount.py
@@ -0,0 +1,129 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="DisputeAmount")
+
+
+
+@_attrs_define
+class DisputeAmount:
+ """ This type defines the monetary value of an amount. It can provide the amount in both the currency used on the eBay
+ site where an item is being offered and the conversion of that value into another currency, if applicable.
+
+ Attributes:
+ converted_from_currency (Union[Unset, str]): The three-letter ISO 4217 code representing the currency of the amount in the
+ convertedFromValue field. This value is the pre-conversion currency.
This field is only returned
+ if/when currency conversion was applied by eBay. For implementation help, refer to eBay API documentation
+ converted_from_value (Union[Unset, str]): The monetary amount before any conversion is performed, in the
+ currency specified by the convertedFromCurrency field. This value is the pre-conversion amount. The
+ value field contains the converted amount of this value, in the currency specified by the currency
+ field.
This field is only returned if/when currency conversion was applied by eBay.
+ currency (Union[Unset, str]): A three-letter ISO 4217 code that indicates the currency of the amount in the
+ value field. This field is always returned with any container using Amount type.
+
Default: The currency of the authenticated user's country. For implementation help, refer to eBay API documentation
+ exchange_rate (Union[Unset, str]): The exchange rate used for the monetary conversion. This field shows the
+ exchange rate used to convert the dollar value in the value field from the dollar value in the
+ convertedFromValue field.
This field is only returned if/when currency conversion was applied by
+ eBay.
+ value (Union[Unset, str]): The monetary amount, in the currency specified by the currency field. This
+ field is always returned with any container using Amount type.
+ """
+
+ converted_from_currency: Union[Unset, str] = UNSET
+ converted_from_value: Union[Unset, str] = UNSET
+ currency: Union[Unset, str] = UNSET
+ exchange_rate: Union[Unset, str] = UNSET
+ value: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ converted_from_currency = self.converted_from_currency
+
+ converted_from_value = self.converted_from_value
+
+ currency = self.currency
+
+ exchange_rate = self.exchange_rate
+
+ value = self.value
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if converted_from_currency is not UNSET:
+ field_dict["convertedFromCurrency"] = converted_from_currency
+ if converted_from_value is not UNSET:
+ field_dict["convertedFromValue"] = converted_from_value
+ if currency is not UNSET:
+ field_dict["currency"] = currency
+ if exchange_rate is not UNSET:
+ field_dict["exchangeRate"] = exchange_rate
+ if value is not UNSET:
+ field_dict["value"] = value
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ converted_from_currency = d.pop("convertedFromCurrency", UNSET)
+
+ converted_from_value = d.pop("convertedFromValue", UNSET)
+
+ currency = d.pop("currency", UNSET)
+
+ exchange_rate = d.pop("exchangeRate", UNSET)
+
+ value = d.pop("value", UNSET)
+
+ dispute_amount = cls(
+ converted_from_currency=converted_from_currency,
+ converted_from_value=converted_from_value,
+ currency=currency,
+ exchange_rate=exchange_rate,
+ value=value,
+ )
+
+
+ dispute_amount.additional_properties = d
+ return dispute_amount
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/dispute_evidence.py b/ebay_client/generated/fulfillment/models/dispute_evidence.py
new file mode 100644
index 0000000..21a802a
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/dispute_evidence.py
@@ -0,0 +1,219 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.order_line_items import OrderLineItems
+ from ..models.tracking_info import TrackingInfo
+ from ..models.file_info import FileInfo
+
+
+
+
+
+T = TypeVar("T", bound="DisputeEvidence")
+
+
+
+@_attrs_define
+class DisputeEvidence:
+ """ This type is used by the evidence array that is returned in the getPaymentDispute
+ response if one or more evidential documents are associated with the payment dispute.
+
+ Attributes:
+ evidence_id (Union[Unset, str]): Unique identifier of the evidential file set. Potentially, each evidential file
+ set can have more than one file, that is why there is this file set identifier, and then an identifier for each
+ file within this file set.
+ evidence_type (Union[Unset, str]): This enumeration value shows the type of evidential file provided. For
+ implementation help, refer to eBay API documentation
+ files (Union[Unset, list['FileInfo']]): This array shows the name, ID, file type, and upload date for each
+ provided file.
+ line_items (Union[Unset, list['OrderLineItems']]): This array shows one or more order line items associated with
+ the evidential document that has been provided.
+ provided_date (Union[Unset, str]): The timestamp in this field shows the date/time when the seller provided a
+ requested evidential document to eBay.
The timestamps returned here use the ISO-8601 24-hour date and
+ time format, and the time zone used is Universal Coordinated Time (UTC), also known as Greenwich Mean Time
+ (GMT), or Zulu. The ISO-8601 format looks like this: yyyy-MM-ddThh:mm.ss.sssZ. An example would be
+ 2019-08-04T19:09:02.768Z.
+ request_date (Union[Unset, str]): The timestamp in this field shows the date/time when eBay requested the
+ evidential document from the seller in response to a payment dispute.
The timestamps returned here use
+ the ISO-8601 24-hour date and time format, and the time zone used is Universal Coordinated Time (UTC), also
+ known as Greenwich Mean Time (GMT), or Zulu. The ISO-8601 format looks like this: yyyy-MM-
+ ddThh:mm.ss.sssZ. An example would be 2019-08-04T19:09:02.768Z.
+ respond_by_date (Union[Unset, str]): The timestamp in this field shows the date/time when the seller was
+ expected to provide a requested evidential document to eBay.
The timestamps returned here use the
+ ISO-8601 24-hour date and time format, and the time zone used is Universal Coordinated Time (UTC), also known as
+ Greenwich Mean Time (GMT), or Zulu. The ISO-8601 format looks like this: yyyy-MM-ddThh:mm.ss.sssZ. An
+ example would be 2019-08-04T19:09:02.768Z.
+ shipment_tracking (Union[Unset, list['TrackingInfo']]): This array shows the shipping carrier and shipment
+ tracking number associated with each shipment package of the order. This array is returned under the
+ evidence container if the seller has provided shipment tracking information as evidence to
+ support PROOF_OF_DELIVERY for an INR-related payment dispute.
+ """
+
+ evidence_id: Union[Unset, str] = UNSET
+ evidence_type: Union[Unset, str] = UNSET
+ files: Union[Unset, list['FileInfo']] = UNSET
+ line_items: Union[Unset, list['OrderLineItems']] = UNSET
+ provided_date: Union[Unset, str] = UNSET
+ request_date: Union[Unset, str] = UNSET
+ respond_by_date: Union[Unset, str] = UNSET
+ shipment_tracking: Union[Unset, list['TrackingInfo']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.order_line_items import OrderLineItems
+ from ..models.tracking_info import TrackingInfo
+ from ..models.file_info import FileInfo
+ evidence_id = self.evidence_id
+
+ evidence_type = self.evidence_type
+
+ files: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.files, Unset):
+ files = []
+ for files_item_data in self.files:
+ files_item = files_item_data.to_dict()
+ files.append(files_item)
+
+
+
+ line_items: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.line_items, Unset):
+ line_items = []
+ for line_items_item_data in self.line_items:
+ line_items_item = line_items_item_data.to_dict()
+ line_items.append(line_items_item)
+
+
+
+ provided_date = self.provided_date
+
+ request_date = self.request_date
+
+ respond_by_date = self.respond_by_date
+
+ shipment_tracking: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.shipment_tracking, Unset):
+ shipment_tracking = []
+ for shipment_tracking_item_data in self.shipment_tracking:
+ shipment_tracking_item = shipment_tracking_item_data.to_dict()
+ shipment_tracking.append(shipment_tracking_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if evidence_id is not UNSET:
+ field_dict["evidenceId"] = evidence_id
+ if evidence_type is not UNSET:
+ field_dict["evidenceType"] = evidence_type
+ if files is not UNSET:
+ field_dict["files"] = files
+ if line_items is not UNSET:
+ field_dict["lineItems"] = line_items
+ if provided_date is not UNSET:
+ field_dict["providedDate"] = provided_date
+ if request_date is not UNSET:
+ field_dict["requestDate"] = request_date
+ if respond_by_date is not UNSET:
+ field_dict["respondByDate"] = respond_by_date
+ if shipment_tracking is not UNSET:
+ field_dict["shipmentTracking"] = shipment_tracking
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.order_line_items import OrderLineItems
+ from ..models.tracking_info import TrackingInfo
+ from ..models.file_info import FileInfo
+ d = dict(src_dict)
+ evidence_id = d.pop("evidenceId", UNSET)
+
+ evidence_type = d.pop("evidenceType", UNSET)
+
+ files = []
+ _files = d.pop("files", UNSET)
+ for files_item_data in (_files or []):
+ files_item = FileInfo.from_dict(files_item_data)
+
+
+
+ files.append(files_item)
+
+
+ line_items = []
+ _line_items = d.pop("lineItems", UNSET)
+ for line_items_item_data in (_line_items or []):
+ line_items_item = OrderLineItems.from_dict(line_items_item_data)
+
+
+
+ line_items.append(line_items_item)
+
+
+ provided_date = d.pop("providedDate", UNSET)
+
+ request_date = d.pop("requestDate", UNSET)
+
+ respond_by_date = d.pop("respondByDate", UNSET)
+
+ shipment_tracking = []
+ _shipment_tracking = d.pop("shipmentTracking", UNSET)
+ for shipment_tracking_item_data in (_shipment_tracking or []):
+ shipment_tracking_item = TrackingInfo.from_dict(shipment_tracking_item_data)
+
+
+
+ shipment_tracking.append(shipment_tracking_item)
+
+
+ dispute_evidence = cls(
+ evidence_id=evidence_id,
+ evidence_type=evidence_type,
+ files=files,
+ line_items=line_items,
+ provided_date=provided_date,
+ request_date=request_date,
+ respond_by_date=respond_by_date,
+ shipment_tracking=shipment_tracking,
+ )
+
+
+ dispute_evidence.additional_properties = d
+ return dispute_evidence
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/dispute_summary_response.py b/ebay_client/generated/fulfillment/models/dispute_summary_response.py
new file mode 100644
index 0000000..b97e48e
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/dispute_summary_response.py
@@ -0,0 +1,171 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.payment_dispute_summary import PaymentDisputeSummary
+
+
+
+
+
+T = TypeVar("T", bound="DisputeSummaryResponse")
+
+
+
+@_attrs_define
+class DisputeSummaryResponse:
+ """ This type defines the base response payload of the getPaymentDisputeSummaries method. Each payment
+ dispute that matches the input criteria is returned under the paymentDisputeSummaries array.
+
+ Attributes:
+ href (Union[Unset, str]): The URI of the getPaymentDisputeSummaries call request that produced
+ the current page of the result set.
+ limit (Union[Unset, int]): This value shows the maximum number of payment disputes that will appear on one page
+ of the result set. The limit value can be passed in as a query parameter in the request, or if
+ it is not used, it defaults to 200. If the value in the total field exceeds this
+ limit value, there are multiple pages in the current result set.
Min: 1;
+ Max: 200; Default: 200
+ next_ (Union[Unset, str]): The getPaymentDisputeSummaries call URI to use if you wish to view
+ the next page of the result set. For example, the following URI returns records 11 thru 20 from the collection
+ of payment disputes:
path/payment_dispute_summary?limit=10&offset=10
This field is
+ only returned if there is a next page of results to view based on the current input criteria.
+ offset (Union[Unset, int]): This integer value indicates the number of payment disputes skipped before listing
+ the first payment dispute from the result set. The offset value can be passed in as a query
+ parameter in the request, or if it is not used, it defaults to 0 and the first payment dispute of
+ the result set is shown at the top of the response.
+ payment_dispute_summaries (Union[Unset, list['PaymentDisputeSummary']]): Each payment dispute that matches the
+ input criteria is returned under this array. If no payment disputes are found, an empty array is returned.
+ prev (Union[Unset, str]): The getPaymentDisputeSummaries call URI to use if you wish to view
+ the previous page of the result set. For example, the following URI returns records 1 thru 10 from the
+ collection of payment disputes:
path/payment_dispute_summary?limit=10&offset=0
This
+ field is only returned if there is a previous page of results to view based on the current input criteria.
+ total (Union[Unset, int]): This integer value is the total number of payment disputes that matched the input
+ criteria. If the total number of entries exceeds the value that was set for limit in the
+ request payload, you will have to make multiple API calls to see all pages of the results set. This field is
+ returned even if it is 0.
+ """
+
+ href: Union[Unset, str] = UNSET
+ limit: Union[Unset, int] = UNSET
+ next_: Union[Unset, str] = UNSET
+ offset: Union[Unset, int] = UNSET
+ payment_dispute_summaries: Union[Unset, list['PaymentDisputeSummary']] = UNSET
+ prev: Union[Unset, str] = UNSET
+ total: Union[Unset, int] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.payment_dispute_summary import PaymentDisputeSummary
+ href = self.href
+
+ limit = self.limit
+
+ next_ = self.next_
+
+ offset = self.offset
+
+ payment_dispute_summaries: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.payment_dispute_summaries, Unset):
+ payment_dispute_summaries = []
+ for payment_dispute_summaries_item_data in self.payment_dispute_summaries:
+ payment_dispute_summaries_item = payment_dispute_summaries_item_data.to_dict()
+ payment_dispute_summaries.append(payment_dispute_summaries_item)
+
+
+
+ prev = self.prev
+
+ total = self.total
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if href is not UNSET:
+ field_dict["href"] = href
+ if limit is not UNSET:
+ field_dict["limit"] = limit
+ if next_ is not UNSET:
+ field_dict["next"] = next_
+ if offset is not UNSET:
+ field_dict["offset"] = offset
+ if payment_dispute_summaries is not UNSET:
+ field_dict["paymentDisputeSummaries"] = payment_dispute_summaries
+ if prev is not UNSET:
+ field_dict["prev"] = prev
+ if total is not UNSET:
+ field_dict["total"] = total
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.payment_dispute_summary import PaymentDisputeSummary
+ d = dict(src_dict)
+ href = d.pop("href", UNSET)
+
+ limit = d.pop("limit", UNSET)
+
+ next_ = d.pop("next", UNSET)
+
+ offset = d.pop("offset", UNSET)
+
+ payment_dispute_summaries = []
+ _payment_dispute_summaries = d.pop("paymentDisputeSummaries", UNSET)
+ for payment_dispute_summaries_item_data in (_payment_dispute_summaries or []):
+ payment_dispute_summaries_item = PaymentDisputeSummary.from_dict(payment_dispute_summaries_item_data)
+
+
+
+ payment_dispute_summaries.append(payment_dispute_summaries_item)
+
+
+ prev = d.pop("prev", UNSET)
+
+ total = d.pop("total", UNSET)
+
+ dispute_summary_response = cls(
+ href=href,
+ limit=limit,
+ next_=next_,
+ offset=offset,
+ payment_dispute_summaries=payment_dispute_summaries,
+ prev=prev,
+ total=total,
+ )
+
+
+ dispute_summary_response.additional_properties = d
+ return dispute_summary_response
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/ebay_collect_and_remit_tax.py b/ebay_client/generated/fulfillment/models/ebay_collect_and_remit_tax.py
new file mode 100644
index 0000000..60678e8
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/ebay_collect_and_remit_tax.py
@@ -0,0 +1,151 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.ebay_tax_reference import EbayTaxReference
+ from ..models.amount import Amount
+
+
+
+
+
+T = TypeVar("T", bound="EbayCollectAndRemitTax")
+
+
+
+@_attrs_define
+class EbayCollectAndRemitTax:
+ """ This type contains information about the type and amount of tax that eBay will collect and remit to the state,
+ province, country, or other taxing authority in the buyer's location, as required by that taxing
+ authority.
'Collect and Remit' tax includes:- US state-mandated sales tax
- Federal and
+ Provincial Sales Tax in Canada
- 'Goods and Services' tax in Canada, Australia, and New Zealand
- VAT
+ collected for the UK and EU countries
+
+ Attributes:
+ amount (Union[Unset, Amount]): This type defines the monetary value of an amount. It can provide the amount in
+ both the currency used on the eBay site where an item is being offered and the conversion of that value into
+ another currency, if applicable.
+ ebay_reference (Union[Unset, EbayTaxReference]): This type describes the VAT tax details. The eBay VAT tax type
+ and the eBay VAT identifier number will be returned if a VAT tax is applicable for the order.
+ tax_type (Union[Unset, str]): The type of tax and fees that eBay will collect and remit to the taxing or fee
+ authority. See the TaxTypeEnum type definition for more information about each tax or fee type.
+ For implementation help, refer to eBay API documentation
+ collection_method (Union[Unset, str]): This field indicates the collection method used to collect the 'Collect
+ and Remit' tax for the order. This field is always returned for orders subject to 'Collect and Remit' tax, and
+ its value is always NET.
Note: Although the
+ collectionMethod field is returned for all orders subject to 'Collect and Remit' tax, the
+ collectionMethod field and the CollectionMethodEnum type are not currently of
+ any practical use, although this field may have use in the future. If and when the logic of this field is
+ changed, this note will be updated and a note will also be added to the Release Notes. For implementation
+ help, refer to eBay API documentation
+ """
+
+ amount: Union[Unset, 'Amount'] = UNSET
+ ebay_reference: Union[Unset, 'EbayTaxReference'] = UNSET
+ tax_type: Union[Unset, str] = UNSET
+ collection_method: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.ebay_tax_reference import EbayTaxReference
+ from ..models.amount import Amount
+ amount: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.amount, Unset):
+ amount = self.amount.to_dict()
+
+ ebay_reference: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.ebay_reference, Unset):
+ ebay_reference = self.ebay_reference.to_dict()
+
+ tax_type = self.tax_type
+
+ collection_method = self.collection_method
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if amount is not UNSET:
+ field_dict["amount"] = amount
+ if ebay_reference is not UNSET:
+ field_dict["ebayReference"] = ebay_reference
+ if tax_type is not UNSET:
+ field_dict["taxType"] = tax_type
+ if collection_method is not UNSET:
+ field_dict["collectionMethod"] = collection_method
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.ebay_tax_reference import EbayTaxReference
+ from ..models.amount import Amount
+ d = dict(src_dict)
+ _amount = d.pop("amount", UNSET)
+ amount: Union[Unset, Amount]
+ if isinstance(_amount, Unset):
+ amount = UNSET
+ else:
+ amount = Amount.from_dict(_amount)
+
+
+
+
+ _ebay_reference = d.pop("ebayReference", UNSET)
+ ebay_reference: Union[Unset, EbayTaxReference]
+ if isinstance(_ebay_reference, Unset):
+ ebay_reference = UNSET
+ else:
+ ebay_reference = EbayTaxReference.from_dict(_ebay_reference)
+
+
+
+
+ tax_type = d.pop("taxType", UNSET)
+
+ collection_method = d.pop("collectionMethod", UNSET)
+
+ ebay_collect_and_remit_tax = cls(
+ amount=amount,
+ ebay_reference=ebay_reference,
+ tax_type=tax_type,
+ collection_method=collection_method,
+ )
+
+
+ ebay_collect_and_remit_tax.additional_properties = d
+ return ebay_collect_and_remit_tax
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/ebay_collected_charges.py b/ebay_client/generated/fulfillment/models/ebay_collected_charges.py
new file mode 100644
index 0000000..bfec84d
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/ebay_collected_charges.py
@@ -0,0 +1,124 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.charge import Charge
+ from ..models.amount import Amount
+
+
+
+
+
+T = TypeVar("T", bound="EbayCollectedCharges")
+
+
+
+@_attrs_define
+class EbayCollectedCharges:
+ """ This type contains the breakdown of costs that are collected by eBay from the buyer.
+
+ Attributes:
+ ebay_shipping (Union[Unset, Amount]): This type defines the monetary value of an amount. It can provide the
+ amount in both the currency used on the eBay site where an item is being offered and the conversion of that
+ value into another currency, if applicable.
+ charges (Union[Unset, list['Charge']]): This array shows any charges that eBay collects from the
+ buyer.
Note: Currently, the only supported charge type is
+ BUYER_PROTECTION.
+ """
+
+ ebay_shipping: Union[Unset, 'Amount'] = UNSET
+ charges: Union[Unset, list['Charge']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.charge import Charge
+ from ..models.amount import Amount
+ ebay_shipping: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.ebay_shipping, Unset):
+ ebay_shipping = self.ebay_shipping.to_dict()
+
+ charges: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.charges, Unset):
+ charges = []
+ for charges_item_data in self.charges:
+ charges_item = charges_item_data.to_dict()
+ charges.append(charges_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if ebay_shipping is not UNSET:
+ field_dict["ebayShipping"] = ebay_shipping
+ if charges is not UNSET:
+ field_dict["charges"] = charges
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.charge import Charge
+ from ..models.amount import Amount
+ d = dict(src_dict)
+ _ebay_shipping = d.pop("ebayShipping", UNSET)
+ ebay_shipping: Union[Unset, Amount]
+ if isinstance(_ebay_shipping, Unset):
+ ebay_shipping = UNSET
+ else:
+ ebay_shipping = Amount.from_dict(_ebay_shipping)
+
+
+
+
+ charges = []
+ _charges = d.pop("charges", UNSET)
+ for charges_item_data in (_charges or []):
+ charges_item = Charge.from_dict(charges_item_data)
+
+
+
+ charges.append(charges_item)
+
+
+ ebay_collected_charges = cls(
+ ebay_shipping=ebay_shipping,
+ charges=charges,
+ )
+
+
+ ebay_collected_charges.additional_properties = d
+ return ebay_collected_charges
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/ebay_fulfillment_program.py b/ebay_client/generated/fulfillment/models/ebay_fulfillment_program.py
new file mode 100644
index 0000000..c6681b5
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/ebay_fulfillment_program.py
@@ -0,0 +1,80 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="EbayFulfillmentProgram")
+
+
+
+@_attrs_define
+class EbayFulfillmentProgram:
+ """ This type is used to provide details about an order line item being fulfilled by eBay or an eBay fulfillment
+ partner.
+
+ Attributes:
+ fulfilled_by (Union[Unset, str]): The value returned in this field indicates the party that is handling
+ fulfillment of the order line item.
Valid value: EBAY
+ """
+
+ fulfilled_by: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ fulfilled_by = self.fulfilled_by
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if fulfilled_by is not UNSET:
+ field_dict["fulfilledBy"] = fulfilled_by
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ fulfilled_by = d.pop("fulfilledBy", UNSET)
+
+ ebay_fulfillment_program = cls(
+ fulfilled_by=fulfilled_by,
+ )
+
+
+ ebay_fulfillment_program.additional_properties = d
+ return ebay_fulfillment_program
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/ebay_international_shipping.py b/ebay_client/generated/fulfillment/models/ebay_international_shipping.py
new file mode 100644
index 0000000..334b009
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/ebay_international_shipping.py
@@ -0,0 +1,79 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="EbayInternationalShipping")
+
+
+
+@_attrs_define
+class EbayInternationalShipping:
+ """ This type is used to provide details about an order line item being managed through eBay International Shipping.
+
+ Attributes:
+ returns_managed_by (Union[Unset, str]): The value returned in this field indicates the party that is responsible
+ for managing returns of the order line item.
Valid value: EBAY
+ """
+
+ returns_managed_by: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ returns_managed_by = self.returns_managed_by
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if returns_managed_by is not UNSET:
+ field_dict["returnsManagedBy"] = returns_managed_by
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ returns_managed_by = d.pop("returnsManagedBy", UNSET)
+
+ ebay_international_shipping = cls(
+ returns_managed_by=returns_managed_by,
+ )
+
+
+ ebay_international_shipping.additional_properties = d
+ return ebay_international_shipping
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/ebay_shipping.py b/ebay_client/generated/fulfillment/models/ebay_shipping.py
new file mode 100644
index 0000000..e69de0c
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/ebay_shipping.py
@@ -0,0 +1,80 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="EbayShipping")
+
+
+
+@_attrs_define
+class EbayShipping:
+ """ This type contains information about the management of the shipping for the order.
+
+ Attributes:
+ shipping_label_provided_by (Union[Unset, str]): This field contains the shipping label provider. If
+ EBAY, this order is managed by eBay shipping and a free shipping label by eBay is downloadable by
+ the seller via the eBay website.
+ """
+
+ shipping_label_provided_by: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ shipping_label_provided_by = self.shipping_label_provided_by
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if shipping_label_provided_by is not UNSET:
+ field_dict["shippingLabelProvidedBy"] = shipping_label_provided_by
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ shipping_label_provided_by = d.pop("shippingLabelProvidedBy", UNSET)
+
+ ebay_shipping = cls(
+ shipping_label_provided_by=shipping_label_provided_by,
+ )
+
+
+ ebay_shipping.additional_properties = d
+ return ebay_shipping
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/ebay_tax_reference.py b/ebay_client/generated/fulfillment/models/ebay_tax_reference.py
new file mode 100644
index 0000000..7525375
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/ebay_tax_reference.py
@@ -0,0 +1,103 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="EbayTaxReference")
+
+
+
+@_attrs_define
+class EbayTaxReference:
+ """ This type describes the VAT tax details. The eBay VAT tax type and the eBay VAT identifier number will be returned
+ if a VAT tax is applicable for the order.
+
+ Attributes:
+ name (Union[Unset, str]): This field value is returned to indicate the VAT tax type, which will vary by
+ country/region. This string value will be one of the following:ABN: if this string is
+ returned, the ID in the value field is an Australia tax IDDDG: if this
+ string is returned, it indicates that tax has been collected and remitted for Digitally Delivered Goods
+ (DDG)IOSS: if this string is returned, the ID in the value field is an
+ eBay EU or UK IOSS numberIRD: if this string is returned, the ID in the
+ value field is an eBay New Zealand tax IDSST: if this string is returned,
+ the ID in the value field is an eBay Malaysia taxNumberOSS: if this string is
+ returned, the ID in the value field is an eBay Germany VAT IDVOEC: if
+ this string is returned, the ID in the value field is an eBay Norway tax ID
+ value (Union[Unset, str]): The value returned in this field is the VAT identifier number (VATIN), which will
+ vary by country/region. This field will be returned if VAT tax is applicable for the order. The
+ name field indicates the VAT tax type, which will vary by country/region:
+ - ABN: eBay AU tax ID
- IOSS: eBay EU IOSS
+ number / eBay UK IOSS number
- IRD: eBay NZ tax
+ ID
- OSS: eBay DE VAT ID
- SST: eBay MY
+ taxNumber
- VOEC: eBay NO number
+ """
+
+ name: Union[Unset, str] = UNSET
+ value: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ name = self.name
+
+ value = self.value
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if name is not UNSET:
+ field_dict["name"] = name
+ if value is not UNSET:
+ field_dict["value"] = value
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ name = d.pop("name", UNSET)
+
+ value = d.pop("value", UNSET)
+
+ ebay_tax_reference = cls(
+ name=name,
+ value=value,
+ )
+
+
+ ebay_tax_reference.additional_properties = d
+ return ebay_tax_reference
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/ebay_vault_program.py b/ebay_client/generated/fulfillment/models/ebay_vault_program.py
new file mode 100644
index 0000000..d3aa7f0
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/ebay_vault_program.py
@@ -0,0 +1,82 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="EbayVaultProgram")
+
+
+
+@_attrs_define
+class EbayVaultProgram:
+ """
+ Attributes:
+ fulfillment_type (Union[Unset, str]): This field specifies how an eBay vault order will be fulfilled. Supported
+ options are:- Seller to Vault: the order will be shipped by the seller to an
+ authenticator.
- Vault to Vault: the order will be shipped from an eBay vault to the buyer's
+ vault.
- Vault to Buyer: the order will be shipped from an eBay vault to the buyer's shipping
+ address.
For implementation help, refer to eBay API documentation
+ """
+
+ fulfillment_type: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ fulfillment_type = self.fulfillment_type
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if fulfillment_type is not UNSET:
+ field_dict["fulfillmentType"] = fulfillment_type
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ fulfillment_type = d.pop("fulfillmentType", UNSET)
+
+ ebay_vault_program = cls(
+ fulfillment_type=fulfillment_type,
+ )
+
+
+ ebay_vault_program.additional_properties = d
+ return ebay_vault_program
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/error.py b/ebay_client/generated/fulfillment/models/error.py
new file mode 100644
index 0000000..f09a363
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/error.py
@@ -0,0 +1,194 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.error_parameter import ErrorParameter
+
+
+
+
+
+T = TypeVar("T", bound="Error")
+
+
+
+@_attrs_define
+class Error:
+ """ This type contains a error or warning related to a call request.
+
+ Attributes:
+ category (Union[Unset, str]): The context or source of this error or warning.
+ domain (Union[Unset, str]): The name of the domain containing the service or application. For example,
+ sell is a domain.
+ error_id (Union[Unset, int]): A positive integer that uniquely identifies the specific error condition that
+ occurred. Your application can use these values as error code identifiers in your customized error-handling
+ algorithms.
+ input_ref_ids (Union[Unset, list[str]]): A list of one or more specific request elements (if any) associated
+ with the error or warning. The format of these strings depends on the request payload format. For JSON, use
+ JSONPath notation.
+ long_message (Union[Unset, str]): An expanded version of the message field.
Maximum
+ length: 200 characters
+ message (Union[Unset, str]): A message about the error or warning which is device agnostic and readable by end
+ users and application developers. It explains what the error or warning is, and how to fix it (in a general
+ sense). If applicable, the value is localized to the end user's requested locale.
Maximum length:
+ 50 characters
+ output_ref_ids (Union[Unset, list[str]]): A list of one or more specific response elements (if any) associated
+ with the error or warning. The format of these strings depends on the request payload format. For JSON, use
+ JSONPath notation.
+ parameters (Union[Unset, list['ErrorParameter']]): Contains a list of name-value pairs that provide additional
+ information concerning this error or warning. Each item in the list is an input parameter that contributed to
+ the error or warning condition.
+ subdomain (Union[Unset, str]): The name of the domain's subsystem or subdivision. For example,
+ fulfillment is a subdomain in the sell domain.
+ """
+
+ category: Union[Unset, str] = UNSET
+ domain: Union[Unset, str] = UNSET
+ error_id: Union[Unset, int] = UNSET
+ input_ref_ids: Union[Unset, list[str]] = UNSET
+ long_message: Union[Unset, str] = UNSET
+ message: Union[Unset, str] = UNSET
+ output_ref_ids: Union[Unset, list[str]] = UNSET
+ parameters: Union[Unset, list['ErrorParameter']] = UNSET
+ subdomain: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.error_parameter import ErrorParameter
+ category = self.category
+
+ domain = self.domain
+
+ error_id = self.error_id
+
+ input_ref_ids: Union[Unset, list[str]] = UNSET
+ if not isinstance(self.input_ref_ids, Unset):
+ input_ref_ids = self.input_ref_ids
+
+
+
+ long_message = self.long_message
+
+ message = self.message
+
+ output_ref_ids: Union[Unset, list[str]] = UNSET
+ if not isinstance(self.output_ref_ids, Unset):
+ output_ref_ids = self.output_ref_ids
+
+
+
+ parameters: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.parameters, Unset):
+ parameters = []
+ for parameters_item_data in self.parameters:
+ parameters_item = parameters_item_data.to_dict()
+ parameters.append(parameters_item)
+
+
+
+ subdomain = self.subdomain
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if category is not UNSET:
+ field_dict["category"] = category
+ if domain is not UNSET:
+ field_dict["domain"] = domain
+ if error_id is not UNSET:
+ field_dict["errorId"] = error_id
+ if input_ref_ids is not UNSET:
+ field_dict["inputRefIds"] = input_ref_ids
+ if long_message is not UNSET:
+ field_dict["longMessage"] = long_message
+ if message is not UNSET:
+ field_dict["message"] = message
+ if output_ref_ids is not UNSET:
+ field_dict["outputRefIds"] = output_ref_ids
+ if parameters is not UNSET:
+ field_dict["parameters"] = parameters
+ if subdomain is not UNSET:
+ field_dict["subdomain"] = subdomain
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.error_parameter import ErrorParameter
+ d = dict(src_dict)
+ category = d.pop("category", UNSET)
+
+ domain = d.pop("domain", UNSET)
+
+ error_id = d.pop("errorId", UNSET)
+
+ input_ref_ids = cast(list[str], d.pop("inputRefIds", UNSET))
+
+
+ long_message = d.pop("longMessage", UNSET)
+
+ message = d.pop("message", UNSET)
+
+ output_ref_ids = cast(list[str], d.pop("outputRefIds", UNSET))
+
+
+ parameters = []
+ _parameters = d.pop("parameters", UNSET)
+ for parameters_item_data in (_parameters or []):
+ parameters_item = ErrorParameter.from_dict(parameters_item_data)
+
+
+
+ parameters.append(parameters_item)
+
+
+ subdomain = d.pop("subdomain", UNSET)
+
+ error = cls(
+ category=category,
+ domain=domain,
+ error_id=error_id,
+ input_ref_ids=input_ref_ids,
+ long_message=long_message,
+ message=message,
+ output_ref_ids=output_ref_ids,
+ parameters=parameters,
+ subdomain=subdomain,
+ )
+
+
+ error.additional_properties = d
+ return error
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/error_parameter.py b/ebay_client/generated/fulfillment/models/error_parameter.py
new file mode 100644
index 0000000..bdfa507
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/error_parameter.py
@@ -0,0 +1,89 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="ErrorParameter")
+
+
+
+@_attrs_define
+class ErrorParameter:
+ """ This type contains the name and value of an input parameter that contributed to a specific error or warning
+ condition.
+
+ Attributes:
+ name (Union[Unset, str]): This is the name of input field that caused an issue with the call request.
+ value (Union[Unset, str]): This is the actual value that was passed in for the element specified in the
+ name field.
+ """
+
+ name: Union[Unset, str] = UNSET
+ value: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ name = self.name
+
+ value = self.value
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if name is not UNSET:
+ field_dict["name"] = name
+ if value is not UNSET:
+ field_dict["value"] = value
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ name = d.pop("name", UNSET)
+
+ value = d.pop("value", UNSET)
+
+ error_parameter = cls(
+ name=name,
+ value=value,
+ )
+
+
+ error_parameter.additional_properties = d
+ return error_parameter
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/evidence_request.py b/ebay_client/generated/fulfillment/models/evidence_request.py
new file mode 100644
index 0000000..8175592
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/evidence_request.py
@@ -0,0 +1,149 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.order_line_items import OrderLineItems
+
+
+
+
+
+T = TypeVar("T", bound="EvidenceRequest")
+
+
+
+@_attrs_define
+class EvidenceRequest:
+ """ This type is used by the evidenceRequests array that is returned in the
+ getPaymentDispute response if one or more evidential documents are being requested to help resolve
+ the payment dispute.
+
+ Attributes:
+ evidence_id (Union[Unset, str]): Unique identifier of the evidential file set. Potentially, each evidential file
+ set can have more than one file, that is why there is this file set identifier, and then an identifier for each
+ file within this file set.
+ evidence_type (Union[Unset, str]): This enumeration value shows the type of evidential document provided. For
+ implementation help, refer to eBay API documentation
+ line_items (Union[Unset, list['OrderLineItems']]): This array shows one or more order line items associated with
+ the evidential document that has been provided.
+ request_date (Union[Unset, str]): The timestamp in this field shows the date/time when eBay requested the
+ evidential document from the seller in response to a payment dispute.
The timestamps returned here use
+ the ISO-8601 24-hour date and time format, and the time zone used is Universal Coordinated Time (UTC), also
+ known as Greenwich Mean Time (GMT), or Zulu. The ISO-8601 format looks like this: yyyy-MM-
+ ddThh:mm.ss.sssZ. An example would be 2019-08-04T19:09:02.768Z.
+ respond_by_date (Union[Unset, str]): The timestamp in this field shows the date/time when the seller is expected
+ to provide a requested evidential document to eBay.
The timestamps returned here use the ISO-8601
+ 24-hour date and time format, and the time zone used is Universal Coordinated Time (UTC), also known as
+ Greenwich Mean Time (GMT), or Zulu. The ISO-8601 format looks like this: yyyy-MM-ddThh:mm.ss.sssZ. An
+ example would be 2019-08-04T19:09:02.768Z.
+ """
+
+ evidence_id: Union[Unset, str] = UNSET
+ evidence_type: Union[Unset, str] = UNSET
+ line_items: Union[Unset, list['OrderLineItems']] = UNSET
+ request_date: Union[Unset, str] = UNSET
+ respond_by_date: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.order_line_items import OrderLineItems
+ evidence_id = self.evidence_id
+
+ evidence_type = self.evidence_type
+
+ line_items: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.line_items, Unset):
+ line_items = []
+ for line_items_item_data in self.line_items:
+ line_items_item = line_items_item_data.to_dict()
+ line_items.append(line_items_item)
+
+
+
+ request_date = self.request_date
+
+ respond_by_date = self.respond_by_date
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if evidence_id is not UNSET:
+ field_dict["evidenceId"] = evidence_id
+ if evidence_type is not UNSET:
+ field_dict["evidenceType"] = evidence_type
+ if line_items is not UNSET:
+ field_dict["lineItems"] = line_items
+ if request_date is not UNSET:
+ field_dict["requestDate"] = request_date
+ if respond_by_date is not UNSET:
+ field_dict["respondByDate"] = respond_by_date
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.order_line_items import OrderLineItems
+ d = dict(src_dict)
+ evidence_id = d.pop("evidenceId", UNSET)
+
+ evidence_type = d.pop("evidenceType", UNSET)
+
+ line_items = []
+ _line_items = d.pop("lineItems", UNSET)
+ for line_items_item_data in (_line_items or []):
+ line_items_item = OrderLineItems.from_dict(line_items_item_data)
+
+
+
+ line_items.append(line_items_item)
+
+
+ request_date = d.pop("requestDate", UNSET)
+
+ respond_by_date = d.pop("respondByDate", UNSET)
+
+ evidence_request = cls(
+ evidence_id=evidence_id,
+ evidence_type=evidence_type,
+ line_items=line_items,
+ request_date=request_date,
+ respond_by_date=respond_by_date,
+ )
+
+
+ evidence_request.additional_properties = d
+ return evidence_request
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/extended_contact.py b/ebay_client/generated/fulfillment/models/extended_contact.py
new file mode 100644
index 0000000..ee55671
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/extended_contact.py
@@ -0,0 +1,149 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.phone_number import PhoneNumber
+ from ..models.address import Address
+
+
+
+
+
+T = TypeVar("T", bound="ExtendedContact")
+
+
+
+@_attrs_define
+class ExtendedContact:
+ """ This type contains shipping and contact information for a buyer or an eBay shipping partner.
+
+ Attributes:
+ company_name (Union[Unset, str]): The company name associated with the buyer or eBay shipping partner. This
+ field is only returned if defined/applicable to the buyer or eBay shipping partner.
+ contact_address (Union[Unset, Address]): This type contains the details of a geographical address.
+ email (Union[Unset, str]): This field contains the email address of the buyer. This address will be returned for
+ up to 14 days from order creation. If an order is more than 14 days old, no address is returned.
Note: If returned, this field contains the email address of the buyer, even
+ for Global Shipping Program shipments.
The email will not be returned for any order that is more
+ than 90 days old.
+ full_name (Union[Unset, str]): The full name of the buyer or eBay shipping partner.
Note: The fullName will not be returned for any order that is more
+ than 90 days old.
+ primary_phone (Union[Unset, PhoneNumber]): This type contains a string field representing a telephone number.
+ """
+
+ company_name: Union[Unset, str] = UNSET
+ contact_address: Union[Unset, 'Address'] = UNSET
+ email: Union[Unset, str] = UNSET
+ full_name: Union[Unset, str] = UNSET
+ primary_phone: Union[Unset, 'PhoneNumber'] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.phone_number import PhoneNumber
+ from ..models.address import Address
+ company_name = self.company_name
+
+ contact_address: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.contact_address, Unset):
+ contact_address = self.contact_address.to_dict()
+
+ email = self.email
+
+ full_name = self.full_name
+
+ primary_phone: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.primary_phone, Unset):
+ primary_phone = self.primary_phone.to_dict()
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if company_name is not UNSET:
+ field_dict["companyName"] = company_name
+ if contact_address is not UNSET:
+ field_dict["contactAddress"] = contact_address
+ if email is not UNSET:
+ field_dict["email"] = email
+ if full_name is not UNSET:
+ field_dict["fullName"] = full_name
+ if primary_phone is not UNSET:
+ field_dict["primaryPhone"] = primary_phone
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.phone_number import PhoneNumber
+ from ..models.address import Address
+ d = dict(src_dict)
+ company_name = d.pop("companyName", UNSET)
+
+ _contact_address = d.pop("contactAddress", UNSET)
+ contact_address: Union[Unset, Address]
+ if isinstance(_contact_address, Unset):
+ contact_address = UNSET
+ else:
+ contact_address = Address.from_dict(_contact_address)
+
+
+
+
+ email = d.pop("email", UNSET)
+
+ full_name = d.pop("fullName", UNSET)
+
+ _primary_phone = d.pop("primaryPhone", UNSET)
+ primary_phone: Union[Unset, PhoneNumber]
+ if isinstance(_primary_phone, Unset):
+ primary_phone = UNSET
+ else:
+ primary_phone = PhoneNumber.from_dict(_primary_phone)
+
+
+
+
+ extended_contact = cls(
+ company_name=company_name,
+ contact_address=contact_address,
+ email=email,
+ full_name=full_name,
+ primary_phone=primary_phone,
+ )
+
+
+ extended_contact.additional_properties = d
+ return extended_contact
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/file_evidence.py b/ebay_client/generated/fulfillment/models/file_evidence.py
new file mode 100644
index 0000000..321a044
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/file_evidence.py
@@ -0,0 +1,84 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="FileEvidence")
+
+
+
+@_attrs_define
+class FileEvidence:
+ """ This type is used to store the unique identifier of an evidence file. Evidence files are used by seller to contest a
+ payment dispute.
+
+ Attributes:
+ file_id (Union[Unset, str]): This field is used to identify the evidence file to be uploaded to the evidence
+ set.
This file is created with the uploadEvidenceFile method and can be retrieved using the getPaymentDisputes method.
+ """
+
+ file_id: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ file_id = self.file_id
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if file_id is not UNSET:
+ field_dict["fileId"] = file_id
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ file_id = d.pop("fileId", UNSET)
+
+ file_evidence = cls(
+ file_id=file_id,
+ )
+
+
+ file_evidence.additional_properties = d
+ return file_evidence
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/file_info.py b/ebay_client/generated/fulfillment/models/file_info.py
new file mode 100644
index 0000000..f57890f
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/file_info.py
@@ -0,0 +1,111 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="FileInfo")
+
+
+
+@_attrs_define
+class FileInfo:
+ """ This type is used by the files array, which shows the name, ID, file type, and upload date for each
+ provided evidential file.
+
+ Attributes:
+ file_id (Union[Unset, str]): The unique identifier of the evidence file.
+ file_type (Union[Unset, str]): The type of file uploaded. Supported file extensions are .JPEG, .JPG, and .PNG.,
+ and maximum file size allowed is 1.5 MB.
+ name (Union[Unset, str]): The seller-provided name of the evidence file.
+ uploaded_date (Union[Unset, str]): The timestamp in this field shows the date/time when the seller uploaded the
+ evidential document to eBay.
The timestamps returned here use the ISO-8601 24-hour date and time format,
+ and the time zone used is Universal Coordinated Time (UTC), also known as Greenwich Mean Time (GMT), or Zulu.
+ The ISO-8601 format looks like this: yyyy-MM-ddThh:mm.ss.sssZ. An example would be
+ 2019-08-04T19:09:02.768Z.
+ """
+
+ file_id: Union[Unset, str] = UNSET
+ file_type: Union[Unset, str] = UNSET
+ name: Union[Unset, str] = UNSET
+ uploaded_date: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ file_id = self.file_id
+
+ file_type = self.file_type
+
+ name = self.name
+
+ uploaded_date = self.uploaded_date
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if file_id is not UNSET:
+ field_dict["fileId"] = file_id
+ if file_type is not UNSET:
+ field_dict["fileType"] = file_type
+ if name is not UNSET:
+ field_dict["name"] = name
+ if uploaded_date is not UNSET:
+ field_dict["uploadedDate"] = uploaded_date
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ file_id = d.pop("fileId", UNSET)
+
+ file_type = d.pop("fileType", UNSET)
+
+ name = d.pop("name", UNSET)
+
+ uploaded_date = d.pop("uploadedDate", UNSET)
+
+ file_info = cls(
+ file_id=file_id,
+ file_type=file_type,
+ name=name,
+ uploaded_date=uploaded_date,
+ )
+
+
+ file_info.additional_properties = d
+ return file_info
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/fulfillment_start_instruction.py b/ebay_client/generated/fulfillment/models/fulfillment_start_instruction.py
new file mode 100644
index 0000000..d4c642a
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/fulfillment_start_instruction.py
@@ -0,0 +1,220 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.appointment_details import AppointmentDetails
+ from ..models.address import Address
+ from ..models.pickup_step import PickupStep
+ from ..models.shipping_step import ShippingStep
+
+
+
+
+
+T = TypeVar("T", bound="FulfillmentStartInstruction")
+
+
+
+@_attrs_define
+class FulfillmentStartInstruction:
+ """ This type contains a set of specifications for processing a fulfillment of an order, including the type of
+ fulfillment, shipping carrier and service, addressing details, and estimated delivery window. These instructions are
+ derived from the buyer's and seller's eBay account preferences, the listing parameters, and the buyer's checkout
+ selections. The seller can use them as a starting point for packaging, addressing, and shipping the order.
+
+ Attributes:
+ appointment (Union[Unset, AppointmentDetails]): This type contains information used by the installation provider
+ concerning appointment details selected by the buyer
+ ebay_supported_fulfillment (Union[Unset, bool]): This field is only returned if its value is true
+ and indicates that the fulfillment will be shipped via eBay's Global Shipping Program, eBay International
+ Shipping, or the Authenticity Guarantee service program.
For more information, see the Global Shipping Program help topic.
+ final_destination_address (Union[Unset, Address]): This type contains the details of a geographical address.
+ fulfillment_instructions_type (Union[Unset, str]): The enumeration value returned in this field indicates the
+ method of fulfillment that will be used to deliver this set of line items (this package) to the buyer. This
+ field will have a value of SHIP_TO if the ebaySupportedFulfillment field is returned with a
+ value of true. See the FulfillmentInstructionsType definition for more information
+ about different fulfillment types. For implementation help, refer to eBay API documentation
+ max_estimated_delivery_date (Union[Unset, str]): This is the estimated latest date that the fulfillment will be
+ completed. This timestamp is in ISO 8601 format, which uses the 24-hour Universal Coordinated Time (UTC) clock.
+ This field is not returned ifthe value of the fulfillmentInstructionsType field is DIGITAL
+ or PREPARE_FOR_PICKUP.
Format: [YYYY]-[MM]-[DD]T[hh]:[mm]:[ss].[sss]Z
+
Example: 2015-08-04T19:09:02.768Z
+ min_estimated_delivery_date (Union[Unset, str]): This is the estimated earliest date that the fulfillment will
+ be completed. This timestamp is in ISO 8601 format, which uses the 24-hour Universal Coordinated Time (UTC)
+ clock. This field is not returned if the value of the fulfillmentInstructionsType field is
+ DIGITAL or PREPARE_FOR_PICKUP.
Format:
+ [YYYY]-[MM]-[DD]T[hh]:[mm]:[ss].[sss]Z
Example: 2015-08-04T19:09:02.768Z
+ pickup_step (Union[Unset, PickupStep]): This type is used to indicate the merchant's store where the buyer will
+ pickup their In-Store Pickup order. The pickupStep container is only returned for In-Store Pickup orders.
+ The In-Store Pickup feature is supported in the US, Canada, UK, Germany, and Australia marketplaces.
+ shipping_step (Union[Unset, ShippingStep]): This type contains shipping information for a fulfillment, including
+ the shipping carrier, the shipping service option, the shipment destination, and the Global Shipping Program
+ reference ID.
+ """
+
+ appointment: Union[Unset, 'AppointmentDetails'] = UNSET
+ ebay_supported_fulfillment: Union[Unset, bool] = UNSET
+ final_destination_address: Union[Unset, 'Address'] = UNSET
+ fulfillment_instructions_type: Union[Unset, str] = UNSET
+ max_estimated_delivery_date: Union[Unset, str] = UNSET
+ min_estimated_delivery_date: Union[Unset, str] = UNSET
+ pickup_step: Union[Unset, 'PickupStep'] = UNSET
+ shipping_step: Union[Unset, 'ShippingStep'] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.appointment_details import AppointmentDetails
+ from ..models.address import Address
+ from ..models.pickup_step import PickupStep
+ from ..models.shipping_step import ShippingStep
+ appointment: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.appointment, Unset):
+ appointment = self.appointment.to_dict()
+
+ ebay_supported_fulfillment = self.ebay_supported_fulfillment
+
+ final_destination_address: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.final_destination_address, Unset):
+ final_destination_address = self.final_destination_address.to_dict()
+
+ fulfillment_instructions_type = self.fulfillment_instructions_type
+
+ max_estimated_delivery_date = self.max_estimated_delivery_date
+
+ min_estimated_delivery_date = self.min_estimated_delivery_date
+
+ pickup_step: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.pickup_step, Unset):
+ pickup_step = self.pickup_step.to_dict()
+
+ shipping_step: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.shipping_step, Unset):
+ shipping_step = self.shipping_step.to_dict()
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if appointment is not UNSET:
+ field_dict["appointment"] = appointment
+ if ebay_supported_fulfillment is not UNSET:
+ field_dict["ebaySupportedFulfillment"] = ebay_supported_fulfillment
+ if final_destination_address is not UNSET:
+ field_dict["finalDestinationAddress"] = final_destination_address
+ if fulfillment_instructions_type is not UNSET:
+ field_dict["fulfillmentInstructionsType"] = fulfillment_instructions_type
+ if max_estimated_delivery_date is not UNSET:
+ field_dict["maxEstimatedDeliveryDate"] = max_estimated_delivery_date
+ if min_estimated_delivery_date is not UNSET:
+ field_dict["minEstimatedDeliveryDate"] = min_estimated_delivery_date
+ if pickup_step is not UNSET:
+ field_dict["pickupStep"] = pickup_step
+ if shipping_step is not UNSET:
+ field_dict["shippingStep"] = shipping_step
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.appointment_details import AppointmentDetails
+ from ..models.address import Address
+ from ..models.pickup_step import PickupStep
+ from ..models.shipping_step import ShippingStep
+ d = dict(src_dict)
+ _appointment = d.pop("appointment", UNSET)
+ appointment: Union[Unset, AppointmentDetails]
+ if isinstance(_appointment, Unset):
+ appointment = UNSET
+ else:
+ appointment = AppointmentDetails.from_dict(_appointment)
+
+
+
+
+ ebay_supported_fulfillment = d.pop("ebaySupportedFulfillment", UNSET)
+
+ _final_destination_address = d.pop("finalDestinationAddress", UNSET)
+ final_destination_address: Union[Unset, Address]
+ if isinstance(_final_destination_address, Unset):
+ final_destination_address = UNSET
+ else:
+ final_destination_address = Address.from_dict(_final_destination_address)
+
+
+
+
+ fulfillment_instructions_type = d.pop("fulfillmentInstructionsType", UNSET)
+
+ max_estimated_delivery_date = d.pop("maxEstimatedDeliveryDate", UNSET)
+
+ min_estimated_delivery_date = d.pop("minEstimatedDeliveryDate", UNSET)
+
+ _pickup_step = d.pop("pickupStep", UNSET)
+ pickup_step: Union[Unset, PickupStep]
+ if isinstance(_pickup_step, Unset):
+ pickup_step = UNSET
+ else:
+ pickup_step = PickupStep.from_dict(_pickup_step)
+
+
+
+
+ _shipping_step = d.pop("shippingStep", UNSET)
+ shipping_step: Union[Unset, ShippingStep]
+ if isinstance(_shipping_step, Unset):
+ shipping_step = UNSET
+ else:
+ shipping_step = ShippingStep.from_dict(_shipping_step)
+
+
+
+
+ fulfillment_start_instruction = cls(
+ appointment=appointment,
+ ebay_supported_fulfillment=ebay_supported_fulfillment,
+ final_destination_address=final_destination_address,
+ fulfillment_instructions_type=fulfillment_instructions_type,
+ max_estimated_delivery_date=max_estimated_delivery_date,
+ min_estimated_delivery_date=min_estimated_delivery_date,
+ pickup_step=pickup_step,
+ shipping_step=shipping_step,
+ )
+
+
+ fulfillment_start_instruction.additional_properties = d
+ return fulfillment_start_instruction
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/gift_details.py b/ebay_client/generated/fulfillment/models/gift_details.py
new file mode 100644
index 0000000..3af5155
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/gift_details.py
@@ -0,0 +1,105 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="GiftDetails")
+
+
+
+@_attrs_define
+class GiftDetails:
+ """ This type contains information about a digital gift card line item that was purchased as a gift and sent to the
+ recipient by email.
Note: GiftDetails will not be returned
+ for any order that is more than 90 days old.
+
+ Attributes:
+ message (Union[Unset, str]): This field contains the gift message from the buyer to the gift recipient. This
+ field is only returned if the buyer of the gift included a message for the gift.
Note: The message will not be returned for any order that is more than
+ 90 days old.
+ recipient_email (Union[Unset, str]): The email address of the gift recipient. The seller will send the digital
+ gift card to this email address.
Note: The recipientEmail
+ will not be returned for any order that is more than 90 days old.
+ sender_name (Union[Unset, str]): The name of the buyer, which will appear on the email that is sent to the gift
+ recipient.
Note: The senderName will not be returned for
+ any order that is more than 90 days old.
+ """
+
+ message: Union[Unset, str] = UNSET
+ recipient_email: Union[Unset, str] = UNSET
+ sender_name: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ message = self.message
+
+ recipient_email = self.recipient_email
+
+ sender_name = self.sender_name
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if message is not UNSET:
+ field_dict["message"] = message
+ if recipient_email is not UNSET:
+ field_dict["recipientEmail"] = recipient_email
+ if sender_name is not UNSET:
+ field_dict["senderName"] = sender_name
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ message = d.pop("message", UNSET)
+
+ recipient_email = d.pop("recipientEmail", UNSET)
+
+ sender_name = d.pop("senderName", UNSET)
+
+ gift_details = cls(
+ message=message,
+ recipient_email=recipient_email,
+ sender_name=sender_name,
+ )
+
+
+ gift_details.additional_properties = d
+ return gift_details
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/info_from_buyer.py b/ebay_client/generated/fulfillment/models/info_from_buyer.py
new file mode 100644
index 0000000..eebba2f
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/info_from_buyer.py
@@ -0,0 +1,121 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.tracking_info import TrackingInfo
+
+
+
+
+
+T = TypeVar("T", bound="InfoFromBuyer")
+
+
+
+@_attrs_define
+class InfoFromBuyer:
+ """ This container is returned if the buyer is returning one or more line items in an order that is associated with the
+ payment dispute, and that buyer has provided return shipping tracking information and/or a note about the return.
+
+ Attributes:
+ content_on_hold (Union[Unset, bool]): When the value of this field is true it indicates that the
+ buyer's note regarding the payment dispute (i.e., the buyerProvided.note field,) is on hold. When this is
+ the case, the buyerProvided.note field will not be returned.
When the value of this field is
+ false, it is not returned.
+ note (Union[Unset, str]): This field shows any note that was left by the buyer in regard to the dispute.
+ return_shipment_tracking (Union[Unset, list['TrackingInfo']]): This array shows shipment tracking information
+ for one or more shipping packages being returned to the buyer after a payment dispute.
+ """
+
+ content_on_hold: Union[Unset, bool] = UNSET
+ note: Union[Unset, str] = UNSET
+ return_shipment_tracking: Union[Unset, list['TrackingInfo']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.tracking_info import TrackingInfo
+ content_on_hold = self.content_on_hold
+
+ note = self.note
+
+ return_shipment_tracking: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.return_shipment_tracking, Unset):
+ return_shipment_tracking = []
+ for return_shipment_tracking_item_data in self.return_shipment_tracking:
+ return_shipment_tracking_item = return_shipment_tracking_item_data.to_dict()
+ return_shipment_tracking.append(return_shipment_tracking_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if content_on_hold is not UNSET:
+ field_dict["contentOnHold"] = content_on_hold
+ if note is not UNSET:
+ field_dict["note"] = note
+ if return_shipment_tracking is not UNSET:
+ field_dict["returnShipmentTracking"] = return_shipment_tracking
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.tracking_info import TrackingInfo
+ d = dict(src_dict)
+ content_on_hold = d.pop("contentOnHold", UNSET)
+
+ note = d.pop("note", UNSET)
+
+ return_shipment_tracking = []
+ _return_shipment_tracking = d.pop("returnShipmentTracking", UNSET)
+ for return_shipment_tracking_item_data in (_return_shipment_tracking or []):
+ return_shipment_tracking_item = TrackingInfo.from_dict(return_shipment_tracking_item_data)
+
+
+
+ return_shipment_tracking.append(return_shipment_tracking_item)
+
+
+ info_from_buyer = cls(
+ content_on_hold=content_on_hold,
+ note=note,
+ return_shipment_tracking=return_shipment_tracking,
+ )
+
+
+ info_from_buyer.additional_properties = d
+ return info_from_buyer
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/issue_refund_request.py b/ebay_client/generated/fulfillment/models/issue_refund_request.py
new file mode 100644
index 0000000..df3cd2a
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/issue_refund_request.py
@@ -0,0 +1,152 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.simple_amount import SimpleAmount
+ from ..models.refund_item import RefundItem
+
+
+
+
+
+T = TypeVar("T", bound="IssueRefundRequest")
+
+
+
+@_attrs_define
+class IssueRefundRequest:
+ """ The base type used by the request payload of the issueRefund method.
+
+ Attributes:
+ reason_for_refund (Union[Unset, str]): The enumeration value passed into this field indicates the reason for the
+ refund. One of the defined enumeration values in the ReasonForRefundEnum type must be used.
This
+ field is required, and it is highly recommended that sellers use the correct refund reason, especially in the
+ case of a buyer-requested cancellation or 'buyer remorse' return to indicate that there was nothing wrong with
+ the item(s) or with the shipment of the order.
Note: If issuing
+ refunds for more than one order line item, keep in mind that the refund reason must be the same for each of the
+ order line items. If the refund reason is different for one or more order line items in an order, the seller
+ would need to make separate issueRefund calls, one for each refund reason. For implementation
+ help, refer to eBay
+ API documentation
+ comment (Union[Unset, str]): This free-text field allows the seller to clarify why the refund is being issued to
+ the buyer.
Max Length: 100
+ refund_items (Union[Unset, list['RefundItem']]): The refundItems array is only required if the seller is
+ issuing a refund for one or more individual order line items in a multiple line item order. Otherwise, the
+ seller just uses the orderLevelRefundAmount container to specify the amount of the refund for the entire
+ order.
+ order_level_refund_amount (Union[Unset, SimpleAmount]): This type defines the monetary value of the payment
+ dispute, and the currency used.
+ """
+
+ reason_for_refund: Union[Unset, str] = UNSET
+ comment: Union[Unset, str] = UNSET
+ refund_items: Union[Unset, list['RefundItem']] = UNSET
+ order_level_refund_amount: Union[Unset, 'SimpleAmount'] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.simple_amount import SimpleAmount
+ from ..models.refund_item import RefundItem
+ reason_for_refund = self.reason_for_refund
+
+ comment = self.comment
+
+ refund_items: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.refund_items, Unset):
+ refund_items = []
+ for refund_items_item_data in self.refund_items:
+ refund_items_item = refund_items_item_data.to_dict()
+ refund_items.append(refund_items_item)
+
+
+
+ order_level_refund_amount: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.order_level_refund_amount, Unset):
+ order_level_refund_amount = self.order_level_refund_amount.to_dict()
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if reason_for_refund is not UNSET:
+ field_dict["reasonForRefund"] = reason_for_refund
+ if comment is not UNSET:
+ field_dict["comment"] = comment
+ if refund_items is not UNSET:
+ field_dict["refundItems"] = refund_items
+ if order_level_refund_amount is not UNSET:
+ field_dict["orderLevelRefundAmount"] = order_level_refund_amount
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.simple_amount import SimpleAmount
+ from ..models.refund_item import RefundItem
+ d = dict(src_dict)
+ reason_for_refund = d.pop("reasonForRefund", UNSET)
+
+ comment = d.pop("comment", UNSET)
+
+ refund_items = []
+ _refund_items = d.pop("refundItems", UNSET)
+ for refund_items_item_data in (_refund_items or []):
+ refund_items_item = RefundItem.from_dict(refund_items_item_data)
+
+
+
+ refund_items.append(refund_items_item)
+
+
+ _order_level_refund_amount = d.pop("orderLevelRefundAmount", UNSET)
+ order_level_refund_amount: Union[Unset, SimpleAmount]
+ if isinstance(_order_level_refund_amount, Unset):
+ order_level_refund_amount = UNSET
+ else:
+ order_level_refund_amount = SimpleAmount.from_dict(_order_level_refund_amount)
+
+
+
+
+ issue_refund_request = cls(
+ reason_for_refund=reason_for_refund,
+ comment=comment,
+ refund_items=refund_items,
+ order_level_refund_amount=order_level_refund_amount,
+ )
+
+
+ issue_refund_request.additional_properties = d
+ return issue_refund_request
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/item_location.py b/ebay_client/generated/fulfillment/models/item_location.py
new file mode 100644
index 0000000..5ca3957
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/item_location.py
@@ -0,0 +1,103 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="ItemLocation")
+
+
+
+@_attrs_define
+class ItemLocation:
+ """ This type describes the physical location of an order.
+
+ Attributes:
+ country_code (Union[Unset, str]): The two-letter ISO 3166 code representing the country of the address. For
+ implementation help, refer to eBay API documentation
+ location (Union[Unset, str]): Indicates the geographical location of the item (along with the values in the
+ countryCode and postalCode fields).
Note: If the
+ item is shipped from a fulfillment center location through the Multi-Warehouse Program, this field will return
+ the geographical location of the fulfillment center closest to the buyer.
This field provides city,
+ province, state, or similar information.
+ postal_code (Union[Unset, str]): The postal code of the address.
+ """
+
+ country_code: Union[Unset, str] = UNSET
+ location: Union[Unset, str] = UNSET
+ postal_code: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ country_code = self.country_code
+
+ location = self.location
+
+ postal_code = self.postal_code
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if country_code is not UNSET:
+ field_dict["countryCode"] = country_code
+ if location is not UNSET:
+ field_dict["location"] = location
+ if postal_code is not UNSET:
+ field_dict["postalCode"] = postal_code
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ country_code = d.pop("countryCode", UNSET)
+
+ location = d.pop("location", UNSET)
+
+ postal_code = d.pop("postalCode", UNSET)
+
+ item_location = cls(
+ country_code=country_code,
+ location=location,
+ postal_code=postal_code,
+ )
+
+
+ item_location.additional_properties = d
+ return item_location
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/legacy_reference.py b/ebay_client/generated/fulfillment/models/legacy_reference.py
new file mode 100644
index 0000000..4af2f6e
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/legacy_reference.py
@@ -0,0 +1,100 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="LegacyReference")
+
+
+
+@_attrs_define
+class LegacyReference:
+ """ Type defining the legacyReference container. This container is needed if the seller is issuing a refund for
+ an individual order line item, and wishes to use an item ID and transaction ID to identify the order line item.
+
+ Attributes:
+ legacy_item_id (Union[Unset, str]): The unique identifier of a listing.
This value can be found in the
+ Transaction container in the response of the getOrder call of the Trading
+ API.
Note: Both legacyItemId and
+ legacyTransactionId are needed to identify an order line item.
+ legacy_transaction_id (Union[Unset, str]): The unique identifier of a sale/transaction in legacy/Trading API
+ format. A 'transaction ID' is created once a buyer purchases a 'Buy It Now' item or if an auction listing ends
+ with a winning bidder.
This value can be found in the Transaction container in the response of the getOrder call of the Trading
+ API.
Note: Both legacyItemId and
+ legacyTransactionId are needed to identify an order line item.
+ """
+
+ legacy_item_id: Union[Unset, str] = UNSET
+ legacy_transaction_id: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ legacy_item_id = self.legacy_item_id
+
+ legacy_transaction_id = self.legacy_transaction_id
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if legacy_item_id is not UNSET:
+ field_dict["legacyItemId"] = legacy_item_id
+ if legacy_transaction_id is not UNSET:
+ field_dict["legacyTransactionId"] = legacy_transaction_id
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ legacy_item_id = d.pop("legacyItemId", UNSET)
+
+ legacy_transaction_id = d.pop("legacyTransactionId", UNSET)
+
+ legacy_reference = cls(
+ legacy_item_id=legacy_item_id,
+ legacy_transaction_id=legacy_transaction_id,
+ )
+
+
+ legacy_reference.additional_properties = d
+ return legacy_reference
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/line_item.py b/ebay_client/generated/fulfillment/models/line_item.py
new file mode 100644
index 0000000..85d1073
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/line_item.py
@@ -0,0 +1,595 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.line_item_refund import LineItemRefund
+ from ..models.ebay_collected_charges import EbayCollectedCharges
+ from ..models.ebay_collect_and_remit_tax import EbayCollectAndRemitTax
+ from ..models.name_value_pair import NameValuePair
+ from ..models.delivery_cost import DeliveryCost
+ from ..models.amount import Amount
+ from ..models.gift_details import GiftDetails
+ from ..models.tax import Tax
+ from ..models.applied_promotion import AppliedPromotion
+ from ..models.line_item_fulfillment_instructions import LineItemFulfillmentInstructions
+ from ..models.item_location import ItemLocation
+ from ..models.property_ import Property
+ from ..models.line_item_properties import LineItemProperties
+ from ..models.linked_order_line_item import LinkedOrderLineItem
+
+
+
+
+
+T = TypeVar("T", bound="LineItem")
+
+
+
+@_attrs_define
+class LineItem:
+ """ This type contains the details of each line item in an order.
+
+ Attributes:
+ applied_promotions (Union[Unset, list['AppliedPromotion']]): This array contains information about one or more
+ sales promotions or discounts applied to the line item. It is always returned, but will be returned as an empty
+ array if no special sales promotions or discounts apply to the order line item.
+ compatibility_properties (Union[Unset, list['Property']]): This array is only returned for a Parts & Accessory
+ item, and identifies the buyer's motor vehicle that is compatible with the part or accessory.
+ delivery_cost (Union[Unset, DeliveryCost]): This type contains a breakdown of all costs associated with the
+ fulfillment of a line item.
+ discounted_line_item_cost (Union[Unset, Amount]): This type defines the monetary value of an amount. It can
+ provide the amount in both the currency used on the eBay site where an item is being offered and the conversion
+ of that value into another currency, if applicable.
+ ebay_collect_and_remit_taxes (Union[Unset, list['EbayCollectAndRemitTax']]): This container will be returned if
+ the order line item is subject to a 'Collect and Remit' tax that eBay will collect and remit to the proper
+ taxing authority on the buyer's behalf.
'Collect and Remit' tax includes:- US state-mandated sales
+ tax
- Federal and Provincial Sales Tax in Canada
- 'Goods and Services' tax in Canada, Australia,
+ New Zealand, and Jersey
- VAT collected for the UK, EU countries, Kazakhstan, and Belarus
- Sales &
+ Service Tax (SST) in Malaysia
The amount of this tax is shown in the amount field, and
+ the type of tax is shown in the taxType field.
eBay will display the tax type and amount
+ during checkout in accordance with the buyer's address, and handle collection and remittance of the tax without
+ requiring the seller to take any action.
+ ebay_collected_charges (Union[Unset, EbayCollectedCharges]): This type contains the breakdown of costs that are
+ collected by eBay from the buyer.
+ gift_details (Union[Unset, GiftDetails]): This type contains information about a digital gift card line item
+ that was purchased as a gift and sent to the recipient by email.
Note: GiftDetails will not be returned for any order that is more than
+ 90 days old.
+ item_location (Union[Unset, ItemLocation]): This type describes the physical location of an order.
+ legacy_item_id (Union[Unset, str]): The eBay-generated legacy listing item ID of the listing. Note that the
+ unique identifier of a listing in REST-based APIs is called the listingId instead.
+ legacy_variation_id (Union[Unset, str]): The unique identifier of a single variation within a multiple-variation
+ listing. This field is only returned if the line item purchased was from a multiple-variation listing.
+ line_item_cost (Union[Unset, Amount]): This type defines the monetary value of an amount. It can provide the
+ amount in both the currency used on the eBay site where an item is being offered and the conversion of that
+ value into another currency, if applicable.
+ line_item_fulfillment_instructions (Union[Unset, LineItemFulfillmentInstructions]): This type contains the
+ specifications for processing the fulfillment of a line item, including the handling window and the delivery
+ window. These fields provide guidance for eBay Guaranteed Delivery as well as for non-guaranteed
+ delivery.
+ line_item_fulfillment_status (Union[Unset, str]): This enumeration value indicates the current fulfillment
+ status of the line item. For implementation help, refer to eBay API documentation
+ line_item_id (Union[Unset, str]): This is the unique identifier of an eBay order line item. This field is
+ created as soon as there is a commitment to buy from the seller.
+ linked_order_line_items (Union[Unset, list['LinkedOrderLineItem']]): An array of one or more line items related
+ to the corresponding order, but not a part of that order. Details include the order ID, line item ID, and title
+ of the linked line item, the seller of that item, item specifics, estimated delivery times, and shipment
+ tracking (if available).
+ listing_marketplace_id (Union[Unset, str]): The unique identifier of the eBay marketplace where the line item
+ was listed. For implementation help, refer to eBay API documentation
+ properties (Union[Unset, LineItemProperties]): This type contains information about the eBay programs under
+ which a line item was listed and sold.
+ purchase_marketplace_id (Union[Unset, str]): The unique identifier of the eBay marketplace where the line item
+ was listed. Often, the listingMarketplaceId and the purchaseMarketplaceId
+ identifier are the same, but there are occasions when an item will surface on multiple eBay marketplaces. For
+ implementation help, refer to eBay API documentation
+ quantity (Union[Unset, int]): The number of units of the line item in the order. These are represented as a
+ group by a single lineItemId.
+ refunds (Union[Unset, list['LineItemRefund']]): This array is always returned, but is returned as an empty array
+ unless the seller has submitted a partial or full refund to the buyer for the order. If a refund has occurred,
+ the refund amount and refund date will be shown for each refund.
+ sku (Union[Unset, str]): Seller-defined Stock-Keeping Unit (SKU). This inventory identifier must be unique
+ within the seller's eBay inventory. SKUs are optional when listing in the legacy/Trading API system, but SKUs
+ are required when listing items through the Inventory API model.
+ sold_format (Union[Unset, str]): The eBay listing type of the line item. The most common listing types are
+ AUCTION and FIXED_PRICE. For implementation help, refer to eBay API documentation
+ taxes (Union[Unset, list['Tax']]): Contains a list of taxes applied to the line item, if any. This array is
+ always returned, but will be returned as empty if no taxes are applicable to the line item.
+ title (Union[Unset, str]): The title of the listing.
Note: The Item ID
+ value for the listing will be returned in this field instead of the actual title if this particular listing is
+ on-hold due to an eBay policy violation.
+ total (Union[Unset, Amount]): This type defines the monetary value of an amount. It can provide the amount in
+ both the currency used on the eBay site where an item is being offered and the conversion of that value into
+ another currency, if applicable.
+ variation_aspects (Union[Unset, list['NameValuePair']]): An array of aspect name-value pairs that identifies the
+ specific variation of a multi-variation listing. This array can contain multiple name-value pairs, such as
+ color:blue and size:large, and will only be returned for orders created from a
+ multiple-variation listing.
+ """
+
+ applied_promotions: Union[Unset, list['AppliedPromotion']] = UNSET
+ compatibility_properties: Union[Unset, list['Property']] = UNSET
+ delivery_cost: Union[Unset, 'DeliveryCost'] = UNSET
+ discounted_line_item_cost: Union[Unset, 'Amount'] = UNSET
+ ebay_collect_and_remit_taxes: Union[Unset, list['EbayCollectAndRemitTax']] = UNSET
+ ebay_collected_charges: Union[Unset, 'EbayCollectedCharges'] = UNSET
+ gift_details: Union[Unset, 'GiftDetails'] = UNSET
+ item_location: Union[Unset, 'ItemLocation'] = UNSET
+ legacy_item_id: Union[Unset, str] = UNSET
+ legacy_variation_id: Union[Unset, str] = UNSET
+ line_item_cost: Union[Unset, 'Amount'] = UNSET
+ line_item_fulfillment_instructions: Union[Unset, 'LineItemFulfillmentInstructions'] = UNSET
+ line_item_fulfillment_status: Union[Unset, str] = UNSET
+ line_item_id: Union[Unset, str] = UNSET
+ linked_order_line_items: Union[Unset, list['LinkedOrderLineItem']] = UNSET
+ listing_marketplace_id: Union[Unset, str] = UNSET
+ properties: Union[Unset, 'LineItemProperties'] = UNSET
+ purchase_marketplace_id: Union[Unset, str] = UNSET
+ quantity: Union[Unset, int] = UNSET
+ refunds: Union[Unset, list['LineItemRefund']] = UNSET
+ sku: Union[Unset, str] = UNSET
+ sold_format: Union[Unset, str] = UNSET
+ taxes: Union[Unset, list['Tax']] = UNSET
+ title: Union[Unset, str] = UNSET
+ total: Union[Unset, 'Amount'] = UNSET
+ variation_aspects: Union[Unset, list['NameValuePair']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.line_item_refund import LineItemRefund
+ from ..models.ebay_collected_charges import EbayCollectedCharges
+ from ..models.ebay_collect_and_remit_tax import EbayCollectAndRemitTax
+ from ..models.name_value_pair import NameValuePair
+ from ..models.delivery_cost import DeliveryCost
+ from ..models.amount import Amount
+ from ..models.gift_details import GiftDetails
+ from ..models.tax import Tax
+ from ..models.applied_promotion import AppliedPromotion
+ from ..models.line_item_fulfillment_instructions import LineItemFulfillmentInstructions
+ from ..models.item_location import ItemLocation
+ from ..models.property_ import Property
+ from ..models.line_item_properties import LineItemProperties
+ from ..models.linked_order_line_item import LinkedOrderLineItem
+ applied_promotions: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.applied_promotions, Unset):
+ applied_promotions = []
+ for applied_promotions_item_data in self.applied_promotions:
+ applied_promotions_item = applied_promotions_item_data.to_dict()
+ applied_promotions.append(applied_promotions_item)
+
+
+
+ compatibility_properties: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.compatibility_properties, Unset):
+ compatibility_properties = []
+ for compatibility_properties_item_data in self.compatibility_properties:
+ compatibility_properties_item = compatibility_properties_item_data.to_dict()
+ compatibility_properties.append(compatibility_properties_item)
+
+
+
+ delivery_cost: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.delivery_cost, Unset):
+ delivery_cost = self.delivery_cost.to_dict()
+
+ discounted_line_item_cost: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.discounted_line_item_cost, Unset):
+ discounted_line_item_cost = self.discounted_line_item_cost.to_dict()
+
+ ebay_collect_and_remit_taxes: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.ebay_collect_and_remit_taxes, Unset):
+ ebay_collect_and_remit_taxes = []
+ for ebay_collect_and_remit_taxes_item_data in self.ebay_collect_and_remit_taxes:
+ ebay_collect_and_remit_taxes_item = ebay_collect_and_remit_taxes_item_data.to_dict()
+ ebay_collect_and_remit_taxes.append(ebay_collect_and_remit_taxes_item)
+
+
+
+ ebay_collected_charges: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.ebay_collected_charges, Unset):
+ ebay_collected_charges = self.ebay_collected_charges.to_dict()
+
+ gift_details: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.gift_details, Unset):
+ gift_details = self.gift_details.to_dict()
+
+ item_location: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.item_location, Unset):
+ item_location = self.item_location.to_dict()
+
+ legacy_item_id = self.legacy_item_id
+
+ legacy_variation_id = self.legacy_variation_id
+
+ line_item_cost: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.line_item_cost, Unset):
+ line_item_cost = self.line_item_cost.to_dict()
+
+ line_item_fulfillment_instructions: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.line_item_fulfillment_instructions, Unset):
+ line_item_fulfillment_instructions = self.line_item_fulfillment_instructions.to_dict()
+
+ line_item_fulfillment_status = self.line_item_fulfillment_status
+
+ line_item_id = self.line_item_id
+
+ linked_order_line_items: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.linked_order_line_items, Unset):
+ linked_order_line_items = []
+ for linked_order_line_items_item_data in self.linked_order_line_items:
+ linked_order_line_items_item = linked_order_line_items_item_data.to_dict()
+ linked_order_line_items.append(linked_order_line_items_item)
+
+
+
+ listing_marketplace_id = self.listing_marketplace_id
+
+ properties: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.properties, Unset):
+ properties = self.properties.to_dict()
+
+ purchase_marketplace_id = self.purchase_marketplace_id
+
+ quantity = self.quantity
+
+ refunds: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.refunds, Unset):
+ refunds = []
+ for refunds_item_data in self.refunds:
+ refunds_item = refunds_item_data.to_dict()
+ refunds.append(refunds_item)
+
+
+
+ sku = self.sku
+
+ sold_format = self.sold_format
+
+ taxes: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.taxes, Unset):
+ taxes = []
+ for taxes_item_data in self.taxes:
+ taxes_item = taxes_item_data.to_dict()
+ taxes.append(taxes_item)
+
+
+
+ title = self.title
+
+ total: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.total, Unset):
+ total = self.total.to_dict()
+
+ variation_aspects: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.variation_aspects, Unset):
+ variation_aspects = []
+ for variation_aspects_item_data in self.variation_aspects:
+ variation_aspects_item = variation_aspects_item_data.to_dict()
+ variation_aspects.append(variation_aspects_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if applied_promotions is not UNSET:
+ field_dict["appliedPromotions"] = applied_promotions
+ if compatibility_properties is not UNSET:
+ field_dict["compatibilityProperties"] = compatibility_properties
+ if delivery_cost is not UNSET:
+ field_dict["deliveryCost"] = delivery_cost
+ if discounted_line_item_cost is not UNSET:
+ field_dict["discountedLineItemCost"] = discounted_line_item_cost
+ if ebay_collect_and_remit_taxes is not UNSET:
+ field_dict["ebayCollectAndRemitTaxes"] = ebay_collect_and_remit_taxes
+ if ebay_collected_charges is not UNSET:
+ field_dict["ebayCollectedCharges"] = ebay_collected_charges
+ if gift_details is not UNSET:
+ field_dict["giftDetails"] = gift_details
+ if item_location is not UNSET:
+ field_dict["itemLocation"] = item_location
+ if legacy_item_id is not UNSET:
+ field_dict["legacyItemId"] = legacy_item_id
+ if legacy_variation_id is not UNSET:
+ field_dict["legacyVariationId"] = legacy_variation_id
+ if line_item_cost is not UNSET:
+ field_dict["lineItemCost"] = line_item_cost
+ if line_item_fulfillment_instructions is not UNSET:
+ field_dict["lineItemFulfillmentInstructions"] = line_item_fulfillment_instructions
+ if line_item_fulfillment_status is not UNSET:
+ field_dict["lineItemFulfillmentStatus"] = line_item_fulfillment_status
+ if line_item_id is not UNSET:
+ field_dict["lineItemId"] = line_item_id
+ if linked_order_line_items is not UNSET:
+ field_dict["linkedOrderLineItems"] = linked_order_line_items
+ if listing_marketplace_id is not UNSET:
+ field_dict["listingMarketplaceId"] = listing_marketplace_id
+ if properties is not UNSET:
+ field_dict["properties"] = properties
+ if purchase_marketplace_id is not UNSET:
+ field_dict["purchaseMarketplaceId"] = purchase_marketplace_id
+ if quantity is not UNSET:
+ field_dict["quantity"] = quantity
+ if refunds is not UNSET:
+ field_dict["refunds"] = refunds
+ if sku is not UNSET:
+ field_dict["sku"] = sku
+ if sold_format is not UNSET:
+ field_dict["soldFormat"] = sold_format
+ if taxes is not UNSET:
+ field_dict["taxes"] = taxes
+ if title is not UNSET:
+ field_dict["title"] = title
+ if total is not UNSET:
+ field_dict["total"] = total
+ if variation_aspects is not UNSET:
+ field_dict["variationAspects"] = variation_aspects
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.line_item_refund import LineItemRefund
+ from ..models.ebay_collected_charges import EbayCollectedCharges
+ from ..models.ebay_collect_and_remit_tax import EbayCollectAndRemitTax
+ from ..models.name_value_pair import NameValuePair
+ from ..models.delivery_cost import DeliveryCost
+ from ..models.amount import Amount
+ from ..models.gift_details import GiftDetails
+ from ..models.tax import Tax
+ from ..models.applied_promotion import AppliedPromotion
+ from ..models.line_item_fulfillment_instructions import LineItemFulfillmentInstructions
+ from ..models.item_location import ItemLocation
+ from ..models.property_ import Property
+ from ..models.line_item_properties import LineItemProperties
+ from ..models.linked_order_line_item import LinkedOrderLineItem
+ d = dict(src_dict)
+ applied_promotions = []
+ _applied_promotions = d.pop("appliedPromotions", UNSET)
+ for applied_promotions_item_data in (_applied_promotions or []):
+ applied_promotions_item = AppliedPromotion.from_dict(applied_promotions_item_data)
+
+
+
+ applied_promotions.append(applied_promotions_item)
+
+
+ compatibility_properties = []
+ _compatibility_properties = d.pop("compatibilityProperties", UNSET)
+ for compatibility_properties_item_data in (_compatibility_properties or []):
+ compatibility_properties_item = Property.from_dict(compatibility_properties_item_data)
+
+
+
+ compatibility_properties.append(compatibility_properties_item)
+
+
+ _delivery_cost = d.pop("deliveryCost", UNSET)
+ delivery_cost: Union[Unset, DeliveryCost]
+ if isinstance(_delivery_cost, Unset):
+ delivery_cost = UNSET
+ else:
+ delivery_cost = DeliveryCost.from_dict(_delivery_cost)
+
+
+
+
+ _discounted_line_item_cost = d.pop("discountedLineItemCost", UNSET)
+ discounted_line_item_cost: Union[Unset, Amount]
+ if isinstance(_discounted_line_item_cost, Unset):
+ discounted_line_item_cost = UNSET
+ else:
+ discounted_line_item_cost = Amount.from_dict(_discounted_line_item_cost)
+
+
+
+
+ ebay_collect_and_remit_taxes = []
+ _ebay_collect_and_remit_taxes = d.pop("ebayCollectAndRemitTaxes", UNSET)
+ for ebay_collect_and_remit_taxes_item_data in (_ebay_collect_and_remit_taxes or []):
+ ebay_collect_and_remit_taxes_item = EbayCollectAndRemitTax.from_dict(ebay_collect_and_remit_taxes_item_data)
+
+
+
+ ebay_collect_and_remit_taxes.append(ebay_collect_and_remit_taxes_item)
+
+
+ _ebay_collected_charges = d.pop("ebayCollectedCharges", UNSET)
+ ebay_collected_charges: Union[Unset, EbayCollectedCharges]
+ if isinstance(_ebay_collected_charges, Unset):
+ ebay_collected_charges = UNSET
+ else:
+ ebay_collected_charges = EbayCollectedCharges.from_dict(_ebay_collected_charges)
+
+
+
+
+ _gift_details = d.pop("giftDetails", UNSET)
+ gift_details: Union[Unset, GiftDetails]
+ if isinstance(_gift_details, Unset):
+ gift_details = UNSET
+ else:
+ gift_details = GiftDetails.from_dict(_gift_details)
+
+
+
+
+ _item_location = d.pop("itemLocation", UNSET)
+ item_location: Union[Unset, ItemLocation]
+ if isinstance(_item_location, Unset):
+ item_location = UNSET
+ else:
+ item_location = ItemLocation.from_dict(_item_location)
+
+
+
+
+ legacy_item_id = d.pop("legacyItemId", UNSET)
+
+ legacy_variation_id = d.pop("legacyVariationId", UNSET)
+
+ _line_item_cost = d.pop("lineItemCost", UNSET)
+ line_item_cost: Union[Unset, Amount]
+ if isinstance(_line_item_cost, Unset):
+ line_item_cost = UNSET
+ else:
+ line_item_cost = Amount.from_dict(_line_item_cost)
+
+
+
+
+ _line_item_fulfillment_instructions = d.pop("lineItemFulfillmentInstructions", UNSET)
+ line_item_fulfillment_instructions: Union[Unset, LineItemFulfillmentInstructions]
+ if isinstance(_line_item_fulfillment_instructions, Unset):
+ line_item_fulfillment_instructions = UNSET
+ else:
+ line_item_fulfillment_instructions = LineItemFulfillmentInstructions.from_dict(_line_item_fulfillment_instructions)
+
+
+
+
+ line_item_fulfillment_status = d.pop("lineItemFulfillmentStatus", UNSET)
+
+ line_item_id = d.pop("lineItemId", UNSET)
+
+ linked_order_line_items = []
+ _linked_order_line_items = d.pop("linkedOrderLineItems", UNSET)
+ for linked_order_line_items_item_data in (_linked_order_line_items or []):
+ linked_order_line_items_item = LinkedOrderLineItem.from_dict(linked_order_line_items_item_data)
+
+
+
+ linked_order_line_items.append(linked_order_line_items_item)
+
+
+ listing_marketplace_id = d.pop("listingMarketplaceId", UNSET)
+
+ _properties = d.pop("properties", UNSET)
+ properties: Union[Unset, LineItemProperties]
+ if isinstance(_properties, Unset):
+ properties = UNSET
+ else:
+ properties = LineItemProperties.from_dict(_properties)
+
+
+
+
+ purchase_marketplace_id = d.pop("purchaseMarketplaceId", UNSET)
+
+ quantity = d.pop("quantity", UNSET)
+
+ refunds = []
+ _refunds = d.pop("refunds", UNSET)
+ for refunds_item_data in (_refunds or []):
+ refunds_item = LineItemRefund.from_dict(refunds_item_data)
+
+
+
+ refunds.append(refunds_item)
+
+
+ sku = d.pop("sku", UNSET)
+
+ sold_format = d.pop("soldFormat", UNSET)
+
+ taxes = []
+ _taxes = d.pop("taxes", UNSET)
+ for taxes_item_data in (_taxes or []):
+ taxes_item = Tax.from_dict(taxes_item_data)
+
+
+
+ taxes.append(taxes_item)
+
+
+ title = d.pop("title", UNSET)
+
+ _total = d.pop("total", UNSET)
+ total: Union[Unset, Amount]
+ if isinstance(_total, Unset):
+ total = UNSET
+ else:
+ total = Amount.from_dict(_total)
+
+
+
+
+ variation_aspects = []
+ _variation_aspects = d.pop("variationAspects", UNSET)
+ for variation_aspects_item_data in (_variation_aspects or []):
+ variation_aspects_item = NameValuePair.from_dict(variation_aspects_item_data)
+
+
+
+ variation_aspects.append(variation_aspects_item)
+
+
+ line_item = cls(
+ applied_promotions=applied_promotions,
+ compatibility_properties=compatibility_properties,
+ delivery_cost=delivery_cost,
+ discounted_line_item_cost=discounted_line_item_cost,
+ ebay_collect_and_remit_taxes=ebay_collect_and_remit_taxes,
+ ebay_collected_charges=ebay_collected_charges,
+ gift_details=gift_details,
+ item_location=item_location,
+ legacy_item_id=legacy_item_id,
+ legacy_variation_id=legacy_variation_id,
+ line_item_cost=line_item_cost,
+ line_item_fulfillment_instructions=line_item_fulfillment_instructions,
+ line_item_fulfillment_status=line_item_fulfillment_status,
+ line_item_id=line_item_id,
+ linked_order_line_items=linked_order_line_items,
+ listing_marketplace_id=listing_marketplace_id,
+ properties=properties,
+ purchase_marketplace_id=purchase_marketplace_id,
+ quantity=quantity,
+ refunds=refunds,
+ sku=sku,
+ sold_format=sold_format,
+ taxes=taxes,
+ title=title,
+ total=total,
+ variation_aspects=variation_aspects,
+ )
+
+
+ line_item.additional_properties = d
+ return line_item
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/line_item_fulfillment_instructions.py b/ebay_client/generated/fulfillment/models/line_item_fulfillment_instructions.py
new file mode 100644
index 0000000..d2ea03a
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/line_item_fulfillment_instructions.py
@@ -0,0 +1,131 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="LineItemFulfillmentInstructions")
+
+
+
+@_attrs_define
+class LineItemFulfillmentInstructions:
+ """ This type contains the specifications for processing the fulfillment of a line item, including the handling window
+ and the delivery window. These fields provide guidance for eBay Guaranteed Delivery as well as for non-
+ guaranteed delivery.
+
+ Attributes:
+ guaranteed_delivery (Union[Unset, bool]): Although this field is still returned, it can be ignored since eBay
+ Guaranteed Delivery is no longer a supported feature on any marketplace. This field may get removed from the
+ schema in the future.
+ max_estimated_delivery_date (Union[Unset, str]): The estimated latest date and time that the buyer can expect to
+ receive the line item based on the seller's stated handling time and the transit times of the available shipping
+ service options. The seller must pay extra attention to this date, as a failure to deliver by this date/time can
+ result in a 'Late shipment' seller defect, and can affect seller level and Top-Rated Seller status. In addition
+ to the seller defect, buyers will be eligible for a shipping cost refund, and will also be eligible to return
+ the item for a full refund (with no return shipping charge) if they choose.
Note: This timestamp is in ISO 8601 format, which uses the 24-hour Universal
+ Coordinated Time (UTC) clock.
Format: [YYYY]-[MM]-[DD]T[hh]:[mm]:[ss].[sss]Z
+
Example: 2015-08-04T19:09:02.768Z
+ min_estimated_delivery_date (Union[Unset, str]): The estimated earliest date and time that the buyer can expect
+ to receive the line item based on the seller's stated handling time and the transit times of the available
+ shipping service options.
Note: This timestamp is in ISO 8601
+ format, which uses the 24-hour Universal Coordinated Time (UTC) clock.
Format:
+ [YYYY]-[MM]-[DD]T[hh]:[mm]:[ss].[sss]Z
Example:
+ 2015-08-04T19:09:02.768Z
+ ship_by_date (Union[Unset, str]): The latest date and time by which the seller should ship line item in order to
+ meet the expected delivery window. This timestamp will be set by eBay based on time of purchase and the seller's
+ stated handling time. The seller must pay extra attention to this date, as a failure to physically ship the line
+ item by this date/time can result in a 'Late shipment' seller defect, and can affect seller level and Top-Rated
+ Seller status. In addition to the seller defect, buyers will be eligible for a shipping cost refund, and will
+ also be eligible to return the item for a full refund (with no return shipping charge) if they choose.
+
Note: This timestamp is in ISO 8601 format, which uses the
+ 24-hour Universal Coordinated Time (UTC) clock.
Format:
+ [YYYY]-[MM]-[DD]T[hh]:[mm]:[ss].[sss]Z
Example:
+ 2015-08-04T19:09:02.768Z
+ """
+
+ guaranteed_delivery: Union[Unset, bool] = UNSET
+ max_estimated_delivery_date: Union[Unset, str] = UNSET
+ min_estimated_delivery_date: Union[Unset, str] = UNSET
+ ship_by_date: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ guaranteed_delivery = self.guaranteed_delivery
+
+ max_estimated_delivery_date = self.max_estimated_delivery_date
+
+ min_estimated_delivery_date = self.min_estimated_delivery_date
+
+ ship_by_date = self.ship_by_date
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if guaranteed_delivery is not UNSET:
+ field_dict["guaranteedDelivery"] = guaranteed_delivery
+ if max_estimated_delivery_date is not UNSET:
+ field_dict["maxEstimatedDeliveryDate"] = max_estimated_delivery_date
+ if min_estimated_delivery_date is not UNSET:
+ field_dict["minEstimatedDeliveryDate"] = min_estimated_delivery_date
+ if ship_by_date is not UNSET:
+ field_dict["shipByDate"] = ship_by_date
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ guaranteed_delivery = d.pop("guaranteedDelivery", UNSET)
+
+ max_estimated_delivery_date = d.pop("maxEstimatedDeliveryDate", UNSET)
+
+ min_estimated_delivery_date = d.pop("minEstimatedDeliveryDate", UNSET)
+
+ ship_by_date = d.pop("shipByDate", UNSET)
+
+ line_item_fulfillment_instructions = cls(
+ guaranteed_delivery=guaranteed_delivery,
+ max_estimated_delivery_date=max_estimated_delivery_date,
+ min_estimated_delivery_date=min_estimated_delivery_date,
+ ship_by_date=ship_by_date,
+ )
+
+
+ line_item_fulfillment_instructions.additional_properties = d
+ return line_item_fulfillment_instructions
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/line_item_properties.py b/ebay_client/generated/fulfillment/models/line_item_properties.py
new file mode 100644
index 0000000..65f13d5
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/line_item_properties.py
@@ -0,0 +1,101 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="LineItemProperties")
+
+
+
+@_attrs_define
+class LineItemProperties:
+ """ This type contains information about the eBay programs under which a line item was listed and sold.
+
+ Attributes:
+ buyer_protection (Union[Unset, bool]): A value of true indicates that the line item is covered by
+ eBay's Buyer Protection program.
+ from_best_offer (Union[Unset, bool]): This field is only returned if true and indicates that the
+ purchase occurred by the buyer and seller mutually agreeing on a Best Offer amount. The Best Offer feature can
+ be set up for any listing type, but if this feature is set up for an auction listing, it will no longer be
+ available once a bid has been placed on the listing.
+ sold_via_ad_campaign (Union[Unset, bool]): This field is only returned if true and indicates that
+ the line item was sold as a result of a seller's ad campaign.
+ """
+
+ buyer_protection: Union[Unset, bool] = UNSET
+ from_best_offer: Union[Unset, bool] = UNSET
+ sold_via_ad_campaign: Union[Unset, bool] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ buyer_protection = self.buyer_protection
+
+ from_best_offer = self.from_best_offer
+
+ sold_via_ad_campaign = self.sold_via_ad_campaign
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if buyer_protection is not UNSET:
+ field_dict["buyerProtection"] = buyer_protection
+ if from_best_offer is not UNSET:
+ field_dict["fromBestOffer"] = from_best_offer
+ if sold_via_ad_campaign is not UNSET:
+ field_dict["soldViaAdCampaign"] = sold_via_ad_campaign
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ buyer_protection = d.pop("buyerProtection", UNSET)
+
+ from_best_offer = d.pop("fromBestOffer", UNSET)
+
+ sold_via_ad_campaign = d.pop("soldViaAdCampaign", UNSET)
+
+ line_item_properties = cls(
+ buyer_protection=buyer_protection,
+ from_best_offer=from_best_offer,
+ sold_via_ad_campaign=sold_via_ad_campaign,
+ )
+
+
+ line_item_properties.additional_properties = d
+ return line_item_properties
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/line_item_reference.py b/ebay_client/generated/fulfillment/models/line_item_reference.py
new file mode 100644
index 0000000..b32d3d8
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/line_item_reference.py
@@ -0,0 +1,92 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="LineItemReference")
+
+
+
+@_attrs_define
+class LineItemReference:
+ """ This type identifies the line item and quantity of that line item that comprises one fulfillment, such as a shipping
+ package.
+
+ Attributes:
+ line_item_id (Union[Unset, str]): This is the unique identifier of the eBay order line item that is part of the
+ shipping fulfillment.
Line item Ids can be found in the lineItems.lineItemId field of the getOrders response.
+ quantity (Union[Unset, int]): This is the number of lineItems associated with the trackingNumber specified by the seller. This must be a whole number greater
+ than zero (0).
Default: 1
+ """
+
+ line_item_id: Union[Unset, str] = UNSET
+ quantity: Union[Unset, int] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ line_item_id = self.line_item_id
+
+ quantity = self.quantity
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if line_item_id is not UNSET:
+ field_dict["lineItemId"] = line_item_id
+ if quantity is not UNSET:
+ field_dict["quantity"] = quantity
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ line_item_id = d.pop("lineItemId", UNSET)
+
+ quantity = d.pop("quantity", UNSET)
+
+ line_item_reference = cls(
+ line_item_id=line_item_id,
+ quantity=quantity,
+ )
+
+
+ line_item_reference.additional_properties = d
+ return line_item_reference
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/line_item_refund.py b/ebay_client/generated/fulfillment/models/line_item_refund.py
new file mode 100644
index 0000000..4b761be
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/line_item_refund.py
@@ -0,0 +1,129 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.amount import Amount
+
+
+
+
+
+T = TypeVar("T", bound="LineItemRefund")
+
+
+
+@_attrs_define
+class LineItemRefund:
+ """ This type contains refund information for a line item.
+
+ Attributes:
+ amount (Union[Unset, Amount]): This type defines the monetary value of an amount. It can provide the amount in
+ both the currency used on the eBay site where an item is being offered and the conversion of that value into
+ another currency, if applicable.
+ refund_date (Union[Unset, str]): The date and time that the refund was issued for the line item. This timestamp
+ is in ISO 8601 format, which uses the 24-hour Universal Coordinated Time (UTC) clock. This field is not returned
+ until the refund has been issued.
Format: [YYYY]-[MM]-[DD]T[hh]:[mm]:[ss].[sss]Z
+
Example: 2015-08-04T19:09:02.768Z
+ refund_id (Union[Unset, str]): Unique identifier of a refund that was initiated for an order's line item through
+ the issueRefund method. If the issueRefund method was used to issue a refund at the order level,
+ this identifier is returned at the order level instead (paymentSummary.refunds.refundId field).
A
+ refundId value is returned in the response of the issueRefund method, and this same value will be
+ returned in the getOrder and getOrders responses for pending and completed refunds.
+ refund_reference_id (Union[Unset, str]): This field is reserved for internal or future use.
+ """
+
+ amount: Union[Unset, 'Amount'] = UNSET
+ refund_date: Union[Unset, str] = UNSET
+ refund_id: Union[Unset, str] = UNSET
+ refund_reference_id: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.amount import Amount
+ amount: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.amount, Unset):
+ amount = self.amount.to_dict()
+
+ refund_date = self.refund_date
+
+ refund_id = self.refund_id
+
+ refund_reference_id = self.refund_reference_id
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if amount is not UNSET:
+ field_dict["amount"] = amount
+ if refund_date is not UNSET:
+ field_dict["refundDate"] = refund_date
+ if refund_id is not UNSET:
+ field_dict["refundId"] = refund_id
+ if refund_reference_id is not UNSET:
+ field_dict["refundReferenceId"] = refund_reference_id
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.amount import Amount
+ d = dict(src_dict)
+ _amount = d.pop("amount", UNSET)
+ amount: Union[Unset, Amount]
+ if isinstance(_amount, Unset):
+ amount = UNSET
+ else:
+ amount = Amount.from_dict(_amount)
+
+
+
+
+ refund_date = d.pop("refundDate", UNSET)
+
+ refund_id = d.pop("refundId", UNSET)
+
+ refund_reference_id = d.pop("refundReferenceId", UNSET)
+
+ line_item_refund = cls(
+ amount=amount,
+ refund_date=refund_date,
+ refund_id=refund_id,
+ refund_reference_id=refund_reference_id,
+ )
+
+
+ line_item_refund.additional_properties = d
+ return line_item_refund
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/linked_order_line_item.py b/ebay_client/generated/fulfillment/models/linked_order_line_item.py
new file mode 100644
index 0000000..781449f
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/linked_order_line_item.py
@@ -0,0 +1,190 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.name_value_pair import NameValuePair
+ from ..models.tracking_info import TrackingInfo
+
+
+
+
+
+T = TypeVar("T", bound="LinkedOrderLineItem")
+
+
+
+@_attrs_define
+class LinkedOrderLineItem:
+ """ This type contains data on a line item that is related to, but not a part of the order.
+
+ Attributes:
+ line_item_aspects (Union[Unset, list['NameValuePair']]): This array contains the complete set of items aspects
+ for the linked line item. For example:
"lineItemAspects": [
{
"name": "Tire Type",
+ "value": "All Season"
},
...
{
"name": "Car Type",
"value":
+ "Performance"
}
]
Note: All item specifics for the
+ listing are returned. The name/value pairs returned are in the language of the linked line item's listing site,
+ which may vary from the seller's language.
+ line_item_id (Union[Unset, str]): The unique identifier of the linked order line item.
+ max_estimated_delivery_date (Union[Unset, str]): The end of the date range in which the linked line item is
+ expected to be delivered to the shipping address.
+ min_estimated_delivery_date (Union[Unset, str]): The beginning of the date range in which the linked line item
+ is expected to be delivered to the shipping address.
+ order_id (Union[Unset, str]): The unique identifier of the order to which the linked line item belongs.
+ seller_id (Union[Unset, str]): The eBay user ID of the seller who sold the linked line item. For example, the
+ user ID of the tire seller.
+ shipments (Union[Unset, list['TrackingInfo']]): An array containing any shipment tracking information available
+ for the linked line item.
+ title (Union[Unset, str]): The listing title of the linked line item.
Note: The Item ID value for the listing will be returned in this field instead of the
+ actual title if this particular listing is on-hold due to an eBay policy violation.
+ """
+
+ line_item_aspects: Union[Unset, list['NameValuePair']] = UNSET
+ line_item_id: Union[Unset, str] = UNSET
+ max_estimated_delivery_date: Union[Unset, str] = UNSET
+ min_estimated_delivery_date: Union[Unset, str] = UNSET
+ order_id: Union[Unset, str] = UNSET
+ seller_id: Union[Unset, str] = UNSET
+ shipments: Union[Unset, list['TrackingInfo']] = UNSET
+ title: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.name_value_pair import NameValuePair
+ from ..models.tracking_info import TrackingInfo
+ line_item_aspects: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.line_item_aspects, Unset):
+ line_item_aspects = []
+ for line_item_aspects_item_data in self.line_item_aspects:
+ line_item_aspects_item = line_item_aspects_item_data.to_dict()
+ line_item_aspects.append(line_item_aspects_item)
+
+
+
+ line_item_id = self.line_item_id
+
+ max_estimated_delivery_date = self.max_estimated_delivery_date
+
+ min_estimated_delivery_date = self.min_estimated_delivery_date
+
+ order_id = self.order_id
+
+ seller_id = self.seller_id
+
+ shipments: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.shipments, Unset):
+ shipments = []
+ for shipments_item_data in self.shipments:
+ shipments_item = shipments_item_data.to_dict()
+ shipments.append(shipments_item)
+
+
+
+ title = self.title
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if line_item_aspects is not UNSET:
+ field_dict["lineItemAspects"] = line_item_aspects
+ if line_item_id is not UNSET:
+ field_dict["lineItemId"] = line_item_id
+ if max_estimated_delivery_date is not UNSET:
+ field_dict["maxEstimatedDeliveryDate"] = max_estimated_delivery_date
+ if min_estimated_delivery_date is not UNSET:
+ field_dict["minEstimatedDeliveryDate"] = min_estimated_delivery_date
+ if order_id is not UNSET:
+ field_dict["orderId"] = order_id
+ if seller_id is not UNSET:
+ field_dict["sellerId"] = seller_id
+ if shipments is not UNSET:
+ field_dict["shipments"] = shipments
+ if title is not UNSET:
+ field_dict["title"] = title
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.name_value_pair import NameValuePair
+ from ..models.tracking_info import TrackingInfo
+ d = dict(src_dict)
+ line_item_aspects = []
+ _line_item_aspects = d.pop("lineItemAspects", UNSET)
+ for line_item_aspects_item_data in (_line_item_aspects or []):
+ line_item_aspects_item = NameValuePair.from_dict(line_item_aspects_item_data)
+
+
+
+ line_item_aspects.append(line_item_aspects_item)
+
+
+ line_item_id = d.pop("lineItemId", UNSET)
+
+ max_estimated_delivery_date = d.pop("maxEstimatedDeliveryDate", UNSET)
+
+ min_estimated_delivery_date = d.pop("minEstimatedDeliveryDate", UNSET)
+
+ order_id = d.pop("orderId", UNSET)
+
+ seller_id = d.pop("sellerId", UNSET)
+
+ shipments = []
+ _shipments = d.pop("shipments", UNSET)
+ for shipments_item_data in (_shipments or []):
+ shipments_item = TrackingInfo.from_dict(shipments_item_data)
+
+
+
+ shipments.append(shipments_item)
+
+
+ title = d.pop("title", UNSET)
+
+ linked_order_line_item = cls(
+ line_item_aspects=line_item_aspects,
+ line_item_id=line_item_id,
+ max_estimated_delivery_date=max_estimated_delivery_date,
+ min_estimated_delivery_date=min_estimated_delivery_date,
+ order_id=order_id,
+ seller_id=seller_id,
+ shipments=shipments,
+ title=title,
+ )
+
+
+ linked_order_line_item.additional_properties = d
+ return linked_order_line_item
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/monetary_transaction.py b/ebay_client/generated/fulfillment/models/monetary_transaction.py
new file mode 100644
index 0000000..1280e2a
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/monetary_transaction.py
@@ -0,0 +1,129 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.dispute_amount import DisputeAmount
+
+
+
+
+
+T = TypeVar("T", bound="MonetaryTransaction")
+
+
+
+@_attrs_define
+class MonetaryTransaction:
+ """ This type is used to provide details about one or more monetary transactions that occur as part of a payment
+ dispute.
+
+ Attributes:
+ date (Union[Unset, str]): This timestamp indicates when the monetary transaction occurred. A date is returned
+ for all monetary transactions.
The following format is used: YYYY-MM-DDTHH:MM:SS.SSSZ. For
+ example, 2015-08-04T19:09:02.768Z.
+ type_ (Union[Unset, str]): This enumeration value indicates whether the monetary transaction is a charge or a
+ credit to the seller. For implementation help, refer to eBay API documentation
+ reason (Union[Unset, str]): This enumeration value indicates the reason for the monetary transaction. For
+ implementation help, refer to eBay API documentation
+ amount (Union[Unset, DisputeAmount]): This type defines the monetary value of an amount. It can provide the
+ amount in both the currency used on the eBay site where an item is being offered and the conversion of that
+ value into another currency, if applicable.
+ """
+
+ date: Union[Unset, str] = UNSET
+ type_: Union[Unset, str] = UNSET
+ reason: Union[Unset, str] = UNSET
+ amount: Union[Unset, 'DisputeAmount'] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.dispute_amount import DisputeAmount
+ date = self.date
+
+ type_ = self.type_
+
+ reason = self.reason
+
+ amount: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.amount, Unset):
+ amount = self.amount.to_dict()
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if date is not UNSET:
+ field_dict["date"] = date
+ if type_ is not UNSET:
+ field_dict["type"] = type_
+ if reason is not UNSET:
+ field_dict["reason"] = reason
+ if amount is not UNSET:
+ field_dict["amount"] = amount
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.dispute_amount import DisputeAmount
+ d = dict(src_dict)
+ date = d.pop("date", UNSET)
+
+ type_ = d.pop("type", UNSET)
+
+ reason = d.pop("reason", UNSET)
+
+ _amount = d.pop("amount", UNSET)
+ amount: Union[Unset, DisputeAmount]
+ if isinstance(_amount, Unset):
+ amount = UNSET
+ else:
+ amount = DisputeAmount.from_dict(_amount)
+
+
+
+
+ monetary_transaction = cls(
+ date=date,
+ type_=type_,
+ reason=reason,
+ amount=amount,
+ )
+
+
+ monetary_transaction.additional_properties = d
+ return monetary_transaction
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/name_value_pair.py b/ebay_client/generated/fulfillment/models/name_value_pair.py
new file mode 100644
index 0000000..3e62cb3
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/name_value_pair.py
@@ -0,0 +1,90 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="NameValuePair")
+
+
+
+@_attrs_define
+class NameValuePair:
+ """ This type contains the name-value specifics of a multi-variation listing (variationAspects) or the name-value
+ specifics for all item aspects of a linked line item (linkedOrderLineItems).
+
+ Attributes:
+ name (Union[Unset, str]): The text representing the name of the aspect for the name-value pair. For example,
+ color, or Tire Type.
+ value (Union[Unset, str]): The value of the aspect for the name-value pair. For example, red, or
+ All Season.
+ """
+
+ name: Union[Unset, str] = UNSET
+ value: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ name = self.name
+
+ value = self.value
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if name is not UNSET:
+ field_dict["name"] = name
+ if value is not UNSET:
+ field_dict["value"] = value
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ name = d.pop("name", UNSET)
+
+ value = d.pop("value", UNSET)
+
+ name_value_pair = cls(
+ name=name,
+ value=value,
+ )
+
+
+ name_value_pair.additional_properties = d
+ return name_value_pair
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/order.py b/ebay_client/generated/fulfillment/models/order.py
new file mode 100644
index 0000000..f3bb8f6
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/order.py
@@ -0,0 +1,413 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.fulfillment_start_instruction import FulfillmentStartInstruction
+ from ..models.line_item import LineItem
+ from ..models.payment_summary import PaymentSummary
+ from ..models.buyer import Buyer
+ from ..models.pricing_summary import PricingSummary
+ from ..models.program import Program
+ from ..models.amount import Amount
+ from ..models.cancel_status import CancelStatus
+
+
+
+
+
+T = TypeVar("T", bound="Order")
+
+
+
+@_attrs_define
+class Order:
+ """ This type contains the details of an order, including information about the buyer, order history, shipping
+ fulfillments, line items, costs, payments, and order fulfillment status.
+
+ Attributes:
+ buyer (Union[Unset, Buyer]): This type contains information about the order's buyer.
+ buyer_checkout_notes (Union[Unset, str]): This field contains any comments that the buyer left for the seller
+ about the order during checkout process. This field is only returned if a buyer left comments at checkout time.
+ cancel_status (Union[Unset, CancelStatus]): This type contains information about any requests that have been
+ made to cancel an order.
+ creation_date (Union[Unset, str]): The date and time that the order was created. This timestamp is in ISO 8601
+ format, which uses the 24-hour Universal Coordinated Time (UTC) clock.
Format:
+ [YYYY]-[MM]-[DD]T[hh]:[mm]:[ss].[sss]Z
Example: 2015-08-04T19:09:02.768Z
+ ebay_collect_and_remit_tax (Union[Unset, bool]): This field is only returned if true, and indicates
+ that eBay will collect tax (US state-mandated sales tax, Federal and Provincial Sales Tax in Canada, 'Goods and
+ Services' tax in Canada, Australia, and New Zealand, and VAT collected for UK and EU countries,) for at least
+ one line item in the order, and remit the tax to the taxing authority of the buyer's residence. If this field is
+ returned, the seller should search for one or more ebayCollectAndRemitTaxes containers at the
+ line item level to get more information about the type of tax and the amount.
+ fulfillment_hrefs (Union[Unset, list[str]]): This array contains a list of one or more
+ getShippingFulfillment call URIs that can be used to retrieve shipping fulfillments that have
+ been set up for the order.
+ fulfillment_start_instructions (Union[Unset, list['FulfillmentStartInstruction']]): This container consists of a
+ set of specifications for fulfilling the order, including the type of fulfillment, shipping carrier and service,
+ shipping address, and estimated delivery window. These instructions are derived from the buyer's and seller's
+ eBay account preferences, the listing parameters, and the buyer's checkout selections. The seller can use them
+ as a starting point for packaging, addressing, and shipping the order.
Note: Although this container is presented as an array, it currently returns
+ only one set of fulfillment specifications. Additional array members will be supported in future
+ functionality.
+ last_modified_date (Union[Unset, str]): The date and time that the order was last modified. This timestamp is in
+ ISO 8601 format, which uses the 24-hour Universal Coordinated Time (UTC) clock.
Format:
+ [YYYY]-[MM]-[DD]T[hh]:[mm]:[ss].[sss]Z
Example: 2015-08-04T19:09:02.768Z
+ line_items (Union[Unset, list['LineItem']]): This array contains the details for all line items that comprise
+ the order.
+ order_fulfillment_status (Union[Unset, str]): The degree to which fulfillment of the order is complete. See the
+ OrderFulfillmentStatus type definition for more information about each possible fulfillment
+ state. For implementation help, refer to eBay API documentation
+ order_id (Union[Unset, str]): The unique identifier of the order. This field is always returned.
+ order_payment_status (Union[Unset, str]): The enumeration value returned in this field indicates the current
+ payment status of an order, or in case of a refund request, the current status of the refund. See the
+ OrderPaymentStatusEnum type definition for more information about each possible payment/refund
+ state. For implementation help, refer to eBay API documentation
+ payment_summary (Union[Unset, PaymentSummary]): This type contains information about the various monetary
+ exchanges that apply to the net balance due for the order.
+ pricing_summary (Union[Unset, PricingSummary]): This type contains a summary of cumulative costs and charges for
+ all line items of an order, including item price, price adjustments, sales taxes, delivery costs, and order
+ discounts.
+ program (Union[Unset, Program]): This type is returned for order line items eligible for the Authenticity
+ Guarantee service and/or for order line items fulfilled by the eBay Fulfillment program or eBay shipping.
+ sales_record_reference (Union[Unset, str]): An eBay-generated identifier that is used to identify and manage
+ orders through the Selling Manager and Selling Manager Pro tools. This order identifier can also be found on the
+ Orders grid page and in the Sales Record pages in Seller Hub. A salesRecordReference number is
+ only generated and returned at the order level, and not at the order line item level.
In cases where the
+ seller does not have a Selling Manager or Selling Manager Pro subscription nor access to Seller Hub, this field
+ may not be returned.
+ seller_id (Union[Unset, str]): The unique eBay user ID of the seller who sold the order.
+ total_fee_basis_amount (Union[Unset, Amount]): This type defines the monetary value of an amount. It can provide
+ the amount in both the currency used on the eBay site where an item is being offered and the conversion of that
+ value into another currency, if applicable.
+ total_marketplace_fee (Union[Unset, Amount]): This type defines the monetary value of an amount. It can provide
+ the amount in both the currency used on the eBay site where an item is being offered and the conversion of that
+ value into another currency, if applicable.
+ """
+
+ buyer: Union[Unset, 'Buyer'] = UNSET
+ buyer_checkout_notes: Union[Unset, str] = UNSET
+ cancel_status: Union[Unset, 'CancelStatus'] = UNSET
+ creation_date: Union[Unset, str] = UNSET
+ ebay_collect_and_remit_tax: Union[Unset, bool] = UNSET
+ fulfillment_hrefs: Union[Unset, list[str]] = UNSET
+ fulfillment_start_instructions: Union[Unset, list['FulfillmentStartInstruction']] = UNSET
+ last_modified_date: Union[Unset, str] = UNSET
+ line_items: Union[Unset, list['LineItem']] = UNSET
+ order_fulfillment_status: Union[Unset, str] = UNSET
+ order_id: Union[Unset, str] = UNSET
+ order_payment_status: Union[Unset, str] = UNSET
+ payment_summary: Union[Unset, 'PaymentSummary'] = UNSET
+ pricing_summary: Union[Unset, 'PricingSummary'] = UNSET
+ program: Union[Unset, 'Program'] = UNSET
+ sales_record_reference: Union[Unset, str] = UNSET
+ seller_id: Union[Unset, str] = UNSET
+ total_fee_basis_amount: Union[Unset, 'Amount'] = UNSET
+ total_marketplace_fee: Union[Unset, 'Amount'] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.fulfillment_start_instruction import FulfillmentStartInstruction
+ from ..models.line_item import LineItem
+ from ..models.payment_summary import PaymentSummary
+ from ..models.buyer import Buyer
+ from ..models.pricing_summary import PricingSummary
+ from ..models.program import Program
+ from ..models.amount import Amount
+ from ..models.cancel_status import CancelStatus
+ buyer: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.buyer, Unset):
+ buyer = self.buyer.to_dict()
+
+ buyer_checkout_notes = self.buyer_checkout_notes
+
+ cancel_status: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.cancel_status, Unset):
+ cancel_status = self.cancel_status.to_dict()
+
+ creation_date = self.creation_date
+
+ ebay_collect_and_remit_tax = self.ebay_collect_and_remit_tax
+
+ fulfillment_hrefs: Union[Unset, list[str]] = UNSET
+ if not isinstance(self.fulfillment_hrefs, Unset):
+ fulfillment_hrefs = self.fulfillment_hrefs
+
+
+
+ fulfillment_start_instructions: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.fulfillment_start_instructions, Unset):
+ fulfillment_start_instructions = []
+ for fulfillment_start_instructions_item_data in self.fulfillment_start_instructions:
+ fulfillment_start_instructions_item = fulfillment_start_instructions_item_data.to_dict()
+ fulfillment_start_instructions.append(fulfillment_start_instructions_item)
+
+
+
+ last_modified_date = self.last_modified_date
+
+ line_items: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.line_items, Unset):
+ line_items = []
+ for line_items_item_data in self.line_items:
+ line_items_item = line_items_item_data.to_dict()
+ line_items.append(line_items_item)
+
+
+
+ order_fulfillment_status = self.order_fulfillment_status
+
+ order_id = self.order_id
+
+ order_payment_status = self.order_payment_status
+
+ payment_summary: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.payment_summary, Unset):
+ payment_summary = self.payment_summary.to_dict()
+
+ pricing_summary: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.pricing_summary, Unset):
+ pricing_summary = self.pricing_summary.to_dict()
+
+ program: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.program, Unset):
+ program = self.program.to_dict()
+
+ sales_record_reference = self.sales_record_reference
+
+ seller_id = self.seller_id
+
+ total_fee_basis_amount: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.total_fee_basis_amount, Unset):
+ total_fee_basis_amount = self.total_fee_basis_amount.to_dict()
+
+ total_marketplace_fee: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.total_marketplace_fee, Unset):
+ total_marketplace_fee = self.total_marketplace_fee.to_dict()
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if buyer is not UNSET:
+ field_dict["buyer"] = buyer
+ if buyer_checkout_notes is not UNSET:
+ field_dict["buyerCheckoutNotes"] = buyer_checkout_notes
+ if cancel_status is not UNSET:
+ field_dict["cancelStatus"] = cancel_status
+ if creation_date is not UNSET:
+ field_dict["creationDate"] = creation_date
+ if ebay_collect_and_remit_tax is not UNSET:
+ field_dict["ebayCollectAndRemitTax"] = ebay_collect_and_remit_tax
+ if fulfillment_hrefs is not UNSET:
+ field_dict["fulfillmentHrefs"] = fulfillment_hrefs
+ if fulfillment_start_instructions is not UNSET:
+ field_dict["fulfillmentStartInstructions"] = fulfillment_start_instructions
+ if last_modified_date is not UNSET:
+ field_dict["lastModifiedDate"] = last_modified_date
+ if line_items is not UNSET:
+ field_dict["lineItems"] = line_items
+ if order_fulfillment_status is not UNSET:
+ field_dict["orderFulfillmentStatus"] = order_fulfillment_status
+ if order_id is not UNSET:
+ field_dict["orderId"] = order_id
+ if order_payment_status is not UNSET:
+ field_dict["orderPaymentStatus"] = order_payment_status
+ if payment_summary is not UNSET:
+ field_dict["paymentSummary"] = payment_summary
+ if pricing_summary is not UNSET:
+ field_dict["pricingSummary"] = pricing_summary
+ if program is not UNSET:
+ field_dict["program"] = program
+ if sales_record_reference is not UNSET:
+ field_dict["salesRecordReference"] = sales_record_reference
+ if seller_id is not UNSET:
+ field_dict["sellerId"] = seller_id
+ if total_fee_basis_amount is not UNSET:
+ field_dict["totalFeeBasisAmount"] = total_fee_basis_amount
+ if total_marketplace_fee is not UNSET:
+ field_dict["totalMarketplaceFee"] = total_marketplace_fee
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.fulfillment_start_instruction import FulfillmentStartInstruction
+ from ..models.line_item import LineItem
+ from ..models.payment_summary import PaymentSummary
+ from ..models.buyer import Buyer
+ from ..models.pricing_summary import PricingSummary
+ from ..models.program import Program
+ from ..models.amount import Amount
+ from ..models.cancel_status import CancelStatus
+ d = dict(src_dict)
+ _buyer = d.pop("buyer", UNSET)
+ buyer: Union[Unset, Buyer]
+ if isinstance(_buyer, Unset):
+ buyer = UNSET
+ else:
+ buyer = Buyer.from_dict(_buyer)
+
+
+
+
+ buyer_checkout_notes = d.pop("buyerCheckoutNotes", UNSET)
+
+ _cancel_status = d.pop("cancelStatus", UNSET)
+ cancel_status: Union[Unset, CancelStatus]
+ if isinstance(_cancel_status, Unset):
+ cancel_status = UNSET
+ else:
+ cancel_status = CancelStatus.from_dict(_cancel_status)
+
+
+
+
+ creation_date = d.pop("creationDate", UNSET)
+
+ ebay_collect_and_remit_tax = d.pop("ebayCollectAndRemitTax", UNSET)
+
+ fulfillment_hrefs = cast(list[str], d.pop("fulfillmentHrefs", UNSET))
+
+
+ fulfillment_start_instructions = []
+ _fulfillment_start_instructions = d.pop("fulfillmentStartInstructions", UNSET)
+ for fulfillment_start_instructions_item_data in (_fulfillment_start_instructions or []):
+ fulfillment_start_instructions_item = FulfillmentStartInstruction.from_dict(fulfillment_start_instructions_item_data)
+
+
+
+ fulfillment_start_instructions.append(fulfillment_start_instructions_item)
+
+
+ last_modified_date = d.pop("lastModifiedDate", UNSET)
+
+ line_items = []
+ _line_items = d.pop("lineItems", UNSET)
+ for line_items_item_data in (_line_items or []):
+ line_items_item = LineItem.from_dict(line_items_item_data)
+
+
+
+ line_items.append(line_items_item)
+
+
+ order_fulfillment_status = d.pop("orderFulfillmentStatus", UNSET)
+
+ order_id = d.pop("orderId", UNSET)
+
+ order_payment_status = d.pop("orderPaymentStatus", UNSET)
+
+ _payment_summary = d.pop("paymentSummary", UNSET)
+ payment_summary: Union[Unset, PaymentSummary]
+ if isinstance(_payment_summary, Unset):
+ payment_summary = UNSET
+ else:
+ payment_summary = PaymentSummary.from_dict(_payment_summary)
+
+
+
+
+ _pricing_summary = d.pop("pricingSummary", UNSET)
+ pricing_summary: Union[Unset, PricingSummary]
+ if isinstance(_pricing_summary, Unset):
+ pricing_summary = UNSET
+ else:
+ pricing_summary = PricingSummary.from_dict(_pricing_summary)
+
+
+
+
+ _program = d.pop("program", UNSET)
+ program: Union[Unset, Program]
+ if isinstance(_program, Unset):
+ program = UNSET
+ else:
+ program = Program.from_dict(_program)
+
+
+
+
+ sales_record_reference = d.pop("salesRecordReference", UNSET)
+
+ seller_id = d.pop("sellerId", UNSET)
+
+ _total_fee_basis_amount = d.pop("totalFeeBasisAmount", UNSET)
+ total_fee_basis_amount: Union[Unset, Amount]
+ if isinstance(_total_fee_basis_amount, Unset):
+ total_fee_basis_amount = UNSET
+ else:
+ total_fee_basis_amount = Amount.from_dict(_total_fee_basis_amount)
+
+
+
+
+ _total_marketplace_fee = d.pop("totalMarketplaceFee", UNSET)
+ total_marketplace_fee: Union[Unset, Amount]
+ if isinstance(_total_marketplace_fee, Unset):
+ total_marketplace_fee = UNSET
+ else:
+ total_marketplace_fee = Amount.from_dict(_total_marketplace_fee)
+
+
+
+
+ order = cls(
+ buyer=buyer,
+ buyer_checkout_notes=buyer_checkout_notes,
+ cancel_status=cancel_status,
+ creation_date=creation_date,
+ ebay_collect_and_remit_tax=ebay_collect_and_remit_tax,
+ fulfillment_hrefs=fulfillment_hrefs,
+ fulfillment_start_instructions=fulfillment_start_instructions,
+ last_modified_date=last_modified_date,
+ line_items=line_items,
+ order_fulfillment_status=order_fulfillment_status,
+ order_id=order_id,
+ order_payment_status=order_payment_status,
+ payment_summary=payment_summary,
+ pricing_summary=pricing_summary,
+ program=program,
+ sales_record_reference=sales_record_reference,
+ seller_id=seller_id,
+ total_fee_basis_amount=total_fee_basis_amount,
+ total_marketplace_fee=total_marketplace_fee,
+ )
+
+
+ order.additional_properties = d
+ return order
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/order_line_items.py b/ebay_client/generated/fulfillment/models/order_line_items.py
new file mode 100644
index 0000000..517bc45
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/order_line_items.py
@@ -0,0 +1,88 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="OrderLineItems")
+
+
+
+@_attrs_define
+class OrderLineItems:
+ """ This type is used by the lineItems array that is used to identify one or more line items in the
+ order with the payment dispute.
+
+ Attributes:
+ item_id (Union[Unset, str]): The unique identifier of the eBay listing associated with the order.
+ line_item_id (Union[Unset, str]): The unique identifier of the line item within the order.
+ """
+
+ item_id: Union[Unset, str] = UNSET
+ line_item_id: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ item_id = self.item_id
+
+ line_item_id = self.line_item_id
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if item_id is not UNSET:
+ field_dict["itemId"] = item_id
+ if line_item_id is not UNSET:
+ field_dict["lineItemId"] = line_item_id
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ item_id = d.pop("itemId", UNSET)
+
+ line_item_id = d.pop("lineItemId", UNSET)
+
+ order_line_items = cls(
+ item_id=item_id,
+ line_item_id=line_item_id,
+ )
+
+
+ order_line_items.additional_properties = d
+ return order_line_items
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/order_refund.py b/ebay_client/generated/fulfillment/models/order_refund.py
new file mode 100644
index 0000000..baf7132
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/order_refund.py
@@ -0,0 +1,143 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.amount import Amount
+
+
+
+
+
+T = TypeVar("T", bound="OrderRefund")
+
+
+
+@_attrs_define
+class OrderRefund:
+ """ This type contains information about a refund issued for an order. This does not include line item level refunds.
+
+ Attributes:
+ amount (Union[Unset, Amount]): This type defines the monetary value of an amount. It can provide the amount in
+ both the currency used on the eBay site where an item is being offered and the conversion of that value into
+ another currency, if applicable.
+ refund_date (Union[Unset, str]): The date and time that the refund was issued. This timestamp is in ISO 8601
+ format, which uses the 24-hour Universal Coordinated Time (UTC) clock. This field is not returned until the
+ refund has been issued.
Format: [YYYY]-[MM]-[DD]T[hh]:[mm]:[ss].[sss]Z
+
Example: 2015-08-04T19:09:02.768Z
+ refund_id (Union[Unset, str]): Unique identifier of a refund that was initiated for an order through the
+ issueRefund method. If the issueRefund method was used to issue one or more refunds at the line
+ item level, these refund identifiers are returned at the line item level instead
+ (lineItems.refunds.refundId field).
A refundId value is returned in the response of the
+ issueRefund method, and this same value will be returned in the getOrders and getOrders
+ responses for pending and completed refunds. For other refunds, see the refundReferenceId field.
+ refund_reference_id (Union[Unset, str]): The eBay-generated unique identifier for the refund. This field is not
+ returned until the refund has been issued.
+ refund_status (Union[Unset, str]): This enumeration value indicates the current status of the refund to the
+ buyer. This container is always returned for each refund. For implementation help, refer to eBay API
+ documentation
+ """
+
+ amount: Union[Unset, 'Amount'] = UNSET
+ refund_date: Union[Unset, str] = UNSET
+ refund_id: Union[Unset, str] = UNSET
+ refund_reference_id: Union[Unset, str] = UNSET
+ refund_status: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.amount import Amount
+ amount: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.amount, Unset):
+ amount = self.amount.to_dict()
+
+ refund_date = self.refund_date
+
+ refund_id = self.refund_id
+
+ refund_reference_id = self.refund_reference_id
+
+ refund_status = self.refund_status
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if amount is not UNSET:
+ field_dict["amount"] = amount
+ if refund_date is not UNSET:
+ field_dict["refundDate"] = refund_date
+ if refund_id is not UNSET:
+ field_dict["refundId"] = refund_id
+ if refund_reference_id is not UNSET:
+ field_dict["refundReferenceId"] = refund_reference_id
+ if refund_status is not UNSET:
+ field_dict["refundStatus"] = refund_status
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.amount import Amount
+ d = dict(src_dict)
+ _amount = d.pop("amount", UNSET)
+ amount: Union[Unset, Amount]
+ if isinstance(_amount, Unset):
+ amount = UNSET
+ else:
+ amount = Amount.from_dict(_amount)
+
+
+
+
+ refund_date = d.pop("refundDate", UNSET)
+
+ refund_id = d.pop("refundId", UNSET)
+
+ refund_reference_id = d.pop("refundReferenceId", UNSET)
+
+ refund_status = d.pop("refundStatus", UNSET)
+
+ order_refund = cls(
+ amount=amount,
+ refund_date=refund_date,
+ refund_id=refund_id,
+ refund_reference_id=refund_reference_id,
+ refund_status=refund_status,
+ )
+
+
+ order_refund.additional_properties = d
+ return order_refund
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/order_search_paged_collection.py b/ebay_client/generated/fulfillment/models/order_search_paged_collection.py
new file mode 100644
index 0000000..592c457
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/order_search_paged_collection.py
@@ -0,0 +1,208 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.order import Order
+ from ..models.error import Error
+
+
+
+
+
+T = TypeVar("T", bound="OrderSearchPagedCollection")
+
+
+
+@_attrs_define
+class OrderSearchPagedCollection:
+ """ This type contains the specifications for the collection of orders that match the search or filter criteria of a
+ getOrders call. The collection is grouped into a result set, and based on the query parameters that are set
+ (including the limit and offset parameters), the result set may included multiple
+ pages, but only one page of the result set can be viewed at a time.
+
+ Attributes:
+ href (Union[Unset, str]): The URI of the getOrders call request that produced the current page of the
+ result set.
+ limit (Union[Unset, int]): The maximum number of orders returned per page of the result set. The
+ limit value can be passed in as a query parameter, or if omitted, its value defaults to
+ 50.
Note: If this is the last or only page of the
+ result set, the page may contain fewer orders than the limit value. To determine the number of
+ pages in a result set, divide the total value (total number of orders matching input criteria) by this
+ limit value, and then round up to the next integer. For example, if the total value was
+ 120 (120 total orders) and the limit value was 50 (show 50 orders per
+ page), the total number of pages in the result set is three, so the seller would have to make three separate
+ getOrders calls to view all orders matching the input criteria. Default:
+ 50
+ next_ (Union[Unset, str]): The getOrders call URI to use if you wish to view the next page of the result
+ set. For example, the following URI returns records 41 thru 50 from the collection of orders:
+
path/order?limit=10&offset=40
This field is only returned if there is a next
+ page of results to view based on the current input criteria.
+ offset (Union[Unset, int]): The number of results skipped in the result set before listing the first returned
+ result. This value can be set in the request with the offset query parameter. Note: The items in a paginated result set use a zero-based list where the
+ first item in the list has an offset of 0.
+ orders (Union[Unset, list['Order']]): This array contains one or more orders that are part of the current result
+ set, that is controlled by the input criteria. The details of each order include information about the buyer,
+ order history, shipping fulfillments, line items, costs, payments, and order fulfillment status.
By
+ default, orders are returned according to creation date (oldest to newest), but the order will vary according to
+ any filter that is set in request.
+ prev (Union[Unset, str]): The getOrders call URI for the previous result set. For example, the following
+ URI returns orders 21 thru 30 from the collection of orders:
+
path/order?limit=10&offset=20
This field is only returned if there is a
+ previous page of results to view based on the current input criteria.
+ total (Union[Unset, int]): The total number of orders in the results set based on the current input
+ criteria.
Note: If no orders are found, this field is returned
+ with a value of 0.
+ warnings (Union[Unset, list['Error']]): This array is returned if one or more errors or warnings occur with the
+ call request.
+ """
+
+ href: Union[Unset, str] = UNSET
+ limit: Union[Unset, int] = UNSET
+ next_: Union[Unset, str] = UNSET
+ offset: Union[Unset, int] = UNSET
+ orders: Union[Unset, list['Order']] = UNSET
+ prev: Union[Unset, str] = UNSET
+ total: Union[Unset, int] = UNSET
+ warnings: Union[Unset, list['Error']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.order import Order
+ from ..models.error import Error
+ href = self.href
+
+ limit = self.limit
+
+ next_ = self.next_
+
+ offset = self.offset
+
+ orders: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.orders, Unset):
+ orders = []
+ for orders_item_data in self.orders:
+ orders_item = orders_item_data.to_dict()
+ orders.append(orders_item)
+
+
+
+ prev = self.prev
+
+ total = self.total
+
+ warnings: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.warnings, Unset):
+ warnings = []
+ for warnings_item_data in self.warnings:
+ warnings_item = warnings_item_data.to_dict()
+ warnings.append(warnings_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if href is not UNSET:
+ field_dict["href"] = href
+ if limit is not UNSET:
+ field_dict["limit"] = limit
+ if next_ is not UNSET:
+ field_dict["next"] = next_
+ if offset is not UNSET:
+ field_dict["offset"] = offset
+ if orders is not UNSET:
+ field_dict["orders"] = orders
+ if prev is not UNSET:
+ field_dict["prev"] = prev
+ if total is not UNSET:
+ field_dict["total"] = total
+ if warnings is not UNSET:
+ field_dict["warnings"] = warnings
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.order import Order
+ from ..models.error import Error
+ d = dict(src_dict)
+ href = d.pop("href", UNSET)
+
+ limit = d.pop("limit", UNSET)
+
+ next_ = d.pop("next", UNSET)
+
+ offset = d.pop("offset", UNSET)
+
+ orders = []
+ _orders = d.pop("orders", UNSET)
+ for orders_item_data in (_orders or []):
+ orders_item = Order.from_dict(orders_item_data)
+
+
+
+ orders.append(orders_item)
+
+
+ prev = d.pop("prev", UNSET)
+
+ total = d.pop("total", UNSET)
+
+ warnings = []
+ _warnings = d.pop("warnings", UNSET)
+ for warnings_item_data in (_warnings or []):
+ warnings_item = Error.from_dict(warnings_item_data)
+
+
+
+ warnings.append(warnings_item)
+
+
+ order_search_paged_collection = cls(
+ href=href,
+ limit=limit,
+ next_=next_,
+ offset=offset,
+ orders=orders,
+ prev=prev,
+ total=total,
+ warnings=warnings,
+ )
+
+
+ order_search_paged_collection.additional_properties = d
+ return order_search_paged_collection
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/payment.py b/ebay_client/generated/fulfillment/models/payment.py
new file mode 100644
index 0000000..bc6a838
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/payment.py
@@ -0,0 +1,171 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.payment_hold import PaymentHold
+ from ..models.amount import Amount
+
+
+
+
+
+T = TypeVar("T", bound="Payment")
+
+
+
+@_attrs_define
+class Payment:
+ """ This type is used to provide details about the seller payments for an order.
+
+ Attributes:
+ amount (Union[Unset, Amount]): This type defines the monetary value of an amount. It can provide the amount in
+ both the currency used on the eBay site where an item is being offered and the conversion of that value into
+ another currency, if applicable.
+ payment_date (Union[Unset, str]): The date and time that the payment was received by the seller. This field will
+ not be returned if buyer has yet to pay for the order. This timestamp is in ISO 8601 format, which uses the
+ 24-hour Universal Coordinated Time (UTC) clock.
Format:
+ [YYYY]-[MM]-[DD]T[hh]:[mm]:[ss].[sss]Z
Example: 2015-08-04T19:09:02.768Z
+ payment_holds (Union[Unset, list['PaymentHold']]): This container is only returned if eBay is temporarily
+ holding the seller's funds for the order. If a payment hold has been placed on the order, this container
+ includes the reason for the payment hold, the expected release date of the funds into the seller's account, the
+ current state of the hold, and as soon as the payment hold has been released, the actual release date.
+ payment_method (Union[Unset, str]): The payment method used to pay for the order. See the
+ PaymentMethodTypeEnum type for more information on the payment methods. For implementation
+ help, refer to eBay API documentation
+ payment_reference_id (Union[Unset, str]): This field is only returned if payment has been made by the buyer, and
+ the paymentMethod is ESCROW. This field contains a special ID for ESCROW.
+ payment_status (Union[Unset, str]): The enumeration value returned in this field indicates the status of the
+ payment for the order. See the PaymentStatusEnum type definition for more information on the
+ possible payment states. For implementation help, refer to eBay API documentation
+ """
+
+ amount: Union[Unset, 'Amount'] = UNSET
+ payment_date: Union[Unset, str] = UNSET
+ payment_holds: Union[Unset, list['PaymentHold']] = UNSET
+ payment_method: Union[Unset, str] = UNSET
+ payment_reference_id: Union[Unset, str] = UNSET
+ payment_status: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.payment_hold import PaymentHold
+ from ..models.amount import Amount
+ amount: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.amount, Unset):
+ amount = self.amount.to_dict()
+
+ payment_date = self.payment_date
+
+ payment_holds: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.payment_holds, Unset):
+ payment_holds = []
+ for payment_holds_item_data in self.payment_holds:
+ payment_holds_item = payment_holds_item_data.to_dict()
+ payment_holds.append(payment_holds_item)
+
+
+
+ payment_method = self.payment_method
+
+ payment_reference_id = self.payment_reference_id
+
+ payment_status = self.payment_status
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if amount is not UNSET:
+ field_dict["amount"] = amount
+ if payment_date is not UNSET:
+ field_dict["paymentDate"] = payment_date
+ if payment_holds is not UNSET:
+ field_dict["paymentHolds"] = payment_holds
+ if payment_method is not UNSET:
+ field_dict["paymentMethod"] = payment_method
+ if payment_reference_id is not UNSET:
+ field_dict["paymentReferenceId"] = payment_reference_id
+ if payment_status is not UNSET:
+ field_dict["paymentStatus"] = payment_status
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.payment_hold import PaymentHold
+ from ..models.amount import Amount
+ d = dict(src_dict)
+ _amount = d.pop("amount", UNSET)
+ amount: Union[Unset, Amount]
+ if isinstance(_amount, Unset):
+ amount = UNSET
+ else:
+ amount = Amount.from_dict(_amount)
+
+
+
+
+ payment_date = d.pop("paymentDate", UNSET)
+
+ payment_holds = []
+ _payment_holds = d.pop("paymentHolds", UNSET)
+ for payment_holds_item_data in (_payment_holds or []):
+ payment_holds_item = PaymentHold.from_dict(payment_holds_item_data)
+
+
+
+ payment_holds.append(payment_holds_item)
+
+
+ payment_method = d.pop("paymentMethod", UNSET)
+
+ payment_reference_id = d.pop("paymentReferenceId", UNSET)
+
+ payment_status = d.pop("paymentStatus", UNSET)
+
+ payment = cls(
+ amount=amount,
+ payment_date=payment_date,
+ payment_holds=payment_holds,
+ payment_method=payment_method,
+ payment_reference_id=payment_reference_id,
+ payment_status=payment_status,
+ )
+
+
+ payment.additional_properties = d
+ return payment
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/payment_dispute.py b/ebay_client/generated/fulfillment/models/payment_dispute.py
new file mode 100644
index 0000000..6877c70
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/payment_dispute.py
@@ -0,0 +1,429 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.order_line_items import OrderLineItems
+ from ..models.evidence_request import EvidenceRequest
+ from ..models.return_address import ReturnAddress
+ from ..models.dispute_evidence import DisputeEvidence
+ from ..models.info_from_buyer import InfoFromBuyer
+ from ..models.monetary_transaction import MonetaryTransaction
+ from ..models.simple_amount import SimpleAmount
+ from ..models.payment_dispute_outcome_detail import PaymentDisputeOutcomeDetail
+
+
+
+
+
+T = TypeVar("T", bound="PaymentDispute")
+
+
+
+@_attrs_define
+class PaymentDispute:
+ """ This type is used by the base response of the getPaymentDispute method. The
+ getPaymentDispute method retrieves detailed information on a specific payment dispute.
+
+ Attributes:
+ amount (Union[Unset, SimpleAmount]): This type defines the monetary value of the payment dispute, and the
+ currency used.
+ available_choices (Union[Unset, list[str]]): The value(s) returned in this array indicate the choices that the
+ seller has when responding to the payment dispute. Once the seller has responded to the payment dispute, this
+ field will no longer be shown, and instead, the sellerResponse field will show the decision
+ that the seller made.
+ buyer_provided (Union[Unset, InfoFromBuyer]): This container is returned if the buyer is returning one or more
+ line items in an order that is associated with the payment dispute, and that buyer has provided return shipping
+ tracking information and/or a note about the return.
+ buyer_username (Union[Unset, str]): This is the eBay user ID of the buyer that initiated the payment dispute.
+ closed_date (Union[Unset, str]): The timestamp in this field shows the date/time when the payment dispute was
+ closed, so this field is only returned for payment disputes in the CLOSED state.
The
+ timestamps returned here use the ISO-8601 24-hour date and time format, and the time zone used is Universal
+ Coordinated Time (UTC), also known as Greenwich Mean Time (GMT), or Zulu. The ISO-8601 format looks like this:
+ yyyy-MM-ddThh:mm.ss.sssZ. An example would be 2019-08-04T19:09:02.768Z.
+ evidence (Union[Unset, list['DisputeEvidence']]): This container shows any evidence that has been provided by
+ the seller to contest the payment dispute. Evidence may include shipment tracking information, proof of
+ authentication documentation, image(s) to proof that an item is as described, or financial
+ documentation/invoice.
This container is only returned if the seller has provided at least one document
+ used as evidence against the payment dispute.
+ evidence_requests (Union[Unset, list['EvidenceRequest']]): This container is returned if one or more evidence
+ documents are being requested from the seller.
+ line_items (Union[Unset, list['OrderLineItems']]): This array is used to identify one or more order line items
+ associated with the payment dispute. There will always be at least one itemId/lineItemId pair
+ returned in this array.
+ monetary_transactions (Union[Unset, list['MonetaryTransaction']]): This array provide details about one or more
+ monetary transactions that occur as part of a payment dispute. This array is only returned once one or more
+ monetary transacations occur with a payment dispute.
+ note (Union[Unset, str]): This field shows information that the seller provides about the dispute, such as the
+ basis for the dispute, any relevant evidence, tracking numbers, and so forth.
This field is limited to
+ 1000 characters.
+ open_date (Union[Unset, str]): The timestamp in this field shows the date/time when the payment dispute was
+ opened. This field is returned for payment disputes in all states.
The timestamps returned here use the
+ ISO-8601 24-hour date and time format, and the time zone used is Universal Coordinated Time (UTC), also known as
+ Greenwich Mean Time (GMT), or Zulu. The ISO-8601 format looks like this: yyyy-MM-ddThh:mm.ss.sssZ. An
+ example would be 2019-08-04T19:09:02.768Z.
+ order_id (Union[Unset, str]): This is the unique identifier of the order involved in the payment dispute.
+ payment_dispute_id (Union[Unset, str]): This is the unique identifier of the payment dispute. This is the same
+ identifier that is passed in to the call URI. This identifier is automatically created by eBay once the payment
+ dispute comes into the eBay system.
+ payment_dispute_status (Union[Unset, str]): The enumeration value in this field gives the current status of the
+ payment dispute. The status of a payment dispute partially determines other fields that are returned in the
+ response. For implementation help, refer to eBay API documentation
+ reason (Union[Unset, str]): The enumeration value in this field gives the reason why the buyer initiated the
+ payment dispute. See DisputeReasonEnum type for a description of the supported reasons that
+ buyers can give for initiating a payment dispute. For implementation help, refer to eBay API
+ documentation
+ resolution (Union[Unset, PaymentDisputeOutcomeDetail]): This type is used by the resolution
+ container that is returned for payment disputes that have been resolved.
+ respond_by_date (Union[Unset, str]): The timestamp in this field shows the date/time when the seller must
+ response to a payment dispute, so this field is only returned for payment disputes in the
+ ACTION_NEEDED state. For payment disputes that currently require action by the seller, that same
+ seller should look at the availableChoices array to see the available actions.
The
+ timestamps returned here use the ISO-8601 24-hour date and time format, and the time zone used is Universal
+ Coordinated Time (UTC), also known as Greenwich Mean Time (GMT), or Zulu. The ISO-8601 format looks like this:
+ yyyy-MM-ddThh:mm.ss.sssZ. An example would be 2019-08-04T19:09:02.768Z.
+ return_address (Union[Unset, ReturnAddress]): This type is used by the payment dispute methods, and is relevant
+ if the buyer will be returning the item to the seller.
+ revision (Union[Unset, int]): This integer value indicates the revision number of the payment dispute. Each time
+ an action is taken against a payment dispute, this integer value increases by 1.
+ seller_response (Union[Unset, str]): The enumeration value returned in this field indicates how the seller has
+ responded to the payment dispute. The seller has the option of accepting the payment dispute and agreeing to
+ issue a refund, accepting the payment dispute and agreeing to issue a refund as long as the buyer returns the
+ item, or contesting the payment dispute. This field is returned as soon as the seller makes an initial decision
+ on the payment dispute. For implementation help, refer to eBay API documentation
+ """
+
+ amount: Union[Unset, 'SimpleAmount'] = UNSET
+ available_choices: Union[Unset, list[str]] = UNSET
+ buyer_provided: Union[Unset, 'InfoFromBuyer'] = UNSET
+ buyer_username: Union[Unset, str] = UNSET
+ closed_date: Union[Unset, str] = UNSET
+ evidence: Union[Unset, list['DisputeEvidence']] = UNSET
+ evidence_requests: Union[Unset, list['EvidenceRequest']] = UNSET
+ line_items: Union[Unset, list['OrderLineItems']] = UNSET
+ monetary_transactions: Union[Unset, list['MonetaryTransaction']] = UNSET
+ note: Union[Unset, str] = UNSET
+ open_date: Union[Unset, str] = UNSET
+ order_id: Union[Unset, str] = UNSET
+ payment_dispute_id: Union[Unset, str] = UNSET
+ payment_dispute_status: Union[Unset, str] = UNSET
+ reason: Union[Unset, str] = UNSET
+ resolution: Union[Unset, 'PaymentDisputeOutcomeDetail'] = UNSET
+ respond_by_date: Union[Unset, str] = UNSET
+ return_address: Union[Unset, 'ReturnAddress'] = UNSET
+ revision: Union[Unset, int] = UNSET
+ seller_response: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.order_line_items import OrderLineItems
+ from ..models.evidence_request import EvidenceRequest
+ from ..models.return_address import ReturnAddress
+ from ..models.dispute_evidence import DisputeEvidence
+ from ..models.info_from_buyer import InfoFromBuyer
+ from ..models.monetary_transaction import MonetaryTransaction
+ from ..models.simple_amount import SimpleAmount
+ from ..models.payment_dispute_outcome_detail import PaymentDisputeOutcomeDetail
+ amount: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.amount, Unset):
+ amount = self.amount.to_dict()
+
+ available_choices: Union[Unset, list[str]] = UNSET
+ if not isinstance(self.available_choices, Unset):
+ available_choices = self.available_choices
+
+
+
+ buyer_provided: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.buyer_provided, Unset):
+ buyer_provided = self.buyer_provided.to_dict()
+
+ buyer_username = self.buyer_username
+
+ closed_date = self.closed_date
+
+ evidence: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.evidence, Unset):
+ evidence = []
+ for evidence_item_data in self.evidence:
+ evidence_item = evidence_item_data.to_dict()
+ evidence.append(evidence_item)
+
+
+
+ evidence_requests: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.evidence_requests, Unset):
+ evidence_requests = []
+ for evidence_requests_item_data in self.evidence_requests:
+ evidence_requests_item = evidence_requests_item_data.to_dict()
+ evidence_requests.append(evidence_requests_item)
+
+
+
+ line_items: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.line_items, Unset):
+ line_items = []
+ for line_items_item_data in self.line_items:
+ line_items_item = line_items_item_data.to_dict()
+ line_items.append(line_items_item)
+
+
+
+ monetary_transactions: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.monetary_transactions, Unset):
+ monetary_transactions = []
+ for monetary_transactions_item_data in self.monetary_transactions:
+ monetary_transactions_item = monetary_transactions_item_data.to_dict()
+ monetary_transactions.append(monetary_transactions_item)
+
+
+
+ note = self.note
+
+ open_date = self.open_date
+
+ order_id = self.order_id
+
+ payment_dispute_id = self.payment_dispute_id
+
+ payment_dispute_status = self.payment_dispute_status
+
+ reason = self.reason
+
+ resolution: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.resolution, Unset):
+ resolution = self.resolution.to_dict()
+
+ respond_by_date = self.respond_by_date
+
+ return_address: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.return_address, Unset):
+ return_address = self.return_address.to_dict()
+
+ revision = self.revision
+
+ seller_response = self.seller_response
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if amount is not UNSET:
+ field_dict["amount"] = amount
+ if available_choices is not UNSET:
+ field_dict["availableChoices"] = available_choices
+ if buyer_provided is not UNSET:
+ field_dict["buyerProvided"] = buyer_provided
+ if buyer_username is not UNSET:
+ field_dict["buyerUsername"] = buyer_username
+ if closed_date is not UNSET:
+ field_dict["closedDate"] = closed_date
+ if evidence is not UNSET:
+ field_dict["evidence"] = evidence
+ if evidence_requests is not UNSET:
+ field_dict["evidenceRequests"] = evidence_requests
+ if line_items is not UNSET:
+ field_dict["lineItems"] = line_items
+ if monetary_transactions is not UNSET:
+ field_dict["monetaryTransactions"] = monetary_transactions
+ if note is not UNSET:
+ field_dict["note"] = note
+ if open_date is not UNSET:
+ field_dict["openDate"] = open_date
+ if order_id is not UNSET:
+ field_dict["orderId"] = order_id
+ if payment_dispute_id is not UNSET:
+ field_dict["paymentDisputeId"] = payment_dispute_id
+ if payment_dispute_status is not UNSET:
+ field_dict["paymentDisputeStatus"] = payment_dispute_status
+ if reason is not UNSET:
+ field_dict["reason"] = reason
+ if resolution is not UNSET:
+ field_dict["resolution"] = resolution
+ if respond_by_date is not UNSET:
+ field_dict["respondByDate"] = respond_by_date
+ if return_address is not UNSET:
+ field_dict["returnAddress"] = return_address
+ if revision is not UNSET:
+ field_dict["revision"] = revision
+ if seller_response is not UNSET:
+ field_dict["sellerResponse"] = seller_response
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.order_line_items import OrderLineItems
+ from ..models.evidence_request import EvidenceRequest
+ from ..models.return_address import ReturnAddress
+ from ..models.dispute_evidence import DisputeEvidence
+ from ..models.info_from_buyer import InfoFromBuyer
+ from ..models.monetary_transaction import MonetaryTransaction
+ from ..models.simple_amount import SimpleAmount
+ from ..models.payment_dispute_outcome_detail import PaymentDisputeOutcomeDetail
+ d = dict(src_dict)
+ _amount = d.pop("amount", UNSET)
+ amount: Union[Unset, SimpleAmount]
+ if isinstance(_amount, Unset):
+ amount = UNSET
+ else:
+ amount = SimpleAmount.from_dict(_amount)
+
+
+
+
+ available_choices = cast(list[str], d.pop("availableChoices", UNSET))
+
+
+ _buyer_provided = d.pop("buyerProvided", UNSET)
+ buyer_provided: Union[Unset, InfoFromBuyer]
+ if isinstance(_buyer_provided, Unset):
+ buyer_provided = UNSET
+ else:
+ buyer_provided = InfoFromBuyer.from_dict(_buyer_provided)
+
+
+
+
+ buyer_username = d.pop("buyerUsername", UNSET)
+
+ closed_date = d.pop("closedDate", UNSET)
+
+ evidence = []
+ _evidence = d.pop("evidence", UNSET)
+ for evidence_item_data in (_evidence or []):
+ evidence_item = DisputeEvidence.from_dict(evidence_item_data)
+
+
+
+ evidence.append(evidence_item)
+
+
+ evidence_requests = []
+ _evidence_requests = d.pop("evidenceRequests", UNSET)
+ for evidence_requests_item_data in (_evidence_requests or []):
+ evidence_requests_item = EvidenceRequest.from_dict(evidence_requests_item_data)
+
+
+
+ evidence_requests.append(evidence_requests_item)
+
+
+ line_items = []
+ _line_items = d.pop("lineItems", UNSET)
+ for line_items_item_data in (_line_items or []):
+ line_items_item = OrderLineItems.from_dict(line_items_item_data)
+
+
+
+ line_items.append(line_items_item)
+
+
+ monetary_transactions = []
+ _monetary_transactions = d.pop("monetaryTransactions", UNSET)
+ for monetary_transactions_item_data in (_monetary_transactions or []):
+ monetary_transactions_item = MonetaryTransaction.from_dict(monetary_transactions_item_data)
+
+
+
+ monetary_transactions.append(monetary_transactions_item)
+
+
+ note = d.pop("note", UNSET)
+
+ open_date = d.pop("openDate", UNSET)
+
+ order_id = d.pop("orderId", UNSET)
+
+ payment_dispute_id = d.pop("paymentDisputeId", UNSET)
+
+ payment_dispute_status = d.pop("paymentDisputeStatus", UNSET)
+
+ reason = d.pop("reason", UNSET)
+
+ _resolution = d.pop("resolution", UNSET)
+ resolution: Union[Unset, PaymentDisputeOutcomeDetail]
+ if isinstance(_resolution, Unset):
+ resolution = UNSET
+ else:
+ resolution = PaymentDisputeOutcomeDetail.from_dict(_resolution)
+
+
+
+
+ respond_by_date = d.pop("respondByDate", UNSET)
+
+ _return_address = d.pop("returnAddress", UNSET)
+ return_address: Union[Unset, ReturnAddress]
+ if isinstance(_return_address, Unset):
+ return_address = UNSET
+ else:
+ return_address = ReturnAddress.from_dict(_return_address)
+
+
+
+
+ revision = d.pop("revision", UNSET)
+
+ seller_response = d.pop("sellerResponse", UNSET)
+
+ payment_dispute = cls(
+ amount=amount,
+ available_choices=available_choices,
+ buyer_provided=buyer_provided,
+ buyer_username=buyer_username,
+ closed_date=closed_date,
+ evidence=evidence,
+ evidence_requests=evidence_requests,
+ line_items=line_items,
+ monetary_transactions=monetary_transactions,
+ note=note,
+ open_date=open_date,
+ order_id=order_id,
+ payment_dispute_id=payment_dispute_id,
+ payment_dispute_status=payment_dispute_status,
+ reason=reason,
+ resolution=resolution,
+ respond_by_date=respond_by_date,
+ return_address=return_address,
+ revision=revision,
+ seller_response=seller_response,
+ )
+
+
+ payment_dispute.additional_properties = d
+ return payment_dispute
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/payment_dispute_activity.py b/ebay_client/generated/fulfillment/models/payment_dispute_activity.py
new file mode 100644
index 0000000..facf866
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/payment_dispute_activity.py
@@ -0,0 +1,108 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="PaymentDisputeActivity")
+
+
+
+@_attrs_define
+class PaymentDisputeActivity:
+ """ This type is used by each recorded activity on a payment dispute, from creation to resolution.
+
+ Attributes:
+ activity_date (Union[Unset, str]): The timestamp in this field shows the date/time of the payment dispute
+ activity.
The timestamps returned here use the ISO-8601 24-hour date and time format, and the time zone
+ used is Universal Coordinated Time (UTC), also known as Greenwich Mean Time (GMT), or Zulu. The ISO-8601 format
+ looks like this: yyyy-MM-ddThh:mm.ss.sssZ. An example would be 2019-08-04T19:09:02.768Z.
+ activity_type (Union[Unset, str]): This enumeration value indicates the type of activity that occured on the
+ payment dispute. For example, a value of DISPUTE_OPENED is returned when a payment disute is first
+ created, a value indicating the seller's decision on the dispute, such as SELLER_CONTEST, is
+ returned when seller makes a decision to accept or contest dispute, and a value of DISPUTE_CLOSED
+ is returned when a payment disute is resolved. See ActivityEnum for an explanation of each of
+ the values that may be returned here. For implementation help, refer to eBay API documentation
+ actor (Union[Unset, str]): This enumeration value indicates the actor that performed the action. Possible values
+ include the BUYER, SELLER, CS_AGENT (eBay customer service), or
+ SYSTEM. For implementation help, refer to eBay API documentation
+ """
+
+ activity_date: Union[Unset, str] = UNSET
+ activity_type: Union[Unset, str] = UNSET
+ actor: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ activity_date = self.activity_date
+
+ activity_type = self.activity_type
+
+ actor = self.actor
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if activity_date is not UNSET:
+ field_dict["activityDate"] = activity_date
+ if activity_type is not UNSET:
+ field_dict["activityType"] = activity_type
+ if actor is not UNSET:
+ field_dict["actor"] = actor
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ activity_date = d.pop("activityDate", UNSET)
+
+ activity_type = d.pop("activityType", UNSET)
+
+ actor = d.pop("actor", UNSET)
+
+ payment_dispute_activity = cls(
+ activity_date=activity_date,
+ activity_type=activity_type,
+ actor=actor,
+ )
+
+
+ payment_dispute_activity.additional_properties = d
+ return payment_dispute_activity
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/payment_dispute_activity_history.py b/ebay_client/generated/fulfillment/models/payment_dispute_activity_history.py
new file mode 100644
index 0000000..dbec64e
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/payment_dispute_activity_history.py
@@ -0,0 +1,101 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.payment_dispute_activity import PaymentDisputeActivity
+
+
+
+
+
+T = TypeVar("T", bound="PaymentDisputeActivityHistory")
+
+
+
+@_attrs_define
+class PaymentDisputeActivityHistory:
+ """ This type is used by the base response of the getActivities method, and includes a log of all
+ activities of a payment dispute, from creation to resolution.
+
+ Attributes:
+ activity (Union[Unset, list['PaymentDisputeActivity']]): This array holds all activities of a payment dispute,
+ from creation to resolution. For each activity, the activity type, the actor, and a timestamp is shown. The
+ getActivities response is dynamic, and grows with each recorded activity.
+ """
+
+ activity: Union[Unset, list['PaymentDisputeActivity']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.payment_dispute_activity import PaymentDisputeActivity
+ activity: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.activity, Unset):
+ activity = []
+ for activity_item_data in self.activity:
+ activity_item = activity_item_data.to_dict()
+ activity.append(activity_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if activity is not UNSET:
+ field_dict["activity"] = activity
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.payment_dispute_activity import PaymentDisputeActivity
+ d = dict(src_dict)
+ activity = []
+ _activity = d.pop("activity", UNSET)
+ for activity_item_data in (_activity or []):
+ activity_item = PaymentDisputeActivity.from_dict(activity_item_data)
+
+
+
+ activity.append(activity_item)
+
+
+ payment_dispute_activity_history = cls(
+ activity=activity,
+ )
+
+
+ payment_dispute_activity_history.additional_properties = d
+ return payment_dispute_activity_history
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/payment_dispute_outcome_detail.py b/ebay_client/generated/fulfillment/models/payment_dispute_outcome_detail.py
new file mode 100644
index 0000000..fac9dbb
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/payment_dispute_outcome_detail.py
@@ -0,0 +1,179 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.simple_amount import SimpleAmount
+
+
+
+
+
+T = TypeVar("T", bound="PaymentDisputeOutcomeDetail")
+
+
+
+@_attrs_define
+class PaymentDisputeOutcomeDetail:
+ """ This type is used by the resolution container that is returned for payment disputes that have been
+ resolved.
+
+ Attributes:
+ fees (Union[Unset, SimpleAmount]): This type defines the monetary value of the payment dispute, and the currency
+ used.
+ protected_amount (Union[Unset, SimpleAmount]): This type defines the monetary value of the payment dispute, and
+ the currency used.
+ protection_status (Union[Unset, str]): This enumeration value indicates if the seller is fully protected,
+ partially protected, or not protected by eBay for the payment dispute. This field is always returned once the
+ payment dispute is resolved. For implementation help, refer to eBay API documentation
+ reason_for_closure (Union[Unset, str]): The enumeration value returned in this field indicates the outcome of
+ the payment dispute for the seller. This field is always returned once the payment dispute is resolved. For
+ implementation help, refer to eBay API documentation
+ recoup_amount (Union[Unset, SimpleAmount]): This type defines the monetary value of the payment dispute, and the
+ currency used.
+ total_fee_credit (Union[Unset, SimpleAmount]): This type defines the monetary value of the payment dispute, and
+ the currency used.
+ """
+
+ fees: Union[Unset, 'SimpleAmount'] = UNSET
+ protected_amount: Union[Unset, 'SimpleAmount'] = UNSET
+ protection_status: Union[Unset, str] = UNSET
+ reason_for_closure: Union[Unset, str] = UNSET
+ recoup_amount: Union[Unset, 'SimpleAmount'] = UNSET
+ total_fee_credit: Union[Unset, 'SimpleAmount'] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.simple_amount import SimpleAmount
+ fees: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.fees, Unset):
+ fees = self.fees.to_dict()
+
+ protected_amount: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.protected_amount, Unset):
+ protected_amount = self.protected_amount.to_dict()
+
+ protection_status = self.protection_status
+
+ reason_for_closure = self.reason_for_closure
+
+ recoup_amount: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.recoup_amount, Unset):
+ recoup_amount = self.recoup_amount.to_dict()
+
+ total_fee_credit: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.total_fee_credit, Unset):
+ total_fee_credit = self.total_fee_credit.to_dict()
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if fees is not UNSET:
+ field_dict["fees"] = fees
+ if protected_amount is not UNSET:
+ field_dict["protectedAmount"] = protected_amount
+ if protection_status is not UNSET:
+ field_dict["protectionStatus"] = protection_status
+ if reason_for_closure is not UNSET:
+ field_dict["reasonForClosure"] = reason_for_closure
+ if recoup_amount is not UNSET:
+ field_dict["recoupAmount"] = recoup_amount
+ if total_fee_credit is not UNSET:
+ field_dict["totalFeeCredit"] = total_fee_credit
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.simple_amount import SimpleAmount
+ d = dict(src_dict)
+ _fees = d.pop("fees", UNSET)
+ fees: Union[Unset, SimpleAmount]
+ if isinstance(_fees, Unset):
+ fees = UNSET
+ else:
+ fees = SimpleAmount.from_dict(_fees)
+
+
+
+
+ _protected_amount = d.pop("protectedAmount", UNSET)
+ protected_amount: Union[Unset, SimpleAmount]
+ if isinstance(_protected_amount, Unset):
+ protected_amount = UNSET
+ else:
+ protected_amount = SimpleAmount.from_dict(_protected_amount)
+
+
+
+
+ protection_status = d.pop("protectionStatus", UNSET)
+
+ reason_for_closure = d.pop("reasonForClosure", UNSET)
+
+ _recoup_amount = d.pop("recoupAmount", UNSET)
+ recoup_amount: Union[Unset, SimpleAmount]
+ if isinstance(_recoup_amount, Unset):
+ recoup_amount = UNSET
+ else:
+ recoup_amount = SimpleAmount.from_dict(_recoup_amount)
+
+
+
+
+ _total_fee_credit = d.pop("totalFeeCredit", UNSET)
+ total_fee_credit: Union[Unset, SimpleAmount]
+ if isinstance(_total_fee_credit, Unset):
+ total_fee_credit = UNSET
+ else:
+ total_fee_credit = SimpleAmount.from_dict(_total_fee_credit)
+
+
+
+
+ payment_dispute_outcome_detail = cls(
+ fees=fees,
+ protected_amount=protected_amount,
+ protection_status=protection_status,
+ reason_for_closure=reason_for_closure,
+ recoup_amount=recoup_amount,
+ total_fee_credit=total_fee_credit,
+ )
+
+
+ payment_dispute_outcome_detail.additional_properties = d
+ return payment_dispute_outcome_detail
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/payment_dispute_summary.py b/ebay_client/generated/fulfillment/models/payment_dispute_summary.py
new file mode 100644
index 0000000..7e4dbe4
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/payment_dispute_summary.py
@@ -0,0 +1,192 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.simple_amount import SimpleAmount
+
+
+
+
+
+T = TypeVar("T", bound="PaymentDisputeSummary")
+
+
+
+@_attrs_define
+class PaymentDisputeSummary:
+ """ This type is used by each payment dispute that is returned with the getPaymentDisputeSummaries
+ method.
+
+ Attributes:
+ amount (Union[Unset, SimpleAmount]): This type defines the monetary value of the payment dispute, and the
+ currency used.
+ buyer_username (Union[Unset, str]): This is the buyer's eBay user ID. This field is returned for all payment
+ disputes returned in the response.
+ closed_date (Union[Unset, str]): The timestamp in this field shows the date/time when the payment dispute was
+ closed, so this field is only returned for payment disputes in the CLOSED state.
The
+ timestamps returned here use the ISO-8601 24-hour date and time format, and the time zone used is Universal
+ Coordinated Time (UTC), also known as Greenwich Mean Time (GMT), or Zulu. The ISO-8601 format looks like this:
+ yyyy-MM-ddThh:mm.ss.sssZ. An example would be 2019-08-04T19:09:02.768Z.
+ open_date (Union[Unset, str]): The timestamp in this field shows the date/time when the payment dispute was
+ opened. This field is returned for payment disputes in all states.
The timestamps returned here use the
+ ISO-8601 24-hour date and time format, and the time zone used is Universal Coordinated Time (UTC), also known as
+ Greenwich Mean Time (GMT), or Zulu. The ISO-8601 format looks like this: yyyy-MM-ddThh:mm.ss.sssZ. An
+ example would be 2019-08-04T19:09:02.768Z.
+ order_id (Union[Unset, str]): This is the unique identifier of the order involved in the payment dispute.
+ payment_dispute_id (Union[Unset, str]): This is the unique identifier of the payment dispute. This identifier is
+ automatically created by eBay once the payment dispute comes into the eBay system. This identifier is passed in
+ at the end of the getPaymentDispute call URI to retrieve a specific payment dispute. The
+ getPaymentDispute method returns more details about a payment dispute than the
+ getPaymentDisputeSummaries method.
+ payment_dispute_status (Union[Unset, str]): The enumeration value in this field gives the current status of the
+ payment dispute. For implementation help, refer to eBay API documentation
+ reason (Union[Unset, str]): The enumeration value in this field gives the reason why the buyer initiated the
+ payment dispute. See DisputeReasonEnum type for a description of the supported reasons that
+ buyers can give for initiating a payment dispute. For implementation help, refer to eBay API
+ documentation
+ respond_by_date (Union[Unset, str]): The timestamp in this field shows the date/time when the seller must
+ response to a payment dispute, so this field is only returned for payment disputes in the
+ ACTION_NEEDED state. For payment disputes that require action by the seller, that same seller must
+ call getPaymentDispute to see the next action(s) that they can take against the payment
+ dispute.
The timestamps returned here use the ISO-8601 24-hour date and time format, and the time zone
+ used is Universal Coordinated Time (UTC), also known as Greenwich Mean Time (GMT), or Zulu. The ISO-8601 format
+ looks like this: yyyy-MM-ddThh:mm.ss.sssZ. An example would be 2019-08-04T19:09:02.768Z.
+ """
+
+ amount: Union[Unset, 'SimpleAmount'] = UNSET
+ buyer_username: Union[Unset, str] = UNSET
+ closed_date: Union[Unset, str] = UNSET
+ open_date: Union[Unset, str] = UNSET
+ order_id: Union[Unset, str] = UNSET
+ payment_dispute_id: Union[Unset, str] = UNSET
+ payment_dispute_status: Union[Unset, str] = UNSET
+ reason: Union[Unset, str] = UNSET
+ respond_by_date: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.simple_amount import SimpleAmount
+ amount: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.amount, Unset):
+ amount = self.amount.to_dict()
+
+ buyer_username = self.buyer_username
+
+ closed_date = self.closed_date
+
+ open_date = self.open_date
+
+ order_id = self.order_id
+
+ payment_dispute_id = self.payment_dispute_id
+
+ payment_dispute_status = self.payment_dispute_status
+
+ reason = self.reason
+
+ respond_by_date = self.respond_by_date
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if amount is not UNSET:
+ field_dict["amount"] = amount
+ if buyer_username is not UNSET:
+ field_dict["buyerUsername"] = buyer_username
+ if closed_date is not UNSET:
+ field_dict["closedDate"] = closed_date
+ if open_date is not UNSET:
+ field_dict["openDate"] = open_date
+ if order_id is not UNSET:
+ field_dict["orderId"] = order_id
+ if payment_dispute_id is not UNSET:
+ field_dict["paymentDisputeId"] = payment_dispute_id
+ if payment_dispute_status is not UNSET:
+ field_dict["paymentDisputeStatus"] = payment_dispute_status
+ if reason is not UNSET:
+ field_dict["reason"] = reason
+ if respond_by_date is not UNSET:
+ field_dict["respondByDate"] = respond_by_date
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.simple_amount import SimpleAmount
+ d = dict(src_dict)
+ _amount = d.pop("amount", UNSET)
+ amount: Union[Unset, SimpleAmount]
+ if isinstance(_amount, Unset):
+ amount = UNSET
+ else:
+ amount = SimpleAmount.from_dict(_amount)
+
+
+
+
+ buyer_username = d.pop("buyerUsername", UNSET)
+
+ closed_date = d.pop("closedDate", UNSET)
+
+ open_date = d.pop("openDate", UNSET)
+
+ order_id = d.pop("orderId", UNSET)
+
+ payment_dispute_id = d.pop("paymentDisputeId", UNSET)
+
+ payment_dispute_status = d.pop("paymentDisputeStatus", UNSET)
+
+ reason = d.pop("reason", UNSET)
+
+ respond_by_date = d.pop("respondByDate", UNSET)
+
+ payment_dispute_summary = cls(
+ amount=amount,
+ buyer_username=buyer_username,
+ closed_date=closed_date,
+ open_date=open_date,
+ order_id=order_id,
+ payment_dispute_id=payment_dispute_id,
+ payment_dispute_status=payment_dispute_status,
+ reason=reason,
+ respond_by_date=respond_by_date,
+ )
+
+
+ payment_dispute_summary.additional_properties = d
+ return payment_dispute_summary
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/payment_hold.py b/ebay_client/generated/fulfillment/models/payment_hold.py
new file mode 100644
index 0000000..0da4859
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/payment_hold.py
@@ -0,0 +1,175 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.amount import Amount
+ from ..models.seller_actions_to_release import SellerActionsToRelease
+
+
+
+
+
+T = TypeVar("T", bound="PaymentHold")
+
+
+
+@_attrs_define
+class PaymentHold:
+ """ This type contains information about a hold placed on a payment to a seller for an order, including the reason why
+ the buyer's payment for the order is being held, the expected release date of the funds into the seller's account,
+ the current state of the hold, and the actual release date if the payment has been released, and possible actions
+ the seller can take to expedite the payout of funds into their account.
+
+ Attributes:
+ expected_release_date (Union[Unset, str]): The date and time that the payment being held is expected to be
+ released to the seller. This timestamp is in ISO 8601 format, which uses the 24-hour Universal Coordinated Time
+ (UTC) clock. This field will be returned if known by eBay.
Format:
+ [YYYY]-[MM]-[DD]T[hh]:[mm]:[ss].[sss]Z
Example: 2015-08-04T19:09:02.768Z
+ hold_amount (Union[Unset, Amount]): This type defines the monetary value of an amount. It can provide the amount
+ in both the currency used on the eBay site where an item is being offered and the conversion of that value into
+ another currency, if applicable.
+ hold_reason (Union[Unset, str]): The reason that the payment is being held. A seller's payment may be held for a
+ number of reasons, including when the seller is new, the seller's level is below standard, or if a return case
+ or 'Significantly not as described' case is pending against the seller. This field is always returned with the
+ paymentHolds array.
+ hold_state (Union[Unset, str]): The current stage or condition of the hold. This field is always returned with
+ the paymentHolds array.
Applicable values:HELDHELD_PENDINGNOT_HELDRELEASE_CONFIRMEDRELEASE_
+ FAILEDRELEASE_PENDINGRELEASED
+ release_date (Union[Unset, str]): The date and time that the payment being held was actually released to the
+ seller. This timestamp is in ISO 8601 format, which uses the 24-hour Universal Coordinated Time (UTC) clock.
+ This field is not returned until the seller's payment is actually released into the seller's
+ account.
Format: [YYYY]-[MM]-[DD]T[hh]:[mm]:[ss].[sss]Z
Example:
+ 2015-08-04T19:09:02.768Z
+ seller_actions_to_release (Union[Unset, list['SellerActionsToRelease']]): A list of one or more possible actions
+ that the seller can take to expedite the release of the payment hold.
+ """
+
+ expected_release_date: Union[Unset, str] = UNSET
+ hold_amount: Union[Unset, 'Amount'] = UNSET
+ hold_reason: Union[Unset, str] = UNSET
+ hold_state: Union[Unset, str] = UNSET
+ release_date: Union[Unset, str] = UNSET
+ seller_actions_to_release: Union[Unset, list['SellerActionsToRelease']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.amount import Amount
+ from ..models.seller_actions_to_release import SellerActionsToRelease
+ expected_release_date = self.expected_release_date
+
+ hold_amount: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.hold_amount, Unset):
+ hold_amount = self.hold_amount.to_dict()
+
+ hold_reason = self.hold_reason
+
+ hold_state = self.hold_state
+
+ release_date = self.release_date
+
+ seller_actions_to_release: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.seller_actions_to_release, Unset):
+ seller_actions_to_release = []
+ for seller_actions_to_release_item_data in self.seller_actions_to_release:
+ seller_actions_to_release_item = seller_actions_to_release_item_data.to_dict()
+ seller_actions_to_release.append(seller_actions_to_release_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if expected_release_date is not UNSET:
+ field_dict["expectedReleaseDate"] = expected_release_date
+ if hold_amount is not UNSET:
+ field_dict["holdAmount"] = hold_amount
+ if hold_reason is not UNSET:
+ field_dict["holdReason"] = hold_reason
+ if hold_state is not UNSET:
+ field_dict["holdState"] = hold_state
+ if release_date is not UNSET:
+ field_dict["releaseDate"] = release_date
+ if seller_actions_to_release is not UNSET:
+ field_dict["sellerActionsToRelease"] = seller_actions_to_release
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.amount import Amount
+ from ..models.seller_actions_to_release import SellerActionsToRelease
+ d = dict(src_dict)
+ expected_release_date = d.pop("expectedReleaseDate", UNSET)
+
+ _hold_amount = d.pop("holdAmount", UNSET)
+ hold_amount: Union[Unset, Amount]
+ if isinstance(_hold_amount, Unset):
+ hold_amount = UNSET
+ else:
+ hold_amount = Amount.from_dict(_hold_amount)
+
+
+
+
+ hold_reason = d.pop("holdReason", UNSET)
+
+ hold_state = d.pop("holdState", UNSET)
+
+ release_date = d.pop("releaseDate", UNSET)
+
+ seller_actions_to_release = []
+ _seller_actions_to_release = d.pop("sellerActionsToRelease", UNSET)
+ for seller_actions_to_release_item_data in (_seller_actions_to_release or []):
+ seller_actions_to_release_item = SellerActionsToRelease.from_dict(seller_actions_to_release_item_data)
+
+
+
+ seller_actions_to_release.append(seller_actions_to_release_item)
+
+
+ payment_hold = cls(
+ expected_release_date=expected_release_date,
+ hold_amount=hold_amount,
+ hold_reason=hold_reason,
+ hold_state=hold_state,
+ release_date=release_date,
+ seller_actions_to_release=seller_actions_to_release,
+ )
+
+
+ payment_hold.additional_properties = d
+ return payment_hold
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/payment_summary.py b/ebay_client/generated/fulfillment/models/payment_summary.py
new file mode 100644
index 0000000..1ffbd63
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/payment_summary.py
@@ -0,0 +1,153 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.order_refund import OrderRefund
+ from ..models.amount import Amount
+ from ..models.payment import Payment
+
+
+
+
+
+T = TypeVar("T", bound="PaymentSummary")
+
+
+
+@_attrs_define
+class PaymentSummary:
+ """ This type contains information about the various monetary exchanges that apply to the net balance due for the order.
+
+ Attributes:
+ payments (Union[Unset, list['Payment']]): This array consists of payment information for the order, including
+ payment status, payment method, payment amount, and payment date. This array is always returned, although some
+ of the fields under this container will not be returned until payment has been made.
+ refunds (Union[Unset, list['OrderRefund']]): This array is always returned, but is returned as an empty array
+ unless the seller has submitted a partial or full refund to the buyer for the order. If a refund has occurred,
+ the refund amount and refund date will be shown for each refund.
+ total_due_seller (Union[Unset, Amount]): This type defines the monetary value of an amount. It can provide the
+ amount in both the currency used on the eBay site where an item is being offered and the conversion of that
+ value into another currency, if applicable.
+ """
+
+ payments: Union[Unset, list['Payment']] = UNSET
+ refunds: Union[Unset, list['OrderRefund']] = UNSET
+ total_due_seller: Union[Unset, 'Amount'] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.order_refund import OrderRefund
+ from ..models.amount import Amount
+ from ..models.payment import Payment
+ payments: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.payments, Unset):
+ payments = []
+ for payments_item_data in self.payments:
+ payments_item = payments_item_data.to_dict()
+ payments.append(payments_item)
+
+
+
+ refunds: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.refunds, Unset):
+ refunds = []
+ for refunds_item_data in self.refunds:
+ refunds_item = refunds_item_data.to_dict()
+ refunds.append(refunds_item)
+
+
+
+ total_due_seller: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.total_due_seller, Unset):
+ total_due_seller = self.total_due_seller.to_dict()
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if payments is not UNSET:
+ field_dict["payments"] = payments
+ if refunds is not UNSET:
+ field_dict["refunds"] = refunds
+ if total_due_seller is not UNSET:
+ field_dict["totalDueSeller"] = total_due_seller
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.order_refund import OrderRefund
+ from ..models.amount import Amount
+ from ..models.payment import Payment
+ d = dict(src_dict)
+ payments = []
+ _payments = d.pop("payments", UNSET)
+ for payments_item_data in (_payments or []):
+ payments_item = Payment.from_dict(payments_item_data)
+
+
+
+ payments.append(payments_item)
+
+
+ refunds = []
+ _refunds = d.pop("refunds", UNSET)
+ for refunds_item_data in (_refunds or []):
+ refunds_item = OrderRefund.from_dict(refunds_item_data)
+
+
+
+ refunds.append(refunds_item)
+
+
+ _total_due_seller = d.pop("totalDueSeller", UNSET)
+ total_due_seller: Union[Unset, Amount]
+ if isinstance(_total_due_seller, Unset):
+ total_due_seller = UNSET
+ else:
+ total_due_seller = Amount.from_dict(_total_due_seller)
+
+
+
+
+ payment_summary = cls(
+ payments=payments,
+ refunds=refunds,
+ total_due_seller=total_due_seller,
+ )
+
+
+ payment_summary.additional_properties = d
+ return payment_summary
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/phone.py b/ebay_client/generated/fulfillment/models/phone.py
new file mode 100644
index 0000000..cda77b9
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/phone.py
@@ -0,0 +1,97 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="Phone")
+
+
+
+@_attrs_define
+class Phone:
+ """ This type is used by the returnAddressISO 3166 code associated with the seller's phone number. This field is needed if the buyer
+ is located in a different country than the seller. It is also OK to provide if the buyer and seller are both
+ located in the same country
See CountryCodeEnum for a list of supported values.
+ number (Union[Unset, str]): The seller's primary phone number associated with the return address. When this
+ number is provided in a contestPaymentDispute or contestPaymentDispute method,
+ it is provided as one continuous numeric string, including the area code. So, if the phone number's area code
+ was '408', a number in this field may look something like this:
"number" :
+ "4088084356"
If the buyer is located in a different country than the seller, the seller's country
+ code will need to be specified in the countryCode field.
+ """
+
+ country_code: Union[Unset, str] = UNSET
+ number: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ country_code = self.country_code
+
+ number = self.number
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if country_code is not UNSET:
+ field_dict["countryCode"] = country_code
+ if number is not UNSET:
+ field_dict["number"] = number
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ country_code = d.pop("countryCode", UNSET)
+
+ number = d.pop("number", UNSET)
+
+ phone = cls(
+ country_code=country_code,
+ number=number,
+ )
+
+
+ phone.additional_properties = d
+ return phone
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/phone_number.py b/ebay_client/generated/fulfillment/models/phone_number.py
new file mode 100644
index 0000000..4c7aaab
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/phone_number.py
@@ -0,0 +1,78 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="PhoneNumber")
+
+
+
+@_attrs_define
+class PhoneNumber:
+ """ This type contains a string field representing a telephone number.
+
+ Attributes:
+ phone_number (Union[Unset, str]): The primary telephone number for the shipping recipient.
+ """
+
+ phone_number: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ phone_number = self.phone_number
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if phone_number is not UNSET:
+ field_dict["phoneNumber"] = phone_number
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ phone_number = d.pop("phoneNumber", UNSET)
+
+ phone_number = cls(
+ phone_number=phone_number,
+ )
+
+
+ phone_number.additional_properties = d
+ return phone_number
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/pickup_step.py b/ebay_client/generated/fulfillment/models/pickup_step.py
new file mode 100644
index 0000000..3a99937
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/pickup_step.py
@@ -0,0 +1,82 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="PickupStep")
+
+
+
+@_attrs_define
+class PickupStep:
+ """ This type is used to indicate the merchant's store where the buyer will pickup their In-Store Pickup order. The
+ pickupStep container is only returned for In-Store Pickup orders. The In-Store Pickup feature is supported in
+ the US, Canada, UK, Germany, and Australia marketplaces.
+
+ Attributes:
+ merchant_location_key (Union[Unset, str]): A merchant-defined unique identifier of the merchant's store where
+ the buyer will pick up their In-Store Pickup order.
This field is always returned with the
+ pickupStep container.
+ """
+
+ merchant_location_key: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ merchant_location_key = self.merchant_location_key
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if merchant_location_key is not UNSET:
+ field_dict["merchantLocationKey"] = merchant_location_key
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ merchant_location_key = d.pop("merchantLocationKey", UNSET)
+
+ pickup_step = cls(
+ merchant_location_key=merchant_location_key,
+ )
+
+
+ pickup_step.additional_properties = d
+ return pickup_step
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/post_sale_authentication_program.py b/ebay_client/generated/fulfillment/models/post_sale_authentication_program.py
new file mode 100644
index 0000000..bab220e
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/post_sale_authentication_program.py
@@ -0,0 +1,97 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="PostSaleAuthenticationProgram")
+
+
+
+@_attrs_define
+class PostSaleAuthenticationProgram:
+ """ This type is used to provide the status and outcome of an order line item going through the Authenticity Guarantee
+ verification process.
+
+ Attributes:
+ outcome_reason (Union[Unset, str]): This field indicates the result of the authenticity verification inspection
+ on an order line item. This field is not returned when the status value of the order line item is
+ PENDING or PASSED. The possible values returned here are NOT_AUTHENTIC,
+ NOT_AS_DESCRIBED, CUSTOMIZED, MISCATEGORIZED, or
+ NOT_AUTHENTIC_NO_RETURN. For implementation help, refer to eBay API documentation
+ status (Union[Unset, str]): The value in this field indicates whether the order line item has passed or failed
+ the authenticity verification inspection, or if the inspection and/or results are still pending. The possible
+ values returned here are PENDING, PASSED, FAILED, or
+ PASSED_WITH_EXCEPTION. For implementation help, refer to eBay API documentation
+ """
+
+ outcome_reason: Union[Unset, str] = UNSET
+ status: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ outcome_reason = self.outcome_reason
+
+ status = self.status
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if outcome_reason is not UNSET:
+ field_dict["outcomeReason"] = outcome_reason
+ if status is not UNSET:
+ field_dict["status"] = status
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ outcome_reason = d.pop("outcomeReason", UNSET)
+
+ status = d.pop("status", UNSET)
+
+ post_sale_authentication_program = cls(
+ outcome_reason=outcome_reason,
+ status=status,
+ )
+
+
+ post_sale_authentication_program.additional_properties = d
+ return post_sale_authentication_program
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/pricing_summary.py b/ebay_client/generated/fulfillment/models/pricing_summary.py
new file mode 100644
index 0000000..8dc641b
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/pricing_summary.py
@@ -0,0 +1,243 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.amount import Amount
+
+
+
+
+
+T = TypeVar("T", bound="PricingSummary")
+
+
+
+@_attrs_define
+class PricingSummary:
+ """ This type contains a summary of cumulative costs and charges for all line items of an order, including item price,
+ price adjustments, sales taxes, delivery costs, and order discounts.
+
+ Attributes:
+ adjustment (Union[Unset, Amount]): This type defines the monetary value of an amount. It can provide the amount
+ in both the currency used on the eBay site where an item is being offered and the conversion of that value into
+ another currency, if applicable.
+ delivery_cost (Union[Unset, Amount]): This type defines the monetary value of an amount. It can provide the
+ amount in both the currency used on the eBay site where an item is being offered and the conversion of that
+ value into another currency, if applicable.
+ delivery_discount (Union[Unset, Amount]): This type defines the monetary value of an amount. It can provide the
+ amount in both the currency used on the eBay site where an item is being offered and the conversion of that
+ value into another currency, if applicable.
+ fee (Union[Unset, Amount]): This type defines the monetary value of an amount. It can provide the amount in both
+ the currency used on the eBay site where an item is being offered and the conversion of that value into another
+ currency, if applicable.
+ price_discount (Union[Unset, Amount]): This type defines the monetary value of an amount. It can provide the
+ amount in both the currency used on the eBay site where an item is being offered and the conversion of that
+ value into another currency, if applicable.
+ price_subtotal (Union[Unset, Amount]): This type defines the monetary value of an amount. It can provide the
+ amount in both the currency used on the eBay site where an item is being offered and the conversion of that
+ value into another currency, if applicable.
+ tax (Union[Unset, Amount]): This type defines the monetary value of an amount. It can provide the amount in both
+ the currency used on the eBay site where an item is being offered and the conversion of that value into another
+ currency, if applicable.
+ total (Union[Unset, Amount]): This type defines the monetary value of an amount. It can provide the amount in
+ both the currency used on the eBay site where an item is being offered and the conversion of that value into
+ another currency, if applicable.
+ """
+
+ adjustment: Union[Unset, 'Amount'] = UNSET
+ delivery_cost: Union[Unset, 'Amount'] = UNSET
+ delivery_discount: Union[Unset, 'Amount'] = UNSET
+ fee: Union[Unset, 'Amount'] = UNSET
+ price_discount: Union[Unset, 'Amount'] = UNSET
+ price_subtotal: Union[Unset, 'Amount'] = UNSET
+ tax: Union[Unset, 'Amount'] = UNSET
+ total: Union[Unset, 'Amount'] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.amount import Amount
+ adjustment: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.adjustment, Unset):
+ adjustment = self.adjustment.to_dict()
+
+ delivery_cost: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.delivery_cost, Unset):
+ delivery_cost = self.delivery_cost.to_dict()
+
+ delivery_discount: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.delivery_discount, Unset):
+ delivery_discount = self.delivery_discount.to_dict()
+
+ fee: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.fee, Unset):
+ fee = self.fee.to_dict()
+
+ price_discount: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.price_discount, Unset):
+ price_discount = self.price_discount.to_dict()
+
+ price_subtotal: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.price_subtotal, Unset):
+ price_subtotal = self.price_subtotal.to_dict()
+
+ tax: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.tax, Unset):
+ tax = self.tax.to_dict()
+
+ total: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.total, Unset):
+ total = self.total.to_dict()
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if adjustment is not UNSET:
+ field_dict["adjustment"] = adjustment
+ if delivery_cost is not UNSET:
+ field_dict["deliveryCost"] = delivery_cost
+ if delivery_discount is not UNSET:
+ field_dict["deliveryDiscount"] = delivery_discount
+ if fee is not UNSET:
+ field_dict["fee"] = fee
+ if price_discount is not UNSET:
+ field_dict["priceDiscount"] = price_discount
+ if price_subtotal is not UNSET:
+ field_dict["priceSubtotal"] = price_subtotal
+ if tax is not UNSET:
+ field_dict["tax"] = tax
+ if total is not UNSET:
+ field_dict["total"] = total
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.amount import Amount
+ d = dict(src_dict)
+ _adjustment = d.pop("adjustment", UNSET)
+ adjustment: Union[Unset, Amount]
+ if isinstance(_adjustment, Unset):
+ adjustment = UNSET
+ else:
+ adjustment = Amount.from_dict(_adjustment)
+
+
+
+
+ _delivery_cost = d.pop("deliveryCost", UNSET)
+ delivery_cost: Union[Unset, Amount]
+ if isinstance(_delivery_cost, Unset):
+ delivery_cost = UNSET
+ else:
+ delivery_cost = Amount.from_dict(_delivery_cost)
+
+
+
+
+ _delivery_discount = d.pop("deliveryDiscount", UNSET)
+ delivery_discount: Union[Unset, Amount]
+ if isinstance(_delivery_discount, Unset):
+ delivery_discount = UNSET
+ else:
+ delivery_discount = Amount.from_dict(_delivery_discount)
+
+
+
+
+ _fee = d.pop("fee", UNSET)
+ fee: Union[Unset, Amount]
+ if isinstance(_fee, Unset):
+ fee = UNSET
+ else:
+ fee = Amount.from_dict(_fee)
+
+
+
+
+ _price_discount = d.pop("priceDiscount", UNSET)
+ price_discount: Union[Unset, Amount]
+ if isinstance(_price_discount, Unset):
+ price_discount = UNSET
+ else:
+ price_discount = Amount.from_dict(_price_discount)
+
+
+
+
+ _price_subtotal = d.pop("priceSubtotal", UNSET)
+ price_subtotal: Union[Unset, Amount]
+ if isinstance(_price_subtotal, Unset):
+ price_subtotal = UNSET
+ else:
+ price_subtotal = Amount.from_dict(_price_subtotal)
+
+
+
+
+ _tax = d.pop("tax", UNSET)
+ tax: Union[Unset, Amount]
+ if isinstance(_tax, Unset):
+ tax = UNSET
+ else:
+ tax = Amount.from_dict(_tax)
+
+
+
+
+ _total = d.pop("total", UNSET)
+ total: Union[Unset, Amount]
+ if isinstance(_total, Unset):
+ total = UNSET
+ else:
+ total = Amount.from_dict(_total)
+
+
+
+
+ pricing_summary = cls(
+ adjustment=adjustment,
+ delivery_cost=delivery_cost,
+ delivery_discount=delivery_discount,
+ fee=fee,
+ price_discount=price_discount,
+ price_subtotal=price_subtotal,
+ tax=tax,
+ total=total,
+ )
+
+
+ pricing_summary.additional_properties = d
+ return pricing_summary
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/program.py b/ebay_client/generated/fulfillment/models/program.py
new file mode 100644
index 0000000..bba4355
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/program.py
@@ -0,0 +1,186 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.ebay_fulfillment_program import EbayFulfillmentProgram
+ from ..models.ebay_vault_program import EbayVaultProgram
+ from ..models.post_sale_authentication_program import PostSaleAuthenticationProgram
+ from ..models.ebay_shipping import EbayShipping
+ from ..models.ebay_international_shipping import EbayInternationalShipping
+
+
+
+
+
+T = TypeVar("T", bound="Program")
+
+
+
+@_attrs_define
+class Program:
+ """ This type is returned for order line items eligible for the Authenticity Guarantee service and/or for order line
+ items fulfilled by the eBay Fulfillment program or eBay shipping.
+
+ Attributes:
+ authenticity_verification (Union[Unset, PostSaleAuthenticationProgram]): This type is used to provide the status
+ and outcome of an order line item going through the Authenticity Guarantee verification process.
+ ebay_shipping (Union[Unset, EbayShipping]): This type contains information about the management of the shipping
+ for the order.
+ ebay_vault (Union[Unset, EbayVaultProgram]):
+ ebay_international_shipping (Union[Unset, EbayInternationalShipping]): This type is used to provide details
+ about an order line item being managed through eBay International Shipping.
+ fulfillment_program (Union[Unset, EbayFulfillmentProgram]): This type is used to provide details about an order
+ line item being fulfilled by eBay or an eBay fulfillment partner.
+ """
+
+ authenticity_verification: Union[Unset, 'PostSaleAuthenticationProgram'] = UNSET
+ ebay_shipping: Union[Unset, 'EbayShipping'] = UNSET
+ ebay_vault: Union[Unset, 'EbayVaultProgram'] = UNSET
+ ebay_international_shipping: Union[Unset, 'EbayInternationalShipping'] = UNSET
+ fulfillment_program: Union[Unset, 'EbayFulfillmentProgram'] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.ebay_fulfillment_program import EbayFulfillmentProgram
+ from ..models.ebay_vault_program import EbayVaultProgram
+ from ..models.post_sale_authentication_program import PostSaleAuthenticationProgram
+ from ..models.ebay_shipping import EbayShipping
+ from ..models.ebay_international_shipping import EbayInternationalShipping
+ authenticity_verification: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.authenticity_verification, Unset):
+ authenticity_verification = self.authenticity_verification.to_dict()
+
+ ebay_shipping: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.ebay_shipping, Unset):
+ ebay_shipping = self.ebay_shipping.to_dict()
+
+ ebay_vault: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.ebay_vault, Unset):
+ ebay_vault = self.ebay_vault.to_dict()
+
+ ebay_international_shipping: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.ebay_international_shipping, Unset):
+ ebay_international_shipping = self.ebay_international_shipping.to_dict()
+
+ fulfillment_program: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.fulfillment_program, Unset):
+ fulfillment_program = self.fulfillment_program.to_dict()
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if authenticity_verification is not UNSET:
+ field_dict["authenticityVerification"] = authenticity_verification
+ if ebay_shipping is not UNSET:
+ field_dict["ebayShipping"] = ebay_shipping
+ if ebay_vault is not UNSET:
+ field_dict["ebayVault"] = ebay_vault
+ if ebay_international_shipping is not UNSET:
+ field_dict["ebayInternationalShipping"] = ebay_international_shipping
+ if fulfillment_program is not UNSET:
+ field_dict["fulfillmentProgram"] = fulfillment_program
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.ebay_fulfillment_program import EbayFulfillmentProgram
+ from ..models.ebay_vault_program import EbayVaultProgram
+ from ..models.post_sale_authentication_program import PostSaleAuthenticationProgram
+ from ..models.ebay_shipping import EbayShipping
+ from ..models.ebay_international_shipping import EbayInternationalShipping
+ d = dict(src_dict)
+ _authenticity_verification = d.pop("authenticityVerification", UNSET)
+ authenticity_verification: Union[Unset, PostSaleAuthenticationProgram]
+ if isinstance(_authenticity_verification, Unset):
+ authenticity_verification = UNSET
+ else:
+ authenticity_verification = PostSaleAuthenticationProgram.from_dict(_authenticity_verification)
+
+
+
+
+ _ebay_shipping = d.pop("ebayShipping", UNSET)
+ ebay_shipping: Union[Unset, EbayShipping]
+ if isinstance(_ebay_shipping, Unset):
+ ebay_shipping = UNSET
+ else:
+ ebay_shipping = EbayShipping.from_dict(_ebay_shipping)
+
+
+
+
+ _ebay_vault = d.pop("ebayVault", UNSET)
+ ebay_vault: Union[Unset, EbayVaultProgram]
+ if isinstance(_ebay_vault, Unset):
+ ebay_vault = UNSET
+ else:
+ ebay_vault = EbayVaultProgram.from_dict(_ebay_vault)
+
+
+
+
+ _ebay_international_shipping = d.pop("ebayInternationalShipping", UNSET)
+ ebay_international_shipping: Union[Unset, EbayInternationalShipping]
+ if isinstance(_ebay_international_shipping, Unset):
+ ebay_international_shipping = UNSET
+ else:
+ ebay_international_shipping = EbayInternationalShipping.from_dict(_ebay_international_shipping)
+
+
+
+
+ _fulfillment_program = d.pop("fulfillmentProgram", UNSET)
+ fulfillment_program: Union[Unset, EbayFulfillmentProgram]
+ if isinstance(_fulfillment_program, Unset):
+ fulfillment_program = UNSET
+ else:
+ fulfillment_program = EbayFulfillmentProgram.from_dict(_fulfillment_program)
+
+
+
+
+ program = cls(
+ authenticity_verification=authenticity_verification,
+ ebay_shipping=ebay_shipping,
+ ebay_vault=ebay_vault,
+ ebay_international_shipping=ebay_international_shipping,
+ fulfillment_program=fulfillment_program,
+ )
+
+
+ program.additional_properties = d
+ return program
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/property_.py b/ebay_client/generated/fulfillment/models/property_.py
new file mode 100644
index 0000000..0989ac6
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/property_.py
@@ -0,0 +1,101 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="Property")
+
+
+
+@_attrs_define
+class Property:
+ """ This type defines the property name and value for an order.
+
+ Attributes:
+ property_display_name (Union[Unset, str]): The display name of the motor vehicle aspect. This is the localized
+ name of the compatibility property.
+ property_name (Union[Unset, str]): The name of the motor vehicle aspect.
For example, typical vehicle
+ property names are 'Make', 'Model', 'Year', 'Engine', and 'Trim', but will vary based on the eBay marketplace
+ and the eBay category.
+ property_value (Union[Unset, str]): The value of the property specified in the propertyName
+ field.
For example, if the propertyName is Make, then the propertyValue will
+ be the specific make of the vehicle, such as Toyota.
+ """
+
+ property_display_name: Union[Unset, str] = UNSET
+ property_name: Union[Unset, str] = UNSET
+ property_value: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ property_display_name = self.property_display_name
+
+ property_name = self.property_name
+
+ property_value = self.property_value
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if property_display_name is not UNSET:
+ field_dict["propertyDisplayName"] = property_display_name
+ if property_name is not UNSET:
+ field_dict["propertyName"] = property_name
+ if property_value is not UNSET:
+ field_dict["propertyValue"] = property_value
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ property_display_name = d.pop("propertyDisplayName", UNSET)
+
+ property_name = d.pop("propertyName", UNSET)
+
+ property_value = d.pop("propertyValue", UNSET)
+
+ property_ = cls(
+ property_display_name=property_display_name,
+ property_name=property_name,
+ property_value=property_value,
+ )
+
+
+ property_.additional_properties = d
+ return property_
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/refund.py b/ebay_client/generated/fulfillment/models/refund.py
new file mode 100644
index 0000000..a6b6d94
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/refund.py
@@ -0,0 +1,105 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="Refund")
+
+
+
+@_attrs_define
+class Refund:
+ """ This is the base type of the issueRefund response payload. As long as the issueRefund method does not
+ trigger an error, a response payload will be returned.
+
+ Attributes:
+ refund_id (Union[Unset, str]): The unique identifier of the order refund. This value is returned unless the
+ refund operation fails (refundStatus value shows FAILED). This identifier can be used to
+ track the status of the refund through a getOrder or getOrders call. For order-level refunds,
+ check the paymentSummary.refunds.refundId field in the getOrder/getOrders response, and for
+ line item level refunds, check the lineItems.refunds.refundId field(s) in the
+ getOrder/getOrders response.
+ refund_status (Union[Unset, str]): The value returned in this field indicates the success or failure of the
+ refund operation. A successful issueRefund operation should result in a value of PENDING. A
+ failed issueRefund operation should result in a value of FAILED, and an HTTP status code
+ and/or and API error code may also get returned to possibly indicate the issue.
The refunds issued
+ through this method are processed asynchronously, so the refund will not show as 'Refunded' right away. A seller
+ will have to make a subsequent getOrder call to check the status of
+ the refund. The status of an order refund can be found in the paymentSummary.refunds.refundStatus field of the getOrder response. For
+ implementation help, refer to eBay API documentation
+ """
+
+ refund_id: Union[Unset, str] = UNSET
+ refund_status: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ refund_id = self.refund_id
+
+ refund_status = self.refund_status
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if refund_id is not UNSET:
+ field_dict["refundId"] = refund_id
+ if refund_status is not UNSET:
+ field_dict["refundStatus"] = refund_status
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ refund_id = d.pop("refundId", UNSET)
+
+ refund_status = d.pop("refundStatus", UNSET)
+
+ refund = cls(
+ refund_id=refund_id,
+ refund_status=refund_status,
+ )
+
+
+ refund.additional_properties = d
+ return refund
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/refund_item.py b/ebay_client/generated/fulfillment/models/refund_item.py
new file mode 100644
index 0000000..fa04a97
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/refund_item.py
@@ -0,0 +1,133 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.legacy_reference import LegacyReference
+ from ..models.simple_amount import SimpleAmount
+
+
+
+
+
+T = TypeVar("T", bound="RefundItem")
+
+
+
+@_attrs_define
+class RefundItem:
+ """ This type is used if the seller is issuing a refund for one or more individual order line items in a multiple line
+ item order. Otherwise, the seller just uses the orderLevelRefundAmount container to specify the amount of the
+ refund for the entire order.
+
+ Attributes:
+ refund_amount (Union[Unset, SimpleAmount]): This type defines the monetary value of the payment dispute, and the
+ currency used.
+ line_item_id (Union[Unset, str]): The unique identifier of an order line item. This identifier is created once a
+ buyer purchases a 'Buy It Now' item or if an auction listing ends with a winning bidder.
Either this
+ field or the legacyReference container is needed to identify an individual order line item that will
+ receive a refund.
This value is returned using the getOrders method.
+ legacy_reference (Union[Unset, LegacyReference]): Type defining the legacyReference container. This
+ container is needed if the seller is issuing a refund for an individual order line item, and wishes to use an
+ item ID and transaction ID to identify the order line item.
+ """
+
+ refund_amount: Union[Unset, 'SimpleAmount'] = UNSET
+ line_item_id: Union[Unset, str] = UNSET
+ legacy_reference: Union[Unset, 'LegacyReference'] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.legacy_reference import LegacyReference
+ from ..models.simple_amount import SimpleAmount
+ refund_amount: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.refund_amount, Unset):
+ refund_amount = self.refund_amount.to_dict()
+
+ line_item_id = self.line_item_id
+
+ legacy_reference: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.legacy_reference, Unset):
+ legacy_reference = self.legacy_reference.to_dict()
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if refund_amount is not UNSET:
+ field_dict["refundAmount"] = refund_amount
+ if line_item_id is not UNSET:
+ field_dict["lineItemId"] = line_item_id
+ if legacy_reference is not UNSET:
+ field_dict["legacyReference"] = legacy_reference
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.legacy_reference import LegacyReference
+ from ..models.simple_amount import SimpleAmount
+ d = dict(src_dict)
+ _refund_amount = d.pop("refundAmount", UNSET)
+ refund_amount: Union[Unset, SimpleAmount]
+ if isinstance(_refund_amount, Unset):
+ refund_amount = UNSET
+ else:
+ refund_amount = SimpleAmount.from_dict(_refund_amount)
+
+
+
+
+ line_item_id = d.pop("lineItemId", UNSET)
+
+ _legacy_reference = d.pop("legacyReference", UNSET)
+ legacy_reference: Union[Unset, LegacyReference]
+ if isinstance(_legacy_reference, Unset):
+ legacy_reference = UNSET
+ else:
+ legacy_reference = LegacyReference.from_dict(_legacy_reference)
+
+
+
+
+ refund_item = cls(
+ refund_amount=refund_amount,
+ line_item_id=line_item_id,
+ legacy_reference=legacy_reference,
+ )
+
+
+ refund_item.additional_properties = d
+ return refund_item
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/return_address.py b/ebay_client/generated/fulfillment/models/return_address.py
new file mode 100644
index 0000000..f71af04
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/return_address.py
@@ -0,0 +1,172 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.phone import Phone
+
+
+
+
+
+T = TypeVar("T", bound="ReturnAddress")
+
+
+
+@_attrs_define
+class ReturnAddress:
+ """ This type is used by the payment dispute methods, and is relevant if the buyer will be returning the item to the
+ seller.
+
+ Attributes:
+ address_line_1 (Union[Unset, str]): The first line of the street address.
+ address_line_2 (Union[Unset, str]): The second line of the street address. This line is not always necessarily,
+ but is often used for apartment number or suite number, or other relevant information that can not fit on the
+ first line.
+ city (Union[Unset, str]): The city of the return address.
+ country (Union[Unset, str]): The country's two-letter, ISO 3166-1 country code. See the enumeration type for a
+ country's value. For implementation help, refer to eBay API documentation
+ county (Union[Unset, str]): The county of the return address. Counties are not applicable to all countries.
+ full_name (Union[Unset, str]): The full name of return address owner.
+ postal_code (Union[Unset, str]): The postal code of the return address.
+ primary_phone (Union[Unset, Phone]): This type is used by the returnAddress dict[str, Any]:
+ from ..models.phone import Phone
+ address_line_1 = self.address_line_1
+
+ address_line_2 = self.address_line_2
+
+ city = self.city
+
+ country = self.country
+
+ county = self.county
+
+ full_name = self.full_name
+
+ postal_code = self.postal_code
+
+ primary_phone: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.primary_phone, Unset):
+ primary_phone = self.primary_phone.to_dict()
+
+ state_or_province = self.state_or_province
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if address_line_1 is not UNSET:
+ field_dict["addressLine1"] = address_line_1
+ if address_line_2 is not UNSET:
+ field_dict["addressLine2"] = address_line_2
+ if city is not UNSET:
+ field_dict["city"] = city
+ if country is not UNSET:
+ field_dict["country"] = country
+ if county is not UNSET:
+ field_dict["county"] = county
+ if full_name is not UNSET:
+ field_dict["fullName"] = full_name
+ if postal_code is not UNSET:
+ field_dict["postalCode"] = postal_code
+ if primary_phone is not UNSET:
+ field_dict["primaryPhone"] = primary_phone
+ if state_or_province is not UNSET:
+ field_dict["stateOrProvince"] = state_or_province
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.phone import Phone
+ d = dict(src_dict)
+ address_line_1 = d.pop("addressLine1", UNSET)
+
+ address_line_2 = d.pop("addressLine2", UNSET)
+
+ city = d.pop("city", UNSET)
+
+ country = d.pop("country", UNSET)
+
+ county = d.pop("county", UNSET)
+
+ full_name = d.pop("fullName", UNSET)
+
+ postal_code = d.pop("postalCode", UNSET)
+
+ _primary_phone = d.pop("primaryPhone", UNSET)
+ primary_phone: Union[Unset, Phone]
+ if isinstance(_primary_phone, Unset):
+ primary_phone = UNSET
+ else:
+ primary_phone = Phone.from_dict(_primary_phone)
+
+
+
+
+ state_or_province = d.pop("stateOrProvince", UNSET)
+
+ return_address = cls(
+ address_line_1=address_line_1,
+ address_line_2=address_line_2,
+ city=city,
+ country=country,
+ county=county,
+ full_name=full_name,
+ postal_code=postal_code,
+ primary_phone=primary_phone,
+ state_or_province=state_or_province,
+ )
+
+
+ return_address.additional_properties = d
+ return return_address
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/seller_actions_to_release.py b/ebay_client/generated/fulfillment/models/seller_actions_to_release.py
new file mode 100644
index 0000000..9958c5c
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/seller_actions_to_release.py
@@ -0,0 +1,82 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="SellerActionsToRelease")
+
+
+
+@_attrs_define
+class SellerActionsToRelease:
+ """ This type is used to state possible action(s) that a seller can take to release a payment hold placed against an
+ order.
+
+ Attributes:
+ seller_action_to_release (Union[Unset, str]): A possible action that the seller can take to expedite the release
+ of a payment hold. A sellerActionToRelease field is returned for each possible action that a
+ seller may take. Possible actions may include providing shipping/tracking information, issuing a refund,
+ providing refund information, contacting customer support, etc.
+ """
+
+ seller_action_to_release: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ seller_action_to_release = self.seller_action_to_release
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if seller_action_to_release is not UNSET:
+ field_dict["sellerActionToRelease"] = seller_action_to_release
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ seller_action_to_release = d.pop("sellerActionToRelease", UNSET)
+
+ seller_actions_to_release = cls(
+ seller_action_to_release=seller_action_to_release,
+ )
+
+
+ seller_actions_to_release.additional_properties = d
+ return seller_actions_to_release
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/shipping_fulfillment.py b/ebay_client/generated/fulfillment/models/shipping_fulfillment.py
new file mode 100644
index 0000000..b613987
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/shipping_fulfillment.py
@@ -0,0 +1,146 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.line_item_reference import LineItemReference
+
+
+
+
+
+T = TypeVar("T", bound="ShippingFulfillment")
+
+
+
+@_attrs_define
+class ShippingFulfillment:
+ """ This type contains the complete details of an existing fulfillment for an order.
+
+ Attributes:
+ fulfillment_id (Union[Unset, str]): The unique identifier of the fulfillment; for example,
+ 9405509699937003457459. This eBay-generated value is created with a successful
+ createShippingFulfillment call.
+ line_items (Union[Unset, list['LineItemReference']]): This array contains a list of one or more line items (and
+ purchased quantity) to which the fulfillment applies.
+ shipment_tracking_number (Union[Unset, str]): The tracking number provided by the shipping carrier for the
+ package shipped in this fulfillment. This field is returned if available.
+ shipped_date (Union[Unset, str]): The date and time that the fulfillment package was shipped. This timestamp is
+ in ISO 8601 format, which uses the 24-hour Universal Coordinated Time (UTC) clock. This field should only be
+ returned if the package has been shipped.
Format:
+ [YYYY]-[MM]-[DD]T[hh]:[mm]:[ss].[sss]Z
Example: 2015-08-04T19:09:02.768Z
+ shipping_carrier_code (Union[Unset, str]): The eBay code identifying the shipping carrier for this fulfillment.
+ This field is returned if available.
Note: The Trading API's
+ ShippingCarrierCodeType enumeration type contains the most current list of eBay shipping carrier codes
+ and the countries served by each carrier. See ShippingCarrierCodeType.
+ """
+
+ fulfillment_id: Union[Unset, str] = UNSET
+ line_items: Union[Unset, list['LineItemReference']] = UNSET
+ shipment_tracking_number: Union[Unset, str] = UNSET
+ shipped_date: Union[Unset, str] = UNSET
+ shipping_carrier_code: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.line_item_reference import LineItemReference
+ fulfillment_id = self.fulfillment_id
+
+ line_items: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.line_items, Unset):
+ line_items = []
+ for line_items_item_data in self.line_items:
+ line_items_item = line_items_item_data.to_dict()
+ line_items.append(line_items_item)
+
+
+
+ shipment_tracking_number = self.shipment_tracking_number
+
+ shipped_date = self.shipped_date
+
+ shipping_carrier_code = self.shipping_carrier_code
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if fulfillment_id is not UNSET:
+ field_dict["fulfillmentId"] = fulfillment_id
+ if line_items is not UNSET:
+ field_dict["lineItems"] = line_items
+ if shipment_tracking_number is not UNSET:
+ field_dict["shipmentTrackingNumber"] = shipment_tracking_number
+ if shipped_date is not UNSET:
+ field_dict["shippedDate"] = shipped_date
+ if shipping_carrier_code is not UNSET:
+ field_dict["shippingCarrierCode"] = shipping_carrier_code
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.line_item_reference import LineItemReference
+ d = dict(src_dict)
+ fulfillment_id = d.pop("fulfillmentId", UNSET)
+
+ line_items = []
+ _line_items = d.pop("lineItems", UNSET)
+ for line_items_item_data in (_line_items or []):
+ line_items_item = LineItemReference.from_dict(line_items_item_data)
+
+
+
+ line_items.append(line_items_item)
+
+
+ shipment_tracking_number = d.pop("shipmentTrackingNumber", UNSET)
+
+ shipped_date = d.pop("shippedDate", UNSET)
+
+ shipping_carrier_code = d.pop("shippingCarrierCode", UNSET)
+
+ shipping_fulfillment = cls(
+ fulfillment_id=fulfillment_id,
+ line_items=line_items,
+ shipment_tracking_number=shipment_tracking_number,
+ shipped_date=shipped_date,
+ shipping_carrier_code=shipping_carrier_code,
+ )
+
+
+ shipping_fulfillment.additional_properties = d
+ return shipping_fulfillment
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/shipping_fulfillment_details.py b/ebay_client/generated/fulfillment/models/shipping_fulfillment_details.py
new file mode 100644
index 0000000..fb87f7e
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/shipping_fulfillment_details.py
@@ -0,0 +1,149 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.line_item_reference import LineItemReference
+
+
+
+
+
+T = TypeVar("T", bound="ShippingFulfillmentDetails")
+
+
+
+@_attrs_define
+class ShippingFulfillmentDetails:
+ """ This type contains the details for creating a fulfillment for an order.
+
+ Attributes:
+ line_items (Union[Unset, list['LineItemReference']]): This array contains a list of or more line items and the
+ quantity that will be shipped in the same package.
+ shipped_date (Union[Unset, str]): This is the actual date and time that the fulfillment package was shipped.
+ This timestamp is in ISO 8601 format, which uses the 24-hour Universal Coordinated Time (UTC) clock. The seller
+ should use the actual date/time that the package was shipped, but if this field is omitted, it will default to
+ the current date/time.
Format: [YYYY]-[MM]-[DD]T[hh]:[mm]:[ss].[sss]Z
+
Example: 2015-08-04T19:09:02.768Z
Default: The current date and time.
+ shipping_carrier_code (Union[Unset, str]): The unique identifier of the shipping carrier being used to ship the
+ line item(s). Technically, the shippingCarrierCode and trackingNumber fields
+ are optional, but generally these fields will be provided if the shipping carrier and tracking number are known.
+
Note: Use the Trading API's GeteBayDetails call to retrieve the latest shipping carrier enumeration values. When making
+ the GeteBayDetails call, include the DetailName field in the request payload
+ and set its value to ShippingCarrierDetails. Each valid shipping carrier enumeration value is
+ returned in a ShippingCarrierDetails.ShippingCarrier field in the response payload.
+ tracking_number (Union[Unset, str]): The tracking number provided by the shipping carrier for this fulfillment.
+ The seller should be careful that this tracking number is accurate since the buyer will use this tracking number
+ to track shipment, and eBay has no way to verify the accuracy of this number.
This field and the
+ shippingCarrierCode field are mutually dependent. If you include one, you must also include the
+ other.
Note: If you include trackingNumber (and
+ shippingCarrierCode) in the request, the resulting fulfillment's ID (returned in the HTTP location
+ response header) is the tracking number. If you do not include shipment tracking information, the resulting
+ fulfillment ID will default to an arbitrary number such as 999.
Note: Only alphanumeric characters are supported for shipment tracking
+ numbers. Spaces, hyphens, and all other special characters are not supported. Do not include a space in the
+ tracking number even if a space appears in the tracking number on the shipping label.
+ """
+
+ line_items: Union[Unset, list['LineItemReference']] = UNSET
+ shipped_date: Union[Unset, str] = UNSET
+ shipping_carrier_code: Union[Unset, str] = UNSET
+ tracking_number: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.line_item_reference import LineItemReference
+ line_items: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.line_items, Unset):
+ line_items = []
+ for line_items_item_data in self.line_items:
+ line_items_item = line_items_item_data.to_dict()
+ line_items.append(line_items_item)
+
+
+
+ shipped_date = self.shipped_date
+
+ shipping_carrier_code = self.shipping_carrier_code
+
+ tracking_number = self.tracking_number
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if line_items is not UNSET:
+ field_dict["lineItems"] = line_items
+ if shipped_date is not UNSET:
+ field_dict["shippedDate"] = shipped_date
+ if shipping_carrier_code is not UNSET:
+ field_dict["shippingCarrierCode"] = shipping_carrier_code
+ if tracking_number is not UNSET:
+ field_dict["trackingNumber"] = tracking_number
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.line_item_reference import LineItemReference
+ d = dict(src_dict)
+ line_items = []
+ _line_items = d.pop("lineItems", UNSET)
+ for line_items_item_data in (_line_items or []):
+ line_items_item = LineItemReference.from_dict(line_items_item_data)
+
+
+
+ line_items.append(line_items_item)
+
+
+ shipped_date = d.pop("shippedDate", UNSET)
+
+ shipping_carrier_code = d.pop("shippingCarrierCode", UNSET)
+
+ tracking_number = d.pop("trackingNumber", UNSET)
+
+ shipping_fulfillment_details = cls(
+ line_items=line_items,
+ shipped_date=shipped_date,
+ shipping_carrier_code=shipping_carrier_code,
+ tracking_number=tracking_number,
+ )
+
+
+ shipping_fulfillment_details.additional_properties = d
+ return shipping_fulfillment_details
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/shipping_fulfillment_paged_collection.py b/ebay_client/generated/fulfillment/models/shipping_fulfillment_paged_collection.py
new file mode 100644
index 0000000..f6526e2
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/shipping_fulfillment_paged_collection.py
@@ -0,0 +1,140 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.error import Error
+ from ..models.shipping_fulfillment import ShippingFulfillment
+
+
+
+
+
+T = TypeVar("T", bound="ShippingFulfillmentPagedCollection")
+
+
+
+@_attrs_define
+class ShippingFulfillmentPagedCollection:
+ """ This type contains the specifications for the entire collection of shipping fulfillments that are associated with
+ the order specified by a getShippingFulfillments call. The fulfillments container returns an array of
+ all the fulfillments in the collection.
+
+ Attributes:
+ fulfillments (Union[Unset, list['ShippingFulfillment']]): This array contains one or more fulfillments required
+ for the order that was specified in method endpoint.
+ total (Union[Unset, int]): The total number of fulfillments in the specified order.
Note: If no fulfillments are found for the order, this field is returned with
+ a value of 0.
+ warnings (Union[Unset, list['Error']]): This array is only returned if one or more errors or warnings occur with
+ the call request.
+ """
+
+ fulfillments: Union[Unset, list['ShippingFulfillment']] = UNSET
+ total: Union[Unset, int] = UNSET
+ warnings: Union[Unset, list['Error']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.error import Error
+ from ..models.shipping_fulfillment import ShippingFulfillment
+ fulfillments: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.fulfillments, Unset):
+ fulfillments = []
+ for fulfillments_item_data in self.fulfillments:
+ fulfillments_item = fulfillments_item_data.to_dict()
+ fulfillments.append(fulfillments_item)
+
+
+
+ total = self.total
+
+ warnings: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.warnings, Unset):
+ warnings = []
+ for warnings_item_data in self.warnings:
+ warnings_item = warnings_item_data.to_dict()
+ warnings.append(warnings_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if fulfillments is not UNSET:
+ field_dict["fulfillments"] = fulfillments
+ if total is not UNSET:
+ field_dict["total"] = total
+ if warnings is not UNSET:
+ field_dict["warnings"] = warnings
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.error import Error
+ from ..models.shipping_fulfillment import ShippingFulfillment
+ d = dict(src_dict)
+ fulfillments = []
+ _fulfillments = d.pop("fulfillments", UNSET)
+ for fulfillments_item_data in (_fulfillments or []):
+ fulfillments_item = ShippingFulfillment.from_dict(fulfillments_item_data)
+
+
+
+ fulfillments.append(fulfillments_item)
+
+
+ total = d.pop("total", UNSET)
+
+ warnings = []
+ _warnings = d.pop("warnings", UNSET)
+ for warnings_item_data in (_warnings or []):
+ warnings_item = Error.from_dict(warnings_item_data)
+
+
+
+ warnings.append(warnings_item)
+
+
+ shipping_fulfillment_paged_collection = cls(
+ fulfillments=fulfillments,
+ total=total,
+ warnings=warnings,
+ )
+
+
+ shipping_fulfillment_paged_collection.additional_properties = d
+ return shipping_fulfillment_paged_collection
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/shipping_step.py b/ebay_client/generated/fulfillment/models/shipping_step.py
new file mode 100644
index 0000000..b323948
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/shipping_step.py
@@ -0,0 +1,142 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.extended_contact import ExtendedContact
+
+
+
+
+
+T = TypeVar("T", bound="ShippingStep")
+
+
+
+@_attrs_define
+class ShippingStep:
+ """ This type contains shipping information for a fulfillment, including the shipping carrier, the shipping service
+ option, the shipment destination, and the Global Shipping Program reference ID.
+
+ Attributes:
+ shipping_carrier_code (Union[Unset, str]): The unique identifier of the shipping carrier being used to ship the
+ line item.
Note: The Trading API's GeteBayDetails call can be used to retrieve the latest shipping carrier and shipping service
+ option enumeration values.
+ shipping_service_code (Union[Unset, str]): The unique identifier of the shipping service option being used to
+ ship the line item.
Note: Use the Trading API's GeteBayDetails call to retrieve
+ the latest shipping carrier and shipping service option enumeration values. When making the GeteBayDetails call, include
+ the DetailName field in the request payload and set its value to
+ ShippingServiceDetails. Each valid shipping service option (returned in
+ ShippingServiceDetails.ShippingService field) and corresponding shipping carrier (returned in
+ ShippingServiceDetails.ShippingCarrier field) is returned in response payload.
+ ship_to (Union[Unset, ExtendedContact]): This type contains shipping and contact information for a buyer or an
+ eBay shipping partner.
+ ship_to_reference_id (Union[Unset, str]): This is the unique identifer of the Global Shipping Program (GSP)
+ shipment. This field is only returned if the line item is being shipped via GSP (the value of the
+ fulfillmentStartInstructions.ebaySupportedFulfillment field will be true. The international
+ shipping provider uses the shipToReferenceId value as the primary reference number to retrieve the
+ relevant details about the buyer, the order, and the fulfillment, so the shipment can be completed.
+
Sellers must include this value on the shipping label immediately above the street address of the
+ international shipping provider.
Example: "Reference #1234567890123456"
Note: This value is the same as the ShipToAddress.ReferenceID value
+ returned by the Trading API's GetOrders call.
+ """
+
+ shipping_carrier_code: Union[Unset, str] = UNSET
+ shipping_service_code: Union[Unset, str] = UNSET
+ ship_to: Union[Unset, 'ExtendedContact'] = UNSET
+ ship_to_reference_id: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.extended_contact import ExtendedContact
+ shipping_carrier_code = self.shipping_carrier_code
+
+ shipping_service_code = self.shipping_service_code
+
+ ship_to: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.ship_to, Unset):
+ ship_to = self.ship_to.to_dict()
+
+ ship_to_reference_id = self.ship_to_reference_id
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if shipping_carrier_code is not UNSET:
+ field_dict["shippingCarrierCode"] = shipping_carrier_code
+ if shipping_service_code is not UNSET:
+ field_dict["shippingServiceCode"] = shipping_service_code
+ if ship_to is not UNSET:
+ field_dict["shipTo"] = ship_to
+ if ship_to_reference_id is not UNSET:
+ field_dict["shipToReferenceId"] = ship_to_reference_id
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.extended_contact import ExtendedContact
+ d = dict(src_dict)
+ shipping_carrier_code = d.pop("shippingCarrierCode", UNSET)
+
+ shipping_service_code = d.pop("shippingServiceCode", UNSET)
+
+ _ship_to = d.pop("shipTo", UNSET)
+ ship_to: Union[Unset, ExtendedContact]
+ if isinstance(_ship_to, Unset):
+ ship_to = UNSET
+ else:
+ ship_to = ExtendedContact.from_dict(_ship_to)
+
+
+
+
+ ship_to_reference_id = d.pop("shipToReferenceId", UNSET)
+
+ shipping_step = cls(
+ shipping_carrier_code=shipping_carrier_code,
+ shipping_service_code=shipping_service_code,
+ ship_to=ship_to,
+ ship_to_reference_id=ship_to_reference_id,
+ )
+
+
+ shipping_step.additional_properties = d
+ return shipping_step
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/simple_amount.py b/ebay_client/generated/fulfillment/models/simple_amount.py
new file mode 100644
index 0000000..6891040
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/simple_amount.py
@@ -0,0 +1,92 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="SimpleAmount")
+
+
+
+@_attrs_define
+class SimpleAmount:
+ """ This type defines the monetary value of the payment dispute, and the currency used.
+
+ Attributes:
+ currency (Union[Unset, str]): A three-letter ISO 4217 code (such as USD for US site) that indicates
+ the currency of the amount in the value field. Both the value and
+ currency fields are always returned with the amount container. For
+ implementation help, refer to eBay API documentation
+ value (Union[Unset, str]): The monetary amount of the payment dispute. Both the value and
+ currency fields are always returned with the amount container.
+ """
+
+ currency: Union[Unset, str] = UNSET
+ value: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ currency = self.currency
+
+ value = self.value
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if currency is not UNSET:
+ field_dict["currency"] = currency
+ if value is not UNSET:
+ field_dict["value"] = value
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ currency = d.pop("currency", UNSET)
+
+ value = d.pop("value", UNSET)
+
+ simple_amount = cls(
+ currency=currency,
+ value=value,
+ )
+
+
+ simple_amount.additional_properties = d
+ return simple_amount
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/tax.py b/ebay_client/generated/fulfillment/models/tax.py
new file mode 100644
index 0000000..da4cbc1
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/tax.py
@@ -0,0 +1,107 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.amount import Amount
+
+
+
+
+
+T = TypeVar("T", bound="Tax")
+
+
+
+@_attrs_define
+class Tax:
+ """ This type contains information about any sales tax applied to a line item.
+
+ Attributes:
+ amount (Union[Unset, Amount]): This type defines the monetary value of an amount. It can provide the amount in
+ both the currency used on the eBay site where an item is being offered and the conversion of that value into
+ another currency, if applicable.
+ tax_type (Union[Unset, str]): Tax type. This field is only available when fieldGroups is set to
+ TAX_BREAKDOWN. If the order has fees, a breakdown of the fees is also provided. For implementation
+ help, refer to eBay API
+ documentation
+ """
+
+ amount: Union[Unset, 'Amount'] = UNSET
+ tax_type: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.amount import Amount
+ amount: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.amount, Unset):
+ amount = self.amount.to_dict()
+
+ tax_type = self.tax_type
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if amount is not UNSET:
+ field_dict["amount"] = amount
+ if tax_type is not UNSET:
+ field_dict["taxType"] = tax_type
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.amount import Amount
+ d = dict(src_dict)
+ _amount = d.pop("amount", UNSET)
+ amount: Union[Unset, Amount]
+ if isinstance(_amount, Unset):
+ amount = UNSET
+ else:
+ amount = Amount.from_dict(_amount)
+
+
+
+
+ tax_type = d.pop("taxType", UNSET)
+
+ tax = cls(
+ amount=amount,
+ tax_type=tax_type,
+ )
+
+
+ tax.additional_properties = d
+ return tax
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/tax_address.py b/ebay_client/generated/fulfillment/models/tax_address.py
new file mode 100644
index 0000000..e041b11
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/tax_address.py
@@ -0,0 +1,109 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="TaxAddress")
+
+
+
+@_attrs_define
+class TaxAddress:
+ """ This container consists of address information that can be used by sellers for tax purpose.
+
+ Attributes:
+ city (Union[Unset, str]): The city name that can be used by sellers for tax purpose.
+ country_code (Union[Unset, str]): The country code that can be used by sellers for tax purpose, represented as a
+ two-letter ISO 3166-1 alpha-2 country code. For example, US represents the United States, and
+ DE represents Germany. For implementation help, refer to eBay API documentation
+ postal_code (Union[Unset, str]): The postal code that can be used by sellers for tax purpose. Usually referred
+ to as Zip codes in the US.
+ state_or_province (Union[Unset, str]): The state name that can be used by sellers for tax purpose.
+ """
+
+ city: Union[Unset, str] = UNSET
+ country_code: Union[Unset, str] = UNSET
+ postal_code: Union[Unset, str] = UNSET
+ state_or_province: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ city = self.city
+
+ country_code = self.country_code
+
+ postal_code = self.postal_code
+
+ state_or_province = self.state_or_province
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if city is not UNSET:
+ field_dict["city"] = city
+ if country_code is not UNSET:
+ field_dict["countryCode"] = country_code
+ if postal_code is not UNSET:
+ field_dict["postalCode"] = postal_code
+ if state_or_province is not UNSET:
+ field_dict["stateOrProvince"] = state_or_province
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ city = d.pop("city", UNSET)
+
+ country_code = d.pop("countryCode", UNSET)
+
+ postal_code = d.pop("postalCode", UNSET)
+
+ state_or_province = d.pop("stateOrProvince", UNSET)
+
+ tax_address = cls(
+ city=city,
+ country_code=country_code,
+ postal_code=postal_code,
+ state_or_province=state_or_province,
+ )
+
+
+ tax_address.additional_properties = d
+ return tax_address
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/tax_identifier.py b/ebay_client/generated/fulfillment/models/tax_identifier.py
new file mode 100644
index 0000000..5d03901
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/tax_identifier.py
@@ -0,0 +1,111 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="TaxIdentifier")
+
+
+
+@_attrs_define
+class TaxIdentifier:
+ """ This type is used by the taxIdentifier container that is returned in getOrder. The
+ taxIdentifier container consists of taxpayer identification information for buyers from Italy,
+ Spain, or Guatemala. It is currently only returned for orders occurring on the eBay Italy or eBay Spain
+ marketplaces.
Note: Currently, the taxIdentifier
+ container is only returned in getOrder and not in getOrders. So, if a seller
+ wanted to view a buyer's tax information for a particular order returned in getOrders, that seller
+ would need to use the orderId value for that particular order, and then run a
+ getOrder call against that order ID.
+
+ Attributes:
+ taxpayer_id (Union[Unset, str]): This value is the unique tax ID associated with the buyer. The type of tax
+ identification is shown in the taxIdentifierType field.
+ tax_identifier_type (Union[Unset, str]): This enumeration value indicates the type of tax identification being
+ used for the buyer. The different tax types are defined in the TaxIdentifierTypeEnum type. For
+ implementation help, refer to eBay API documentation
+ issuing_country (Union[Unset, str]): This two-letter code indicates the country that issued the buyer's tax ID.
+ The country that the two-letter code represents can be found in the CountryCodeEnum type, or in
+ the ISO 3166 standard. For implementation help,
+ refer to eBay API
+ documentation
+ """
+
+ taxpayer_id: Union[Unset, str] = UNSET
+ tax_identifier_type: Union[Unset, str] = UNSET
+ issuing_country: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ taxpayer_id = self.taxpayer_id
+
+ tax_identifier_type = self.tax_identifier_type
+
+ issuing_country = self.issuing_country
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if taxpayer_id is not UNSET:
+ field_dict["taxpayerId"] = taxpayer_id
+ if tax_identifier_type is not UNSET:
+ field_dict["taxIdentifierType"] = tax_identifier_type
+ if issuing_country is not UNSET:
+ field_dict["issuingCountry"] = issuing_country
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ taxpayer_id = d.pop("taxpayerId", UNSET)
+
+ tax_identifier_type = d.pop("taxIdentifierType", UNSET)
+
+ issuing_country = d.pop("issuingCountry", UNSET)
+
+ tax_identifier = cls(
+ taxpayer_id=taxpayer_id,
+ tax_identifier_type=tax_identifier_type,
+ issuing_country=issuing_country,
+ )
+
+
+ tax_identifier.additional_properties = d
+ return tax_identifier
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/tracking_info.py b/ebay_client/generated/fulfillment/models/tracking_info.py
new file mode 100644
index 0000000..b2ca997
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/tracking_info.py
@@ -0,0 +1,89 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="TrackingInfo")
+
+
+
+@_attrs_define
+class TrackingInfo:
+ """ This type is used for seller provided shipment tracking information.
+
+ Attributes:
+ shipment_tracking_number (Union[Unset, str]): This string value represents the shipment tracking number of the
+ package.
+ shipping_carrier_code (Union[Unset, str]): This string value represents the shipping carrier used to ship the
+ package.
+ """
+
+ shipment_tracking_number: Union[Unset, str] = UNSET
+ shipping_carrier_code: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ shipment_tracking_number = self.shipment_tracking_number
+
+ shipping_carrier_code = self.shipping_carrier_code
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if shipment_tracking_number is not UNSET:
+ field_dict["shipmentTrackingNumber"] = shipment_tracking_number
+ if shipping_carrier_code is not UNSET:
+ field_dict["shippingCarrierCode"] = shipping_carrier_code
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ shipment_tracking_number = d.pop("shipmentTrackingNumber", UNSET)
+
+ shipping_carrier_code = d.pop("shippingCarrierCode", UNSET)
+
+ tracking_info = cls(
+ shipment_tracking_number=shipment_tracking_number,
+ shipping_carrier_code=shipping_carrier_code,
+ )
+
+
+ tracking_info.additional_properties = d
+ return tracking_info
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/models/update_evidence_payment_dispute_request.py b/ebay_client/generated/fulfillment/models/update_evidence_payment_dispute_request.py
new file mode 100644
index 0000000..06c5218
--- /dev/null
+++ b/ebay_client/generated/fulfillment/models/update_evidence_payment_dispute_request.py
@@ -0,0 +1,161 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.order_line_items import OrderLineItems
+ from ..models.file_evidence import FileEvidence
+
+
+
+
+
+T = TypeVar("T", bound="UpdateEvidencePaymentDisputeRequest")
+
+
+
+@_attrs_define
+class UpdateEvidencePaymentDisputeRequest:
+ """ This type is used by the request payload of the updateEvidence method. The
+ updateEvidence method is used to update an existing evidence set against a payment dispute with one
+ or more evidence files.
+
+ Attributes:
+ evidence_id (Union[Unset, str]): The unique identifier of the evidence set that is being updated with new
+ evidence files.
This ID is returned under the evidence array in the getPaymentDispute response.
+ evidence_type (Union[Unset, str]): This field is used to indicate the type of evidence being provided through
+ one or more evidence files. All evidence files (if more than one) should be associated with the evidence type
+ passed in this field.
See the EvidenceTypeEnum type for the supported evidence types. For implementation help, refer to
+ eBay API
+ documentation
+ files (Union[Unset, list['FileEvidence']]): This array is used to specify one or more evidence files that will
+ be added to the evidence set associated with a payment dispute. At least one evidence file must be specified in
+ the files array.
The unique identifier of an evidence file is returned in the response
+ payload of the uploadEvidence method.
+ line_items (Union[Unset, list['OrderLineItems']]): This required array identifies the order line item(s) for
+ which the evidence file(s) will be applicable.
These values are returned under the
+ evidenceRequests.lineItems array in the getPaymentDispute response.
Note: Both the itemId
+ and lineItemID fields are needed to identify each order line item.
+ """
+
+ evidence_id: Union[Unset, str] = UNSET
+ evidence_type: Union[Unset, str] = UNSET
+ files: Union[Unset, list['FileEvidence']] = UNSET
+ line_items: Union[Unset, list['OrderLineItems']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.order_line_items import OrderLineItems
+ from ..models.file_evidence import FileEvidence
+ evidence_id = self.evidence_id
+
+ evidence_type = self.evidence_type
+
+ files: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.files, Unset):
+ files = []
+ for files_item_data in self.files:
+ files_item = files_item_data.to_dict()
+ files.append(files_item)
+
+
+
+ line_items: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.line_items, Unset):
+ line_items = []
+ for line_items_item_data in self.line_items:
+ line_items_item = line_items_item_data.to_dict()
+ line_items.append(line_items_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if evidence_id is not UNSET:
+ field_dict["evidenceId"] = evidence_id
+ if evidence_type is not UNSET:
+ field_dict["evidenceType"] = evidence_type
+ if files is not UNSET:
+ field_dict["files"] = files
+ if line_items is not UNSET:
+ field_dict["lineItems"] = line_items
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.order_line_items import OrderLineItems
+ from ..models.file_evidence import FileEvidence
+ d = dict(src_dict)
+ evidence_id = d.pop("evidenceId", UNSET)
+
+ evidence_type = d.pop("evidenceType", UNSET)
+
+ files = []
+ _files = d.pop("files", UNSET)
+ for files_item_data in (_files or []):
+ files_item = FileEvidence.from_dict(files_item_data)
+
+
+
+ files.append(files_item)
+
+
+ line_items = []
+ _line_items = d.pop("lineItems", UNSET)
+ for line_items_item_data in (_line_items or []):
+ line_items_item = OrderLineItems.from_dict(line_items_item_data)
+
+
+
+ line_items.append(line_items_item)
+
+
+ update_evidence_payment_dispute_request = cls(
+ evidence_id=evidence_id,
+ evidence_type=evidence_type,
+ files=files,
+ line_items=line_items,
+ )
+
+
+ update_evidence_payment_dispute_request.additional_properties = d
+ return update_evidence_payment_dispute_request
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/fulfillment/types.py b/ebay_client/generated/fulfillment/types.py
new file mode 100644
index 0000000..2330892
--- /dev/null
+++ b/ebay_client/generated/fulfillment/types.py
@@ -0,0 +1,53 @@
+""" Contains some shared types for properties """
+
+from collections.abc import Mapping, MutableMapping
+from http import HTTPStatus
+from typing import BinaryIO, Generic, Optional, TypeVar, Literal, Union, IO
+
+from attrs import define
+
+
+class Unset:
+ def __bool__(self) -> Literal[False]:
+ return False
+
+
+UNSET: Unset = Unset()
+
+# The types that `httpx.Client(files=)` can accept, copied from that library.
+FileContent = Union[IO[bytes], bytes, str]
+FileTypes = Union[
+ # (filename, file (or bytes), content_type)
+ tuple[Optional[str], FileContent, Optional[str]],
+ # (filename, file (or bytes), content_type, headers)
+ tuple[Optional[str], FileContent, Optional[str], Mapping[str, str]],
+]
+RequestFiles = list[tuple[str, FileTypes]]
+
+@define
+class File:
+ """ Contains information for file uploads """
+
+ payload: BinaryIO
+ file_name: Optional[str] = None
+ mime_type: Optional[str] = None
+
+ def to_tuple(self) -> FileTypes:
+ """ Return a tuple representation that httpx will accept for multipart/form-data """
+ return self.file_name, self.payload, self.mime_type
+
+
+T = TypeVar("T")
+
+
+@define
+class Response(Generic[T]):
+ """ A response from an endpoint """
+
+ status_code: HTTPStatus
+ content: bytes
+ headers: MutableMapping[str, str]
+ parsed: Optional[T]
+
+
+__all__ = ["UNSET", "File", "FileTypes", "RequestFiles", "Response", "Unset"]
diff --git a/ebay_client/generated/inventory/__init__.py b/ebay_client/generated/inventory/__init__.py
new file mode 100644
index 0000000..8ad2169
--- /dev/null
+++ b/ebay_client/generated/inventory/__init__.py
@@ -0,0 +1,8 @@
+
+""" A client library for accessing Inventory API """
+from .client import AuthenticatedClient, Client
+
+__all__ = (
+ "AuthenticatedClient",
+ "Client",
+)
diff --git a/ebay_client/generated/inventory/api/__init__.py b/ebay_client/generated/inventory/api/__init__.py
new file mode 100644
index 0000000..dc035f4
--- /dev/null
+++ b/ebay_client/generated/inventory/api/__init__.py
@@ -0,0 +1 @@
+""" Contains methods for accessing the API """
diff --git a/ebay_client/generated/inventory/api/inventory_item/__init__.py b/ebay_client/generated/inventory/api/inventory_item/__init__.py
new file mode 100644
index 0000000..c9921b5
--- /dev/null
+++ b/ebay_client/generated/inventory/api/inventory_item/__init__.py
@@ -0,0 +1 @@
+""" Contains endpoint functions for accessing the API """
diff --git a/ebay_client/generated/inventory/api/inventory_item/bulk_create_or_replace_inventory_item.py b/ebay_client/generated/inventory/api/inventory_item/bulk_create_or_replace_inventory_item.py
new file mode 100644
index 0000000..41b630d
--- /dev/null
+++ b/ebay_client/generated/inventory/api/inventory_item/bulk_create_or_replace_inventory_item.py
@@ -0,0 +1,395 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.bulk_inventory_item import BulkInventoryItem
+from ...models.bulk_inventory_item_response import BulkInventoryItemResponse
+from typing import cast
+
+
+
+def _get_kwargs(
+ *,
+ body: BulkInventoryItem,
+ content_type: str,
+ content_language: str,
+
+) -> dict[str, Any]:
+ headers: dict[str, Any] = {}
+ headers["Content-Type"] = content_type
+
+ headers["Content-Language"] = content_language
+
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "post",
+ "url": "/bulk_create_or_replace_inventory_item",
+ }
+
+ _kwargs["json"] = body.to_dict()
+
+
+ headers["Content-Type"] = "application/json"
+
+ _kwargs["headers"] = headers
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, BulkInventoryItemResponse]]:
+ if response.status_code == 200:
+ response_200 = BulkInventoryItemResponse.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 207:
+ response_207 = cast(Any, None)
+ return response_207
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, BulkInventoryItemResponse]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ *,
+ client: AuthenticatedClient,
+ body: BulkInventoryItem,
+ content_type: str,
+ content_language: str,
+
+) -> Response[Union[Any, BulkInventoryItemResponse]]:
+ r""" Note: Please note that any eBay listing created using the
+ Inventory API cannot be revised or relisted using the Trading API calls.
Note: Each listing can be revised up to 250 times in one
+ calendar day. If this revision threshold is reached, the seller will be blocked from revising the
+ item until the next calendar day.
This call can be used to create and/or update up to 25
+ new inventory item records. It is up to sellers whether they want to create a complete inventory
+ item records right from the start, or sellers can provide only some information with the initial
+ bulkCreateOrReplaceInventoryItem call, and then make one or more additional
+ bulkCreateOrReplaceInventoryItem calls to complete all required fields for the
+ inventory item records and prepare for publishing. Upon first creating inventory item records, only
+ the SKU values are required.
Important!Publish offer note: Fields may be
+ optional or conditionally required when calling this method, but become required when publishing the
+ offer to create an active listing. For this method, see Inventory item
+ fields for a list of fields required to publish an offer.
Note: In addition to the authorization header, which is
+ required for all eBay REST API calls, this call also requires the Content-Language and
+ Content-Type headers. See the HTTP request headers section for more information.
In the case of updating
+ existing inventory item records, the bulkCreateOrReplaceInventoryItem call will do
+ a complete replacement of the existing inventory item records, so all fields that are currently
+ defined for the inventory item record are required in that update action, regardless of whether
+ their values changed. So, when replacing/updating an inventory item record, it is advised that the
+ seller run a 'Get' call to retrieve the full details of the inventory item records and see all of
+ its current values/settings before attempting to update the records. Any changes that are made to
+ inventory item records that are part of one or more active eBay listings, a successful call will
+ automatically update these active listings.
The key information that is set with the
+ bulkCreateOrReplaceInventoryItem call include: - Seller-defined SKU value
+ for the product. Each seller product, including products within an item inventory group, must have
+ their own SKU value.
- Condition of the item
- Product details, including any product
+ identifier(s), such as a UPC, ISBN, EAN, or Brand/Manufacturer Part Number pair, a product
+ description, a product title, product/item aspects, and links to images. eBay will use any supplied
+ eBay Product ID (ePID) or a GTIN (UPC, ISBN, or EAN) and attempt to match those identifiers to a
+ product in the eBay Catalog, and if a product match is found, the product details for the inventory
+ item will automatically be populated.
- Quantity of the inventory item that is available for
+ purchase
- Package weight and dimensions, which is required if the seller will be offering
+ calculated shipping options. The package weight will also be required if the seller will be
+ providing flat-rate shipping services, but charging a weight surcharge.
For those who
+ prefer to create or update a single inventory item record, the
+ createOrReplaceInventoryItem method can be used.
+
+ Args:
+ content_type (str):
+ content_language (str):
+ body (BulkInventoryItem): The base request of the
+ bulkCreateOrReplaceInventoryItem method.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, BulkInventoryItemResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ body=body,
+content_type=content_type,
+content_language=content_language,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ *,
+ client: AuthenticatedClient,
+ body: BulkInventoryItem,
+ content_type: str,
+ content_language: str,
+
+) -> Optional[Union[Any, BulkInventoryItemResponse]]:
+ r""" Note: Please note that any eBay listing created using the
+ Inventory API cannot be revised or relisted using the Trading API calls.
Note: Each listing can be revised up to 250 times in one
+ calendar day. If this revision threshold is reached, the seller will be blocked from revising the
+ item until the next calendar day.
This call can be used to create and/or update up to 25
+ new inventory item records. It is up to sellers whether they want to create a complete inventory
+ item records right from the start, or sellers can provide only some information with the initial
+ bulkCreateOrReplaceInventoryItem call, and then make one or more additional
+ bulkCreateOrReplaceInventoryItem calls to complete all required fields for the
+ inventory item records and prepare for publishing. Upon first creating inventory item records, only
+ the SKU values are required.
Important!Publish offer note: Fields may be
+ optional or conditionally required when calling this method, but become required when publishing the
+ offer to create an active listing. For this method, see Inventory item
+ fields for a list of fields required to publish an offer.
Note: In addition to the authorization header, which is
+ required for all eBay REST API calls, this call also requires the Content-Language and
+ Content-Type headers. See the HTTP request headers section for more information.
In the case of updating
+ existing inventory item records, the bulkCreateOrReplaceInventoryItem call will do
+ a complete replacement of the existing inventory item records, so all fields that are currently
+ defined for the inventory item record are required in that update action, regardless of whether
+ their values changed. So, when replacing/updating an inventory item record, it is advised that the
+ seller run a 'Get' call to retrieve the full details of the inventory item records and see all of
+ its current values/settings before attempting to update the records. Any changes that are made to
+ inventory item records that are part of one or more active eBay listings, a successful call will
+ automatically update these active listings.
The key information that is set with the
+ bulkCreateOrReplaceInventoryItem call include: - Seller-defined SKU value
+ for the product. Each seller product, including products within an item inventory group, must have
+ their own SKU value.
- Condition of the item
- Product details, including any product
+ identifier(s), such as a UPC, ISBN, EAN, or Brand/Manufacturer Part Number pair, a product
+ description, a product title, product/item aspects, and links to images. eBay will use any supplied
+ eBay Product ID (ePID) or a GTIN (UPC, ISBN, or EAN) and attempt to match those identifiers to a
+ product in the eBay Catalog, and if a product match is found, the product details for the inventory
+ item will automatically be populated.
- Quantity of the inventory item that is available for
+ purchase
- Package weight and dimensions, which is required if the seller will be offering
+ calculated shipping options. The package weight will also be required if the seller will be
+ providing flat-rate shipping services, but charging a weight surcharge.
For those who
+ prefer to create or update a single inventory item record, the
+ createOrReplaceInventoryItem method can be used.
+
+ Args:
+ content_type (str):
+ content_language (str):
+ body (BulkInventoryItem): The base request of the
+ bulkCreateOrReplaceInventoryItem method.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, BulkInventoryItemResponse]
+ """
+
+
+ return sync_detailed(
+ client=client,
+body=body,
+content_type=content_type,
+content_language=content_language,
+
+ ).parsed
+
+async def asyncio_detailed(
+ *,
+ client: AuthenticatedClient,
+ body: BulkInventoryItem,
+ content_type: str,
+ content_language: str,
+
+) -> Response[Union[Any, BulkInventoryItemResponse]]:
+ r""" Note: Please note that any eBay listing created using the
+ Inventory API cannot be revised or relisted using the Trading API calls.
Note: Each listing can be revised up to 250 times in one
+ calendar day. If this revision threshold is reached, the seller will be blocked from revising the
+ item until the next calendar day.
This call can be used to create and/or update up to 25
+ new inventory item records. It is up to sellers whether they want to create a complete inventory
+ item records right from the start, or sellers can provide only some information with the initial
+ bulkCreateOrReplaceInventoryItem call, and then make one or more additional
+ bulkCreateOrReplaceInventoryItem calls to complete all required fields for the
+ inventory item records and prepare for publishing. Upon first creating inventory item records, only
+ the SKU values are required.
Important!Publish offer note: Fields may be
+ optional or conditionally required when calling this method, but become required when publishing the
+ offer to create an active listing. For this method, see Inventory item
+ fields for a list of fields required to publish an offer.
Note: In addition to the authorization header, which is
+ required for all eBay REST API calls, this call also requires the Content-Language and
+ Content-Type headers. See the HTTP request headers section for more information.
In the case of updating
+ existing inventory item records, the bulkCreateOrReplaceInventoryItem call will do
+ a complete replacement of the existing inventory item records, so all fields that are currently
+ defined for the inventory item record are required in that update action, regardless of whether
+ their values changed. So, when replacing/updating an inventory item record, it is advised that the
+ seller run a 'Get' call to retrieve the full details of the inventory item records and see all of
+ its current values/settings before attempting to update the records. Any changes that are made to
+ inventory item records that are part of one or more active eBay listings, a successful call will
+ automatically update these active listings.
The key information that is set with the
+ bulkCreateOrReplaceInventoryItem call include: - Seller-defined SKU value
+ for the product. Each seller product, including products within an item inventory group, must have
+ their own SKU value.
- Condition of the item
- Product details, including any product
+ identifier(s), such as a UPC, ISBN, EAN, or Brand/Manufacturer Part Number pair, a product
+ description, a product title, product/item aspects, and links to images. eBay will use any supplied
+ eBay Product ID (ePID) or a GTIN (UPC, ISBN, or EAN) and attempt to match those identifiers to a
+ product in the eBay Catalog, and if a product match is found, the product details for the inventory
+ item will automatically be populated.
- Quantity of the inventory item that is available for
+ purchase
- Package weight and dimensions, which is required if the seller will be offering
+ calculated shipping options. The package weight will also be required if the seller will be
+ providing flat-rate shipping services, but charging a weight surcharge.
For those who
+ prefer to create or update a single inventory item record, the
+ createOrReplaceInventoryItem method can be used.
+
+ Args:
+ content_type (str):
+ content_language (str):
+ body (BulkInventoryItem): The base request of the
+ bulkCreateOrReplaceInventoryItem method.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, BulkInventoryItemResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ body=body,
+content_type=content_type,
+content_language=content_language,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ *,
+ client: AuthenticatedClient,
+ body: BulkInventoryItem,
+ content_type: str,
+ content_language: str,
+
+) -> Optional[Union[Any, BulkInventoryItemResponse]]:
+ r""" Note: Please note that any eBay listing created using the
+ Inventory API cannot be revised or relisted using the Trading API calls.
Note: Each listing can be revised up to 250 times in one
+ calendar day. If this revision threshold is reached, the seller will be blocked from revising the
+ item until the next calendar day.
This call can be used to create and/or update up to 25
+ new inventory item records. It is up to sellers whether they want to create a complete inventory
+ item records right from the start, or sellers can provide only some information with the initial
+ bulkCreateOrReplaceInventoryItem call, and then make one or more additional
+ bulkCreateOrReplaceInventoryItem calls to complete all required fields for the
+ inventory item records and prepare for publishing. Upon first creating inventory item records, only
+ the SKU values are required.
Important!Publish offer note: Fields may be
+ optional or conditionally required when calling this method, but become required when publishing the
+ offer to create an active listing. For this method, see Inventory item
+ fields for a list of fields required to publish an offer.
Note: In addition to the authorization header, which is
+ required for all eBay REST API calls, this call also requires the Content-Language and
+ Content-Type headers. See the HTTP request headers section for more information.
In the case of updating
+ existing inventory item records, the bulkCreateOrReplaceInventoryItem call will do
+ a complete replacement of the existing inventory item records, so all fields that are currently
+ defined for the inventory item record are required in that update action, regardless of whether
+ their values changed. So, when replacing/updating an inventory item record, it is advised that the
+ seller run a 'Get' call to retrieve the full details of the inventory item records and see all of
+ its current values/settings before attempting to update the records. Any changes that are made to
+ inventory item records that are part of one or more active eBay listings, a successful call will
+ automatically update these active listings.
The key information that is set with the
+ bulkCreateOrReplaceInventoryItem call include: - Seller-defined SKU value
+ for the product. Each seller product, including products within an item inventory group, must have
+ their own SKU value.
- Condition of the item
- Product details, including any product
+ identifier(s), such as a UPC, ISBN, EAN, or Brand/Manufacturer Part Number pair, a product
+ description, a product title, product/item aspects, and links to images. eBay will use any supplied
+ eBay Product ID (ePID) or a GTIN (UPC, ISBN, or EAN) and attempt to match those identifiers to a
+ product in the eBay Catalog, and if a product match is found, the product details for the inventory
+ item will automatically be populated.
- Quantity of the inventory item that is available for
+ purchase
- Package weight and dimensions, which is required if the seller will be offering
+ calculated shipping options. The package weight will also be required if the seller will be
+ providing flat-rate shipping services, but charging a weight surcharge.
For those who
+ prefer to create or update a single inventory item record, the
+ createOrReplaceInventoryItem method can be used.
+
+ Args:
+ content_type (str):
+ content_language (str):
+ body (BulkInventoryItem): The base request of the
+ bulkCreateOrReplaceInventoryItem method.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, BulkInventoryItemResponse]
+ """
+
+
+ return (await asyncio_detailed(
+ client=client,
+body=body,
+content_type=content_type,
+content_language=content_language,
+
+ )).parsed
diff --git a/ebay_client/generated/inventory/api/inventory_item/bulk_get_inventory_item.py b/ebay_client/generated/inventory/api/inventory_item/bulk_get_inventory_item.py
new file mode 100644
index 0000000..c020ed4
--- /dev/null
+++ b/ebay_client/generated/inventory/api/inventory_item/bulk_get_inventory_item.py
@@ -0,0 +1,236 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.bulk_get_inventory_item import BulkGetInventoryItem
+from ...models.bulk_get_inventory_item_response import BulkGetInventoryItemResponse
+from typing import cast
+
+
+
+def _get_kwargs(
+ *,
+ body: BulkGetInventoryItem,
+ content_type: str,
+
+) -> dict[str, Any]:
+ headers: dict[str, Any] = {}
+ headers["Content-Type"] = content_type
+
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "post",
+ "url": "/bulk_get_inventory_item",
+ }
+
+ _kwargs["json"] = body.to_dict()
+
+
+ headers["Content-Type"] = "application/json"
+
+ _kwargs["headers"] = headers
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, BulkGetInventoryItemResponse]]:
+ if response.status_code == 200:
+ response_200 = BulkGetInventoryItemResponse.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 207:
+ response_207 = cast(Any, None)
+ return response_207
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, BulkGetInventoryItemResponse]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ *,
+ client: AuthenticatedClient,
+ body: BulkGetInventoryItem,
+ content_type: str,
+
+) -> Response[Union[Any, BulkGetInventoryItemResponse]]:
+ r""" This call retrieves up to 25 inventory item records. The SKU value of each inventory item record to
+ retrieve is specified in the request payload.
Note: In
+ addition to the authorization header, which is required for all Inventory API calls,
+ this call also requires the Content-Type header. See the HTTP
+ request headers for more information.
For those who prefer to retrieve only one
+ inventory item record by SKU value, the getInventoryItem method can be used. To
+ retrieve all inventory item records defined on the seller's account, the
+ getInventoryItems method can be used (with pagination control if desired).
+
+ Args:
+ content_type (str):
+ body (BulkGetInventoryItem): This type is used by the base request of the
+ bulkGetInventoryItem method.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, BulkGetInventoryItemResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ body=body,
+content_type=content_type,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ *,
+ client: AuthenticatedClient,
+ body: BulkGetInventoryItem,
+ content_type: str,
+
+) -> Optional[Union[Any, BulkGetInventoryItemResponse]]:
+ r""" This call retrieves up to 25 inventory item records. The SKU value of each inventory item record to
+ retrieve is specified in the request payload.
Note: In
+ addition to the authorization header, which is required for all Inventory API calls,
+ this call also requires the Content-Type header. See the HTTP
+ request headers for more information.
For those who prefer to retrieve only one
+ inventory item record by SKU value, the getInventoryItem method can be used. To
+ retrieve all inventory item records defined on the seller's account, the
+ getInventoryItems method can be used (with pagination control if desired).
+
+ Args:
+ content_type (str):
+ body (BulkGetInventoryItem): This type is used by the base request of the
+ bulkGetInventoryItem method.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, BulkGetInventoryItemResponse]
+ """
+
+
+ return sync_detailed(
+ client=client,
+body=body,
+content_type=content_type,
+
+ ).parsed
+
+async def asyncio_detailed(
+ *,
+ client: AuthenticatedClient,
+ body: BulkGetInventoryItem,
+ content_type: str,
+
+) -> Response[Union[Any, BulkGetInventoryItemResponse]]:
+ r""" This call retrieves up to 25 inventory item records. The SKU value of each inventory item record to
+ retrieve is specified in the request payload.
Note: In
+ addition to the authorization header, which is required for all Inventory API calls,
+ this call also requires the Content-Type header. See the HTTP
+ request headers for more information.
For those who prefer to retrieve only one
+ inventory item record by SKU value, the getInventoryItem method can be used. To
+ retrieve all inventory item records defined on the seller's account, the
+ getInventoryItems method can be used (with pagination control if desired).
+
+ Args:
+ content_type (str):
+ body (BulkGetInventoryItem): This type is used by the base request of the
+ bulkGetInventoryItem method.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, BulkGetInventoryItemResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ body=body,
+content_type=content_type,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ *,
+ client: AuthenticatedClient,
+ body: BulkGetInventoryItem,
+ content_type: str,
+
+) -> Optional[Union[Any, BulkGetInventoryItemResponse]]:
+ r""" This call retrieves up to 25 inventory item records. The SKU value of each inventory item record to
+ retrieve is specified in the request payload.
Note: In
+ addition to the authorization header, which is required for all Inventory API calls,
+ this call also requires the Content-Type header. See the HTTP
+ request headers for more information.
For those who prefer to retrieve only one
+ inventory item record by SKU value, the getInventoryItem method can be used. To
+ retrieve all inventory item records defined on the seller's account, the
+ getInventoryItems method can be used (with pagination control if desired).
+
+ Args:
+ content_type (str):
+ body (BulkGetInventoryItem): This type is used by the base request of the
+ bulkGetInventoryItem method.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, BulkGetInventoryItemResponse]
+ """
+
+
+ return (await asyncio_detailed(
+ client=client,
+body=body,
+content_type=content_type,
+
+ )).parsed
diff --git a/ebay_client/generated/inventory/api/inventory_item/bulk_update_price_quantity.py b/ebay_client/generated/inventory/api/inventory_item/bulk_update_price_quantity.py
new file mode 100644
index 0000000..f5e930b
--- /dev/null
+++ b/ebay_client/generated/inventory/api/inventory_item/bulk_update_price_quantity.py
@@ -0,0 +1,316 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.bulk_price_quantity import BulkPriceQuantity
+from ...models.bulk_price_quantity_response import BulkPriceQuantityResponse
+from typing import cast
+
+
+
+def _get_kwargs(
+ *,
+ body: BulkPriceQuantity,
+ content_type: str,
+
+) -> dict[str, Any]:
+ headers: dict[str, Any] = {}
+ headers["Content-Type"] = content_type
+
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "post",
+ "url": "/bulk_update_price_quantity",
+ }
+
+ _kwargs["json"] = body.to_dict()
+
+
+ headers["Content-Type"] = "application/json"
+
+ _kwargs["headers"] = headers
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, BulkPriceQuantityResponse]]:
+ if response.status_code == 200:
+ response_200 = BulkPriceQuantityResponse.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 207:
+ response_207 = cast(Any, None)
+ return response_207
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, BulkPriceQuantityResponse]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ *,
+ client: AuthenticatedClient,
+ body: BulkPriceQuantity,
+ content_type: str,
+
+) -> Response[Union[Any, BulkPriceQuantityResponse]]:
+ r""" This call is used by the seller to update the total ship-to-home quantity of one inventory item,
+ and/or to update the price and/or quantity of one or more offers associated with one inventory item.
+ Up to 25 offers associated with an inventory item may be updated with one
+ bulkUpdatePriceQuantity call. Only one SKU (one product) can be updated per
+ call.
Note: Each listing can be revised up to 250
+ times in one calendar day. If this revision threshold is reached, the seller will be blocked from
+ revising the item until the next calendar day.
Note: In
+ addition to the authorization header, which is required for all Inventory API calls,
+ this call also requires the Content-Type header. See the HTTP request headers for more information.
The getOffers
+ call can be used to retrieve all offers associated with a SKU. The seller will just pass in the
+ correct SKU value through the sku query parameter. To update an offer, the
+ offerId value is required, and this value is returned in the
+ getOffers call response. It is also useful to know which offers are unpublished and
+ which ones are published. To get this status, look for the status value in the
+ getOffers call response. Offers in the published state are live eBay listings, and
+ these listings will be revised with a successful bulkUpdatePriceQuantity
+ call.
An issue will occur if duplicate offerId values are passed through the
+ same offers container, or if one or more of the specified offers are associated
+ with different products/SKUs.
Note: For multiple-
+ variation listings, it is recommended that the bulkUpdatePriceQuantity call be used
+ to update price and quantity information for each SKU within that multiple-variation listing instead
+ of using createOrReplaceInventoryItem calls to update the price and quantity for
+ each SKU. Just remember that only one SKU (one product variation) can be updated per
+ call.
+
+ Args:
+ content_type (str):
+ body (BulkPriceQuantity): This type is used by the base request payload of the
+ bulkUpdatePriceQuantity call. The
+ bulkUpdatePriceQuantity call allows the seller to update the total 'ship-
+ to-home' quantity of one or more inventory items (up to 25) and/or to update the price
+ and/or quantity of one or more specific published offers.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, BulkPriceQuantityResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ body=body,
+content_type=content_type,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ *,
+ client: AuthenticatedClient,
+ body: BulkPriceQuantity,
+ content_type: str,
+
+) -> Optional[Union[Any, BulkPriceQuantityResponse]]:
+ r""" This call is used by the seller to update the total ship-to-home quantity of one inventory item,
+ and/or to update the price and/or quantity of one or more offers associated with one inventory item.
+ Up to 25 offers associated with an inventory item may be updated with one
+ bulkUpdatePriceQuantity call. Only one SKU (one product) can be updated per
+ call.
Note: Each listing can be revised up to 250
+ times in one calendar day. If this revision threshold is reached, the seller will be blocked from
+ revising the item until the next calendar day.
Note: In
+ addition to the authorization header, which is required for all Inventory API calls,
+ this call also requires the Content-Type header. See the HTTP request headers for more information.
The getOffers
+ call can be used to retrieve all offers associated with a SKU. The seller will just pass in the
+ correct SKU value through the sku query parameter. To update an offer, the
+ offerId value is required, and this value is returned in the
+ getOffers call response. It is also useful to know which offers are unpublished and
+ which ones are published. To get this status, look for the status value in the
+ getOffers call response. Offers in the published state are live eBay listings, and
+ these listings will be revised with a successful bulkUpdatePriceQuantity
+ call.
An issue will occur if duplicate offerId values are passed through the
+ same offers container, or if one or more of the specified offers are associated
+ with different products/SKUs.
Note: For multiple-
+ variation listings, it is recommended that the bulkUpdatePriceQuantity call be used
+ to update price and quantity information for each SKU within that multiple-variation listing instead
+ of using createOrReplaceInventoryItem calls to update the price and quantity for
+ each SKU. Just remember that only one SKU (one product variation) can be updated per
+ call.
+
+ Args:
+ content_type (str):
+ body (BulkPriceQuantity): This type is used by the base request payload of the
+ bulkUpdatePriceQuantity call. The
+ bulkUpdatePriceQuantity call allows the seller to update the total 'ship-
+ to-home' quantity of one or more inventory items (up to 25) and/or to update the price
+ and/or quantity of one or more specific published offers.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, BulkPriceQuantityResponse]
+ """
+
+
+ return sync_detailed(
+ client=client,
+body=body,
+content_type=content_type,
+
+ ).parsed
+
+async def asyncio_detailed(
+ *,
+ client: AuthenticatedClient,
+ body: BulkPriceQuantity,
+ content_type: str,
+
+) -> Response[Union[Any, BulkPriceQuantityResponse]]:
+ r""" This call is used by the seller to update the total ship-to-home quantity of one inventory item,
+ and/or to update the price and/or quantity of one or more offers associated with one inventory item.
+ Up to 25 offers associated with an inventory item may be updated with one
+ bulkUpdatePriceQuantity call. Only one SKU (one product) can be updated per
+ call.
Note: Each listing can be revised up to 250
+ times in one calendar day. If this revision threshold is reached, the seller will be blocked from
+ revising the item until the next calendar day.
Note: In
+ addition to the authorization header, which is required for all Inventory API calls,
+ this call also requires the Content-Type header. See the HTTP request headers for more information.
The getOffers
+ call can be used to retrieve all offers associated with a SKU. The seller will just pass in the
+ correct SKU value through the sku query parameter. To update an offer, the
+ offerId value is required, and this value is returned in the
+ getOffers call response. It is also useful to know which offers are unpublished and
+ which ones are published. To get this status, look for the status value in the
+ getOffers call response. Offers in the published state are live eBay listings, and
+ these listings will be revised with a successful bulkUpdatePriceQuantity
+ call.
An issue will occur if duplicate offerId values are passed through the
+ same offers container, or if one or more of the specified offers are associated
+ with different products/SKUs.
Note: For multiple-
+ variation listings, it is recommended that the bulkUpdatePriceQuantity call be used
+ to update price and quantity information for each SKU within that multiple-variation listing instead
+ of using createOrReplaceInventoryItem calls to update the price and quantity for
+ each SKU. Just remember that only one SKU (one product variation) can be updated per
+ call.
+
+ Args:
+ content_type (str):
+ body (BulkPriceQuantity): This type is used by the base request payload of the
+ bulkUpdatePriceQuantity call. The
+ bulkUpdatePriceQuantity call allows the seller to update the total 'ship-
+ to-home' quantity of one or more inventory items (up to 25) and/or to update the price
+ and/or quantity of one or more specific published offers.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, BulkPriceQuantityResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ body=body,
+content_type=content_type,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ *,
+ client: AuthenticatedClient,
+ body: BulkPriceQuantity,
+ content_type: str,
+
+) -> Optional[Union[Any, BulkPriceQuantityResponse]]:
+ r""" This call is used by the seller to update the total ship-to-home quantity of one inventory item,
+ and/or to update the price and/or quantity of one or more offers associated with one inventory item.
+ Up to 25 offers associated with an inventory item may be updated with one
+ bulkUpdatePriceQuantity call. Only one SKU (one product) can be updated per
+ call.
Note: Each listing can be revised up to 250
+ times in one calendar day. If this revision threshold is reached, the seller will be blocked from
+ revising the item until the next calendar day.
Note: In
+ addition to the authorization header, which is required for all Inventory API calls,
+ this call also requires the Content-Type header. See the HTTP request headers for more information.
The getOffers
+ call can be used to retrieve all offers associated with a SKU. The seller will just pass in the
+ correct SKU value through the sku query parameter. To update an offer, the
+ offerId value is required, and this value is returned in the
+ getOffers call response. It is also useful to know which offers are unpublished and
+ which ones are published. To get this status, look for the status value in the
+ getOffers call response. Offers in the published state are live eBay listings, and
+ these listings will be revised with a successful bulkUpdatePriceQuantity
+ call.
An issue will occur if duplicate offerId values are passed through the
+ same offers container, or if one or more of the specified offers are associated
+ with different products/SKUs.
Note: For multiple-
+ variation listings, it is recommended that the bulkUpdatePriceQuantity call be used
+ to update price and quantity information for each SKU within that multiple-variation listing instead
+ of using createOrReplaceInventoryItem calls to update the price and quantity for
+ each SKU. Just remember that only one SKU (one product variation) can be updated per
+ call.
+
+ Args:
+ content_type (str):
+ body (BulkPriceQuantity): This type is used by the base request payload of the
+ bulkUpdatePriceQuantity call. The
+ bulkUpdatePriceQuantity call allows the seller to update the total 'ship-
+ to-home' quantity of one or more inventory items (up to 25) and/or to update the price
+ and/or quantity of one or more specific published offers.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, BulkPriceQuantityResponse]
+ """
+
+
+ return (await asyncio_detailed(
+ client=client,
+body=body,
+content_type=content_type,
+
+ )).parsed
diff --git a/ebay_client/generated/inventory/api/inventory_item/create_or_replace_inventory_item.py b/ebay_client/generated/inventory/api/inventory_item/create_or_replace_inventory_item.py
new file mode 100644
index 0000000..54e15b8
--- /dev/null
+++ b/ebay_client/generated/inventory/api/inventory_item/create_or_replace_inventory_item.py
@@ -0,0 +1,446 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.base_response import BaseResponse
+from ...models.inventory_item import InventoryItem
+from typing import cast
+
+
+
+def _get_kwargs(
+ sku: str,
+ *,
+ body: InventoryItem,
+ content_language: str,
+ content_type: str,
+
+) -> dict[str, Any]:
+ headers: dict[str, Any] = {}
+ headers["Content-Language"] = content_language
+
+ headers["Content-Type"] = content_type
+
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "put",
+ "url": "/inventory_item/{sku}".format(sku=sku,),
+ }
+
+ _kwargs["json"] = body.to_dict()
+
+
+ headers["Content-Type"] = "application/json"
+
+ _kwargs["headers"] = headers
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, BaseResponse]]:
+ if response.status_code == 200:
+ response_200 = BaseResponse.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 201:
+ response_201 = BaseResponse.from_dict(response.json())
+
+
+
+ return response_201
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 204:
+ response_204 = cast(Any, None)
+ return response_204
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, BaseResponse]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ sku: str,
+ *,
+ client: AuthenticatedClient,
+ body: InventoryItem,
+ content_language: str,
+ content_type: str,
+
+) -> Response[Union[Any, BaseResponse]]:
+ r""" Note: Please note that any eBay listing created using the
+ Inventory API cannot be revised or relisted using the Trading API calls.
Note: Each listing can be revised up to 250 times in one
+ calendar day. If this revision threshold is reached, the seller will be blocked from revising the
+ item until the next calendar day.
This call creates a new inventory item record or
+ replaces an existing inventory item record. It is up to sellers whether they want to create a
+ complete inventory item record right from the start, or sellers can provide only some information
+ with the initial createOrReplaceInventoryItem call, and then make one or more
+ additional createOrReplaceInventoryItem calls to complete all required fields for
+ the inventory item record and prepare it for publishing. Upon first creating an inventory item
+ record, only the SKU value in the call path is required.
Important!Publish offer note: Fields may be
+ optional or conditionally required when calling this method, but become required when publishing the
+ offer to create an active listing. For this method, see Inventory item
+ fields for a list of fields required to publish an offer.
Note: In addition to the authorization header, which is
+ required for all Inventory API calls, this call also requires the Content-Type and
+ Content-Language headers. See the HTTP request headers for more information.
In the case of replacing an
+ existing inventory item record, the createOrReplaceInventoryItem call will do a
+ complete replacement of the existing inventory item record, so all fields that are currently defined
+ for the inventory item record are required in that update action, regardless of whether their values
+ changed. So, when replacing/updating an inventory item record, it is advised that the seller run a
+ getInventoryItem call to retrieve the full inventory item record and see all of its
+ current values/settings before attempting to update the record. And if changes are made to an
+ inventory item that is part of one or more active eBay listings, a successful call will
+ automatically update these eBay listings.
The key information that is set with the
+ createOrReplaceInventoryItem call include: - Seller-defined SKU value for
+ the product. Each seller product, including products within an item inventory group, must have their
+ own SKU value. This SKU value is passed in at the end of the call URI
- Condition of the
+ item
- Product details, including any product identifier(s), such as a UPC, ISBN, EAN, or
+ Brand/Manufacturer Part Number pair, a product description, a product title, product/item aspects,
+ and links to images. eBay will use any supplied eBay Product ID (ePID) or a GTIN (UPC, ISBN, or EAN)
+ and attempt to match those identifiers to a product in the eBay Catalog, and if a product match is
+ found, the product details for the inventory item will automatically be populated.
- Quantity
+ of the inventory item that is available for purchase
- Package weight and dimensions, which
+ is required if the seller will be offering calculated shipping options. The package weight will also
+ be required if the seller will be providing flat-rate shipping services, but charging a weight
+ surcharge.
In addition to the authorization header, which is required for
+ all eBay REST API calls, the createOrReplaceInventoryItem call also requires the
+ Content-Language header, that sets the natural language that will be used in the field
+ values of the request payload. For US English, the code value passed in this header should be
+ en-US. To view other supported Content-Language values, and to read more
+ about all supported HTTP headers for eBay REST API calls, see the HTTP request headers topic in the Using
+ eBay RESTful APIs document.
For those who prefer to create or update numerous
+ inventory item records with one call (up to 25 at a time), the
+ bulkCreateOrReplaceInventoryItem method can be used.
+
+ Args:
+ sku (str):
+ content_language (str):
+ content_type (str):
+ body (InventoryItem): This type is used to provide detailed information about an inventory
+ item.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, BaseResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ sku=sku,
+body=body,
+content_language=content_language,
+content_type=content_type,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ sku: str,
+ *,
+ client: AuthenticatedClient,
+ body: InventoryItem,
+ content_language: str,
+ content_type: str,
+
+) -> Optional[Union[Any, BaseResponse]]:
+ r""" Note: Please note that any eBay listing created using the
+ Inventory API cannot be revised or relisted using the Trading API calls.
Note: Each listing can be revised up to 250 times in one
+ calendar day. If this revision threshold is reached, the seller will be blocked from revising the
+ item until the next calendar day.
This call creates a new inventory item record or
+ replaces an existing inventory item record. It is up to sellers whether they want to create a
+ complete inventory item record right from the start, or sellers can provide only some information
+ with the initial createOrReplaceInventoryItem call, and then make one or more
+ additional createOrReplaceInventoryItem calls to complete all required fields for
+ the inventory item record and prepare it for publishing. Upon first creating an inventory item
+ record, only the SKU value in the call path is required.
Important!Publish offer note: Fields may be
+ optional or conditionally required when calling this method, but become required when publishing the
+ offer to create an active listing. For this method, see Inventory item
+ fields for a list of fields required to publish an offer.
Note: In addition to the authorization header, which is
+ required for all Inventory API calls, this call also requires the Content-Type and
+ Content-Language headers. See the HTTP request headers for more information.
In the case of replacing an
+ existing inventory item record, the createOrReplaceInventoryItem call will do a
+ complete replacement of the existing inventory item record, so all fields that are currently defined
+ for the inventory item record are required in that update action, regardless of whether their values
+ changed. So, when replacing/updating an inventory item record, it is advised that the seller run a
+ getInventoryItem call to retrieve the full inventory item record and see all of its
+ current values/settings before attempting to update the record. And if changes are made to an
+ inventory item that is part of one or more active eBay listings, a successful call will
+ automatically update these eBay listings.
The key information that is set with the
+ createOrReplaceInventoryItem call include: - Seller-defined SKU value for
+ the product. Each seller product, including products within an item inventory group, must have their
+ own SKU value. This SKU value is passed in at the end of the call URI
- Condition of the
+ item
- Product details, including any product identifier(s), such as a UPC, ISBN, EAN, or
+ Brand/Manufacturer Part Number pair, a product description, a product title, product/item aspects,
+ and links to images. eBay will use any supplied eBay Product ID (ePID) or a GTIN (UPC, ISBN, or EAN)
+ and attempt to match those identifiers to a product in the eBay Catalog, and if a product match is
+ found, the product details for the inventory item will automatically be populated.
- Quantity
+ of the inventory item that is available for purchase
- Package weight and dimensions, which
+ is required if the seller will be offering calculated shipping options. The package weight will also
+ be required if the seller will be providing flat-rate shipping services, but charging a weight
+ surcharge.
In addition to the authorization header, which is required for
+ all eBay REST API calls, the createOrReplaceInventoryItem call also requires the
+ Content-Language header, that sets the natural language that will be used in the field
+ values of the request payload. For US English, the code value passed in this header should be
+ en-US. To view other supported Content-Language values, and to read more
+ about all supported HTTP headers for eBay REST API calls, see the HTTP request headers topic in the Using
+ eBay RESTful APIs document.
For those who prefer to create or update numerous
+ inventory item records with one call (up to 25 at a time), the
+ bulkCreateOrReplaceInventoryItem method can be used.
+
+ Args:
+ sku (str):
+ content_language (str):
+ content_type (str):
+ body (InventoryItem): This type is used to provide detailed information about an inventory
+ item.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, BaseResponse]
+ """
+
+
+ return sync_detailed(
+ sku=sku,
+client=client,
+body=body,
+content_language=content_language,
+content_type=content_type,
+
+ ).parsed
+
+async def asyncio_detailed(
+ sku: str,
+ *,
+ client: AuthenticatedClient,
+ body: InventoryItem,
+ content_language: str,
+ content_type: str,
+
+) -> Response[Union[Any, BaseResponse]]:
+ r""" Note: Please note that any eBay listing created using the
+ Inventory API cannot be revised or relisted using the Trading API calls.
Note: Each listing can be revised up to 250 times in one
+ calendar day. If this revision threshold is reached, the seller will be blocked from revising the
+ item until the next calendar day.
This call creates a new inventory item record or
+ replaces an existing inventory item record. It is up to sellers whether they want to create a
+ complete inventory item record right from the start, or sellers can provide only some information
+ with the initial createOrReplaceInventoryItem call, and then make one or more
+ additional createOrReplaceInventoryItem calls to complete all required fields for
+ the inventory item record and prepare it for publishing. Upon first creating an inventory item
+ record, only the SKU value in the call path is required.
Important!Publish offer note: Fields may be
+ optional or conditionally required when calling this method, but become required when publishing the
+ offer to create an active listing. For this method, see Inventory item
+ fields for a list of fields required to publish an offer.
Note: In addition to the authorization header, which is
+ required for all Inventory API calls, this call also requires the Content-Type and
+ Content-Language headers. See the HTTP request headers for more information.
In the case of replacing an
+ existing inventory item record, the createOrReplaceInventoryItem call will do a
+ complete replacement of the existing inventory item record, so all fields that are currently defined
+ for the inventory item record are required in that update action, regardless of whether their values
+ changed. So, when replacing/updating an inventory item record, it is advised that the seller run a
+ getInventoryItem call to retrieve the full inventory item record and see all of its
+ current values/settings before attempting to update the record. And if changes are made to an
+ inventory item that is part of one or more active eBay listings, a successful call will
+ automatically update these eBay listings.
The key information that is set with the
+ createOrReplaceInventoryItem call include: - Seller-defined SKU value for
+ the product. Each seller product, including products within an item inventory group, must have their
+ own SKU value. This SKU value is passed in at the end of the call URI
- Condition of the
+ item
- Product details, including any product identifier(s), such as a UPC, ISBN, EAN, or
+ Brand/Manufacturer Part Number pair, a product description, a product title, product/item aspects,
+ and links to images. eBay will use any supplied eBay Product ID (ePID) or a GTIN (UPC, ISBN, or EAN)
+ and attempt to match those identifiers to a product in the eBay Catalog, and if a product match is
+ found, the product details for the inventory item will automatically be populated.
- Quantity
+ of the inventory item that is available for purchase
- Package weight and dimensions, which
+ is required if the seller will be offering calculated shipping options. The package weight will also
+ be required if the seller will be providing flat-rate shipping services, but charging a weight
+ surcharge.
In addition to the authorization header, which is required for
+ all eBay REST API calls, the createOrReplaceInventoryItem call also requires the
+ Content-Language header, that sets the natural language that will be used in the field
+ values of the request payload. For US English, the code value passed in this header should be
+ en-US. To view other supported Content-Language values, and to read more
+ about all supported HTTP headers for eBay REST API calls, see the HTTP request headers topic in the Using
+ eBay RESTful APIs document.
For those who prefer to create or update numerous
+ inventory item records with one call (up to 25 at a time), the
+ bulkCreateOrReplaceInventoryItem method can be used.
+
+ Args:
+ sku (str):
+ content_language (str):
+ content_type (str):
+ body (InventoryItem): This type is used to provide detailed information about an inventory
+ item.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, BaseResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ sku=sku,
+body=body,
+content_language=content_language,
+content_type=content_type,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ sku: str,
+ *,
+ client: AuthenticatedClient,
+ body: InventoryItem,
+ content_language: str,
+ content_type: str,
+
+) -> Optional[Union[Any, BaseResponse]]:
+ r""" Note: Please note that any eBay listing created using the
+ Inventory API cannot be revised or relisted using the Trading API calls.
Note: Each listing can be revised up to 250 times in one
+ calendar day. If this revision threshold is reached, the seller will be blocked from revising the
+ item until the next calendar day.
This call creates a new inventory item record or
+ replaces an existing inventory item record. It is up to sellers whether they want to create a
+ complete inventory item record right from the start, or sellers can provide only some information
+ with the initial createOrReplaceInventoryItem call, and then make one or more
+ additional createOrReplaceInventoryItem calls to complete all required fields for
+ the inventory item record and prepare it for publishing. Upon first creating an inventory item
+ record, only the SKU value in the call path is required.
Important!Publish offer note: Fields may be
+ optional or conditionally required when calling this method, but become required when publishing the
+ offer to create an active listing. For this method, see Inventory item
+ fields for a list of fields required to publish an offer.
Note: In addition to the authorization header, which is
+ required for all Inventory API calls, this call also requires the Content-Type and
+ Content-Language headers. See the HTTP request headers for more information.
In the case of replacing an
+ existing inventory item record, the createOrReplaceInventoryItem call will do a
+ complete replacement of the existing inventory item record, so all fields that are currently defined
+ for the inventory item record are required in that update action, regardless of whether their values
+ changed. So, when replacing/updating an inventory item record, it is advised that the seller run a
+ getInventoryItem call to retrieve the full inventory item record and see all of its
+ current values/settings before attempting to update the record. And if changes are made to an
+ inventory item that is part of one or more active eBay listings, a successful call will
+ automatically update these eBay listings.
The key information that is set with the
+ createOrReplaceInventoryItem call include: - Seller-defined SKU value for
+ the product. Each seller product, including products within an item inventory group, must have their
+ own SKU value. This SKU value is passed in at the end of the call URI
- Condition of the
+ item
- Product details, including any product identifier(s), such as a UPC, ISBN, EAN, or
+ Brand/Manufacturer Part Number pair, a product description, a product title, product/item aspects,
+ and links to images. eBay will use any supplied eBay Product ID (ePID) or a GTIN (UPC, ISBN, or EAN)
+ and attempt to match those identifiers to a product in the eBay Catalog, and if a product match is
+ found, the product details for the inventory item will automatically be populated.
- Quantity
+ of the inventory item that is available for purchase
- Package weight and dimensions, which
+ is required if the seller will be offering calculated shipping options. The package weight will also
+ be required if the seller will be providing flat-rate shipping services, but charging a weight
+ surcharge.
In addition to the authorization header, which is required for
+ all eBay REST API calls, the createOrReplaceInventoryItem call also requires the
+ Content-Language header, that sets the natural language that will be used in the field
+ values of the request payload. For US English, the code value passed in this header should be
+ en-US. To view other supported Content-Language values, and to read more
+ about all supported HTTP headers for eBay REST API calls, see the HTTP request headers topic in the Using
+ eBay RESTful APIs document.
For those who prefer to create or update numerous
+ inventory item records with one call (up to 25 at a time), the
+ bulkCreateOrReplaceInventoryItem method can be used.
+
+ Args:
+ sku (str):
+ content_language (str):
+ content_type (str):
+ body (InventoryItem): This type is used to provide detailed information about an inventory
+ item.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, BaseResponse]
+ """
+
+
+ return (await asyncio_detailed(
+ sku=sku,
+client=client,
+body=body,
+content_language=content_language,
+content_type=content_type,
+
+ )).parsed
diff --git a/ebay_client/generated/inventory/api/inventory_item/delete_inventory_item.py b/ebay_client/generated/inventory/api/inventory_item/delete_inventory_item.py
new file mode 100644
index 0000000..c02209a
--- /dev/null
+++ b/ebay_client/generated/inventory/api/inventory_item/delete_inventory_item.py
@@ -0,0 +1,132 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+
+
+
+def _get_kwargs(
+ sku: str,
+
+) -> dict[str, Any]:
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "delete",
+ "url": "/inventory_item/{sku}".format(sku=sku,),
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Any]:
+ if response.status_code == 400:
+ return None
+ if response.status_code == 500:
+ return None
+ if response.status_code == 204:
+ return None
+ if response.status_code == 404:
+ return None
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Any]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ sku: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Any]:
+ """ This call is used to delete an inventory item record associated with a specified SKU. A successful
+ call will not only delete that inventory item record, but will also have the following
+ effects:- Delete any and all unpublished offers associated with that SKU;
- Delete any
+ and all single-variation eBay listings associated with that SKU;
- Automatically remove that
+ SKU from a multiple-variation listing and remove that SKU from any and all inventory item groups in
+ which that SKU was a member.
The authorization header is the only required
+ HTTP header for this call. See the HTTP request headers section for more
+ information.
+
+ Args:
+ sku (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ sku=sku,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+
+async def asyncio_detailed(
+ sku: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Any]:
+ """ This call is used to delete an inventory item record associated with a specified SKU. A successful
+ call will not only delete that inventory item record, but will also have the following
+ effects:- Delete any and all unpublished offers associated with that SKU;
- Delete any
+ and all single-variation eBay listings associated with that SKU;
- Automatically remove that
+ SKU from a multiple-variation listing and remove that SKU from any and all inventory item groups in
+ which that SKU was a member.
The authorization header is the only required
+ HTTP header for this call. See the HTTP request headers section for more
+ information.
+
+ Args:
+ sku (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ sku=sku,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
diff --git a/ebay_client/generated/inventory/api/inventory_item/get_inventory_item.py b/ebay_client/generated/inventory/api/inventory_item/get_inventory_item.py
new file mode 100644
index 0000000..cf4d91c
--- /dev/null
+++ b/ebay_client/generated/inventory/api/inventory_item/get_inventory_item.py
@@ -0,0 +1,205 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.inventory_item_with_sku_locale_groupid import InventoryItemWithSkuLocaleGroupid
+from typing import cast
+
+
+
+def _get_kwargs(
+ sku: str,
+
+) -> dict[str, Any]:
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/inventory_item/{sku}".format(sku=sku,),
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, InventoryItemWithSkuLocaleGroupid]]:
+ if response.status_code == 200:
+ response_200 = InventoryItemWithSkuLocaleGroupid.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 404:
+ response_404 = cast(Any, None)
+ return response_404
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, InventoryItemWithSkuLocaleGroupid]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ sku: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, InventoryItemWithSkuLocaleGroupid]]:
+ """ This call retrieves the inventory item record for a given SKU. The SKU value is passed in at the end
+ of the call URI. There is no request payload for this call.
The authorization
+ header is the only required HTTP header for this call, and it is required for all Inventory API
+ calls. See the HTTP request headers section for more information.
For those
+ who prefer to retrieve numerous inventory item records by SKU value with one call (up to 25 at a
+ time), the bulkGetInventoryItem method can be used. To retrieve all inventory item
+ records defined on the seller's account, the getInventoryItems method can be used
+ (with pagination control if desired).
+
+ Args:
+ sku (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, InventoryItemWithSkuLocaleGroupid]]
+ """
+
+
+ kwargs = _get_kwargs(
+ sku=sku,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ sku: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, InventoryItemWithSkuLocaleGroupid]]:
+ """ This call retrieves the inventory item record for a given SKU. The SKU value is passed in at the end
+ of the call URI. There is no request payload for this call.
The authorization
+ header is the only required HTTP header for this call, and it is required for all Inventory API
+ calls. See the HTTP request headers section for more information.
For those
+ who prefer to retrieve numerous inventory item records by SKU value with one call (up to 25 at a
+ time), the bulkGetInventoryItem method can be used. To retrieve all inventory item
+ records defined on the seller's account, the getInventoryItems method can be used
+ (with pagination control if desired).
+
+ Args:
+ sku (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, InventoryItemWithSkuLocaleGroupid]
+ """
+
+
+ return sync_detailed(
+ sku=sku,
+client=client,
+
+ ).parsed
+
+async def asyncio_detailed(
+ sku: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, InventoryItemWithSkuLocaleGroupid]]:
+ """ This call retrieves the inventory item record for a given SKU. The SKU value is passed in at the end
+ of the call URI. There is no request payload for this call.
The authorization
+ header is the only required HTTP header for this call, and it is required for all Inventory API
+ calls. See the HTTP request headers section for more information.
For those
+ who prefer to retrieve numerous inventory item records by SKU value with one call (up to 25 at a
+ time), the bulkGetInventoryItem method can be used. To retrieve all inventory item
+ records defined on the seller's account, the getInventoryItems method can be used
+ (with pagination control if desired).
+
+ Args:
+ sku (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, InventoryItemWithSkuLocaleGroupid]]
+ """
+
+
+ kwargs = _get_kwargs(
+ sku=sku,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ sku: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, InventoryItemWithSkuLocaleGroupid]]:
+ """ This call retrieves the inventory item record for a given SKU. The SKU value is passed in at the end
+ of the call URI. There is no request payload for this call.
The authorization
+ header is the only required HTTP header for this call, and it is required for all Inventory API
+ calls. See the HTTP request headers section for more information.
For those
+ who prefer to retrieve numerous inventory item records by SKU value with one call (up to 25 at a
+ time), the bulkGetInventoryItem method can be used. To retrieve all inventory item
+ records defined on the seller's account, the getInventoryItems method can be used
+ (with pagination control if desired).
+
+ Args:
+ sku (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, InventoryItemWithSkuLocaleGroupid]
+ """
+
+
+ return (await asyncio_detailed(
+ sku=sku,
+client=client,
+
+ )).parsed
diff --git a/ebay_client/generated/inventory/api/inventory_item/get_inventory_items.py b/ebay_client/generated/inventory/api/inventory_item/get_inventory_items.py
new file mode 100644
index 0000000..a958d47
--- /dev/null
+++ b/ebay_client/generated/inventory/api/inventory_item/get_inventory_items.py
@@ -0,0 +1,234 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.inventory_items import InventoryItems
+from ...types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+
+
+def _get_kwargs(
+ *,
+ limit: Union[Unset, str] = UNSET,
+ offset: Union[Unset, str] = UNSET,
+
+) -> dict[str, Any]:
+
+
+
+
+ params: dict[str, Any] = {}
+
+ params["limit"] = limit
+
+ params["offset"] = offset
+
+
+ params = {k: v for k, v in params.items() if v is not UNSET and v is not None}
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/inventory_item",
+ "params": params,
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, InventoryItems]]:
+ if response.status_code == 200:
+ response_200 = InventoryItems.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 404:
+ response_404 = cast(Any, None)
+ return response_404
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, InventoryItems]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ *,
+ client: AuthenticatedClient,
+ limit: Union[Unset, str] = UNSET,
+ offset: Union[Unset, str] = UNSET,
+
+) -> Response[Union[Any, InventoryItems]]:
+ """ This call retrieves all inventory item records defined for the seller's account. The
+ limit query parameter allows the seller to control how many records are returned
+ per page, and the offset query parameter is used to retrieve a specific page of
+ records. The seller can make multiple calls to scan through multiple pages of records. There is no
+ request payload for this call.
The authorization header is the only required
+ HTTP header for this call, and it is required for all Inventory API calls. See the HTTP
+ request headers section for more information.
For those who prefer to retrieve
+ numerous inventory item records by SKU value with one call (up to 25 at a time), the
+ bulkGetInventoryItem method can be used.
+
+ Args:
+ limit (Union[Unset, str]):
+ offset (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, InventoryItems]]
+ """
+
+
+ kwargs = _get_kwargs(
+ limit=limit,
+offset=offset,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ *,
+ client: AuthenticatedClient,
+ limit: Union[Unset, str] = UNSET,
+ offset: Union[Unset, str] = UNSET,
+
+) -> Optional[Union[Any, InventoryItems]]:
+ """ This call retrieves all inventory item records defined for the seller's account. The
+ limit query parameter allows the seller to control how many records are returned
+ per page, and the offset query parameter is used to retrieve a specific page of
+ records. The seller can make multiple calls to scan through multiple pages of records. There is no
+ request payload for this call.
The authorization header is the only required
+ HTTP header for this call, and it is required for all Inventory API calls. See the HTTP
+ request headers section for more information.
For those who prefer to retrieve
+ numerous inventory item records by SKU value with one call (up to 25 at a time), the
+ bulkGetInventoryItem method can be used.
+
+ Args:
+ limit (Union[Unset, str]):
+ offset (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, InventoryItems]
+ """
+
+
+ return sync_detailed(
+ client=client,
+limit=limit,
+offset=offset,
+
+ ).parsed
+
+async def asyncio_detailed(
+ *,
+ client: AuthenticatedClient,
+ limit: Union[Unset, str] = UNSET,
+ offset: Union[Unset, str] = UNSET,
+
+) -> Response[Union[Any, InventoryItems]]:
+ """ This call retrieves all inventory item records defined for the seller's account. The
+ limit query parameter allows the seller to control how many records are returned
+ per page, and the offset query parameter is used to retrieve a specific page of
+ records. The seller can make multiple calls to scan through multiple pages of records. There is no
+ request payload for this call.
The authorization header is the only required
+ HTTP header for this call, and it is required for all Inventory API calls. See the HTTP
+ request headers section for more information.
For those who prefer to retrieve
+ numerous inventory item records by SKU value with one call (up to 25 at a time), the
+ bulkGetInventoryItem method can be used.
+
+ Args:
+ limit (Union[Unset, str]):
+ offset (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, InventoryItems]]
+ """
+
+
+ kwargs = _get_kwargs(
+ limit=limit,
+offset=offset,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ *,
+ client: AuthenticatedClient,
+ limit: Union[Unset, str] = UNSET,
+ offset: Union[Unset, str] = UNSET,
+
+) -> Optional[Union[Any, InventoryItems]]:
+ """ This call retrieves all inventory item records defined for the seller's account. The
+ limit query parameter allows the seller to control how many records are returned
+ per page, and the offset query parameter is used to retrieve a specific page of
+ records. The seller can make multiple calls to scan through multiple pages of records. There is no
+ request payload for this call.
The authorization header is the only required
+ HTTP header for this call, and it is required for all Inventory API calls. See the HTTP
+ request headers section for more information.
For those who prefer to retrieve
+ numerous inventory item records by SKU value with one call (up to 25 at a time), the
+ bulkGetInventoryItem method can be used.
+
+ Args:
+ limit (Union[Unset, str]):
+ offset (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, InventoryItems]
+ """
+
+
+ return (await asyncio_detailed(
+ client=client,
+limit=limit,
+offset=offset,
+
+ )).parsed
diff --git a/ebay_client/generated/inventory/api/inventory_item_group/__init__.py b/ebay_client/generated/inventory/api/inventory_item_group/__init__.py
new file mode 100644
index 0000000..c9921b5
--- /dev/null
+++ b/ebay_client/generated/inventory/api/inventory_item_group/__init__.py
@@ -0,0 +1 @@
+""" Contains endpoint functions for accessing the API """
diff --git a/ebay_client/generated/inventory/api/inventory_item_group/create_or_replace_inventory_item_group.py b/ebay_client/generated/inventory/api/inventory_item_group/create_or_replace_inventory_item_group.py
new file mode 100644
index 0000000..5a1bf8c
--- /dev/null
+++ b/ebay_client/generated/inventory/api/inventory_item_group/create_or_replace_inventory_item_group.py
@@ -0,0 +1,414 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.base_response import BaseResponse
+from ...models.inventory_item_group import InventoryItemGroup
+from typing import cast
+
+
+
+def _get_kwargs(
+ inventory_item_group_key: str,
+ *,
+ body: InventoryItemGroup,
+ content_language: str,
+ content_type: str,
+
+) -> dict[str, Any]:
+ headers: dict[str, Any] = {}
+ headers["Content-Language"] = content_language
+
+ headers["Content-Type"] = content_type
+
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "put",
+ "url": "/inventory_item_group/{inventory_item_group_key}".format(inventory_item_group_key=inventory_item_group_key,),
+ }
+
+ _kwargs["json"] = body.to_dict()
+
+
+ headers["Content-Type"] = "application/json"
+
+ _kwargs["headers"] = headers
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, BaseResponse]]:
+ if response.status_code == 200:
+ response_200 = BaseResponse.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 201:
+ response_201 = BaseResponse.from_dict(response.json())
+
+
+
+ return response_201
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 204:
+ response_204 = cast(Any, None)
+ return response_204
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, BaseResponse]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ inventory_item_group_key: str,
+ *,
+ client: AuthenticatedClient,
+ body: InventoryItemGroup,
+ content_language: str,
+ content_type: str,
+
+) -> Response[Union[Any, BaseResponse]]:
+ r""" Note: Each listing can be revised up to 250 times in one
+ calendar day. If this revision threshold is reached, the seller will be blocked from revising the
+ item until the next calendar day.
This call creates a new inventory item group or updates
+ an existing inventory item group. It is up to sellers whether they want to create a complete
+ inventory item group record right from the start, or sellers can provide only some information with
+ the initial createOrReplaceInventoryItemGroup call, and then make one or more
+ additional createOrReplaceInventoryItemGroup calls to complete the inventory item
+ group record. Upon first creating an inventory item group record, the only required elements are
+ the inventoryItemGroupKey identifier in the call URI, and the members of the
+ inventory item group specified through the variantSKUs array in the request
+ payload.
Important!Publish offer note: Fields may be
+ optional or conditionally required when calling this method, but become required when publishing the
+ offer to create an active listing. For this method, see Inventory item group fields for a list of fields required to publish an
+ offer.
Note: In addition to the
+ authorization header, which is required for all Inventory API calls, this call also
+ requires the Content-Type and Content-Language headers. See the HTTP request headers for more information.
In the case of
+ updating/replacing an existing inventory item group, this call does a complete replacement of the
+ existing inventory item group record, so all fields (including the member SKUs) that make up the
+ inventory item group are required, regardless of whether their values changed. So, when
+ replacing/updating an inventory item group record, it is advised that the seller run a
+ getInventoryItemGroup call for that inventory item group to see all of its current
+ values/settings/members before attempting to update the record. And if changes are made to an
+ inventory item group that is part of a live, multiple-variation eBay listing, these changes
+ automatically update the eBay listing. For example, if a SKU value is removed from the inventory
+ item group, the corresponding product variation will be removed from the eBay listing as
+ well.
In addition to the required inventory item group identifier and member SKUs, other key
+ information that is set with this call include: - Title and description of the inventory item
+ group. The string values provided in these fields will actually become the listing title and listing
+ description of the listing once the first SKU of the inventory item group is published
+ successfully
- Common aspects that inventory items in the group share
- Product
+ aspects that vary within each product variation
- Links to images demonstrating the
+ variations of the product, and these images should correspond to the product aspect that is set with
+ the variesBy.aspectsImageVariesBy field
Note: For more information, see Creating and managing
+ inventory item groups.
+
+ Args:
+ inventory_item_group_key (str):
+ content_language (str):
+ content_type (str):
+ body (InventoryItemGroup): This type is used by the base request payload of the
+ createOrReplaceInventoryItemGroup call and the base response payload of
+ the getInventoryItemGroup call.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, BaseResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ inventory_item_group_key=inventory_item_group_key,
+body=body,
+content_language=content_language,
+content_type=content_type,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ inventory_item_group_key: str,
+ *,
+ client: AuthenticatedClient,
+ body: InventoryItemGroup,
+ content_language: str,
+ content_type: str,
+
+) -> Optional[Union[Any, BaseResponse]]:
+ r""" Note: Each listing can be revised up to 250 times in one
+ calendar day. If this revision threshold is reached, the seller will be blocked from revising the
+ item until the next calendar day.
This call creates a new inventory item group or updates
+ an existing inventory item group. It is up to sellers whether they want to create a complete
+ inventory item group record right from the start, or sellers can provide only some information with
+ the initial createOrReplaceInventoryItemGroup call, and then make one or more
+ additional createOrReplaceInventoryItemGroup calls to complete the inventory item
+ group record. Upon first creating an inventory item group record, the only required elements are
+ the inventoryItemGroupKey identifier in the call URI, and the members of the
+ inventory item group specified through the variantSKUs array in the request
+ payload.
Important!Publish offer note: Fields may be
+ optional or conditionally required when calling this method, but become required when publishing the
+ offer to create an active listing. For this method, see Inventory item group fields for a list of fields required to publish an
+ offer.
Note: In addition to the
+ authorization header, which is required for all Inventory API calls, this call also
+ requires the Content-Type and Content-Language headers. See the HTTP request headers for more information.
In the case of
+ updating/replacing an existing inventory item group, this call does a complete replacement of the
+ existing inventory item group record, so all fields (including the member SKUs) that make up the
+ inventory item group are required, regardless of whether their values changed. So, when
+ replacing/updating an inventory item group record, it is advised that the seller run a
+ getInventoryItemGroup call for that inventory item group to see all of its current
+ values/settings/members before attempting to update the record. And if changes are made to an
+ inventory item group that is part of a live, multiple-variation eBay listing, these changes
+ automatically update the eBay listing. For example, if a SKU value is removed from the inventory
+ item group, the corresponding product variation will be removed from the eBay listing as
+ well.
In addition to the required inventory item group identifier and member SKUs, other key
+ information that is set with this call include: - Title and description of the inventory item
+ group. The string values provided in these fields will actually become the listing title and listing
+ description of the listing once the first SKU of the inventory item group is published
+ successfully
- Common aspects that inventory items in the group share
- Product
+ aspects that vary within each product variation
- Links to images demonstrating the
+ variations of the product, and these images should correspond to the product aspect that is set with
+ the variesBy.aspectsImageVariesBy field
Note: For more information, see Creating and managing
+ inventory item groups.
+
+ Args:
+ inventory_item_group_key (str):
+ content_language (str):
+ content_type (str):
+ body (InventoryItemGroup): This type is used by the base request payload of the
+ createOrReplaceInventoryItemGroup call and the base response payload of
+ the getInventoryItemGroup call.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, BaseResponse]
+ """
+
+
+ return sync_detailed(
+ inventory_item_group_key=inventory_item_group_key,
+client=client,
+body=body,
+content_language=content_language,
+content_type=content_type,
+
+ ).parsed
+
+async def asyncio_detailed(
+ inventory_item_group_key: str,
+ *,
+ client: AuthenticatedClient,
+ body: InventoryItemGroup,
+ content_language: str,
+ content_type: str,
+
+) -> Response[Union[Any, BaseResponse]]:
+ r""" Note: Each listing can be revised up to 250 times in one
+ calendar day. If this revision threshold is reached, the seller will be blocked from revising the
+ item until the next calendar day.
This call creates a new inventory item group or updates
+ an existing inventory item group. It is up to sellers whether they want to create a complete
+ inventory item group record right from the start, or sellers can provide only some information with
+ the initial createOrReplaceInventoryItemGroup call, and then make one or more
+ additional createOrReplaceInventoryItemGroup calls to complete the inventory item
+ group record. Upon first creating an inventory item group record, the only required elements are
+ the inventoryItemGroupKey identifier in the call URI, and the members of the
+ inventory item group specified through the variantSKUs array in the request
+ payload.
Important!Publish offer note: Fields may be
+ optional or conditionally required when calling this method, but become required when publishing the
+ offer to create an active listing. For this method, see Inventory item group fields for a list of fields required to publish an
+ offer.
Note: In addition to the
+ authorization header, which is required for all Inventory API calls, this call also
+ requires the Content-Type and Content-Language headers. See the HTTP request headers for more information.
In the case of
+ updating/replacing an existing inventory item group, this call does a complete replacement of the
+ existing inventory item group record, so all fields (including the member SKUs) that make up the
+ inventory item group are required, regardless of whether their values changed. So, when
+ replacing/updating an inventory item group record, it is advised that the seller run a
+ getInventoryItemGroup call for that inventory item group to see all of its current
+ values/settings/members before attempting to update the record. And if changes are made to an
+ inventory item group that is part of a live, multiple-variation eBay listing, these changes
+ automatically update the eBay listing. For example, if a SKU value is removed from the inventory
+ item group, the corresponding product variation will be removed from the eBay listing as
+ well.
In addition to the required inventory item group identifier and member SKUs, other key
+ information that is set with this call include: - Title and description of the inventory item
+ group. The string values provided in these fields will actually become the listing title and listing
+ description of the listing once the first SKU of the inventory item group is published
+ successfully
- Common aspects that inventory items in the group share
- Product
+ aspects that vary within each product variation
- Links to images demonstrating the
+ variations of the product, and these images should correspond to the product aspect that is set with
+ the variesBy.aspectsImageVariesBy field
Note: For more information, see Creating and managing
+ inventory item groups.
+
+ Args:
+ inventory_item_group_key (str):
+ content_language (str):
+ content_type (str):
+ body (InventoryItemGroup): This type is used by the base request payload of the
+ createOrReplaceInventoryItemGroup call and the base response payload of
+ the getInventoryItemGroup call.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, BaseResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ inventory_item_group_key=inventory_item_group_key,
+body=body,
+content_language=content_language,
+content_type=content_type,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ inventory_item_group_key: str,
+ *,
+ client: AuthenticatedClient,
+ body: InventoryItemGroup,
+ content_language: str,
+ content_type: str,
+
+) -> Optional[Union[Any, BaseResponse]]:
+ r""" Note: Each listing can be revised up to 250 times in one
+ calendar day. If this revision threshold is reached, the seller will be blocked from revising the
+ item until the next calendar day.
This call creates a new inventory item group or updates
+ an existing inventory item group. It is up to sellers whether they want to create a complete
+ inventory item group record right from the start, or sellers can provide only some information with
+ the initial createOrReplaceInventoryItemGroup call, and then make one or more
+ additional createOrReplaceInventoryItemGroup calls to complete the inventory item
+ group record. Upon first creating an inventory item group record, the only required elements are
+ the inventoryItemGroupKey identifier in the call URI, and the members of the
+ inventory item group specified through the variantSKUs array in the request
+ payload.
Important!Publish offer note: Fields may be
+ optional or conditionally required when calling this method, but become required when publishing the
+ offer to create an active listing. For this method, see Inventory item group fields for a list of fields required to publish an
+ offer.
Note: In addition to the
+ authorization header, which is required for all Inventory API calls, this call also
+ requires the Content-Type and Content-Language headers. See the HTTP request headers for more information.
In the case of
+ updating/replacing an existing inventory item group, this call does a complete replacement of the
+ existing inventory item group record, so all fields (including the member SKUs) that make up the
+ inventory item group are required, regardless of whether their values changed. So, when
+ replacing/updating an inventory item group record, it is advised that the seller run a
+ getInventoryItemGroup call for that inventory item group to see all of its current
+ values/settings/members before attempting to update the record. And if changes are made to an
+ inventory item group that is part of a live, multiple-variation eBay listing, these changes
+ automatically update the eBay listing. For example, if a SKU value is removed from the inventory
+ item group, the corresponding product variation will be removed from the eBay listing as
+ well.
In addition to the required inventory item group identifier and member SKUs, other key
+ information that is set with this call include: - Title and description of the inventory item
+ group. The string values provided in these fields will actually become the listing title and listing
+ description of the listing once the first SKU of the inventory item group is published
+ successfully
- Common aspects that inventory items in the group share
- Product
+ aspects that vary within each product variation
- Links to images demonstrating the
+ variations of the product, and these images should correspond to the product aspect that is set with
+ the variesBy.aspectsImageVariesBy field
Note: For more information, see Creating and managing
+ inventory item groups.
+
+ Args:
+ inventory_item_group_key (str):
+ content_language (str):
+ content_type (str):
+ body (InventoryItemGroup): This type is used by the base request payload of the
+ createOrReplaceInventoryItemGroup call and the base response payload of
+ the getInventoryItemGroup call.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, BaseResponse]
+ """
+
+
+ return (await asyncio_detailed(
+ inventory_item_group_key=inventory_item_group_key,
+client=client,
+body=body,
+content_language=content_language,
+content_type=content_type,
+
+ )).parsed
diff --git a/ebay_client/generated/inventory/api/inventory_item_group/delete_inventory_item_group.py b/ebay_client/generated/inventory/api/inventory_item_group/delete_inventory_item_group.py
new file mode 100644
index 0000000..d0e1752
--- /dev/null
+++ b/ebay_client/generated/inventory/api/inventory_item_group/delete_inventory_item_group.py
@@ -0,0 +1,118 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+
+
+
+def _get_kwargs(
+ inventory_item_group_key: str,
+
+) -> dict[str, Any]:
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "delete",
+ "url": "/inventory_item_group/{inventory_item_group_key}".format(inventory_item_group_key=inventory_item_group_key,),
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Any]:
+ if response.status_code == 400:
+ return None
+ if response.status_code == 500:
+ return None
+ if response.status_code == 204:
+ return None
+ if response.status_code == 404:
+ return None
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Any]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ inventory_item_group_key: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Any]:
+ """ This call deletes the inventory item group for a given inventoryItemGroupKey value.
+
+ Args:
+ inventory_item_group_key (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ inventory_item_group_key=inventory_item_group_key,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+
+async def asyncio_detailed(
+ inventory_item_group_key: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Any]:
+ """ This call deletes the inventory item group for a given inventoryItemGroupKey value.
+
+ Args:
+ inventory_item_group_key (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ inventory_item_group_key=inventory_item_group_key,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
diff --git a/ebay_client/generated/inventory/api/inventory_item_group/get_inventory_item_group.py b/ebay_client/generated/inventory/api/inventory_item_group/get_inventory_item_group.py
new file mode 100644
index 0000000..380e7e4
--- /dev/null
+++ b/ebay_client/generated/inventory/api/inventory_item_group/get_inventory_item_group.py
@@ -0,0 +1,181 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.inventory_item_group import InventoryItemGroup
+from typing import cast
+
+
+
+def _get_kwargs(
+ inventory_item_group_key: str,
+
+) -> dict[str, Any]:
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/inventory_item_group/{inventory_item_group_key}".format(inventory_item_group_key=inventory_item_group_key,),
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, InventoryItemGroup]]:
+ if response.status_code == 200:
+ response_200 = InventoryItemGroup.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 404:
+ response_404 = cast(Any, None)
+ return response_404
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, InventoryItemGroup]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ inventory_item_group_key: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, InventoryItemGroup]]:
+ """ This call retrieves the inventory item group for a given inventoryItemGroupKey
+ value. The inventoryItemGroupKey value is passed in at the end of the call URI.
+
+ Args:
+ inventory_item_group_key (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, InventoryItemGroup]]
+ """
+
+
+ kwargs = _get_kwargs(
+ inventory_item_group_key=inventory_item_group_key,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ inventory_item_group_key: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, InventoryItemGroup]]:
+ """ This call retrieves the inventory item group for a given inventoryItemGroupKey
+ value. The inventoryItemGroupKey value is passed in at the end of the call URI.
+
+ Args:
+ inventory_item_group_key (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, InventoryItemGroup]
+ """
+
+
+ return sync_detailed(
+ inventory_item_group_key=inventory_item_group_key,
+client=client,
+
+ ).parsed
+
+async def asyncio_detailed(
+ inventory_item_group_key: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, InventoryItemGroup]]:
+ """ This call retrieves the inventory item group for a given inventoryItemGroupKey
+ value. The inventoryItemGroupKey value is passed in at the end of the call URI.
+
+ Args:
+ inventory_item_group_key (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, InventoryItemGroup]]
+ """
+
+
+ kwargs = _get_kwargs(
+ inventory_item_group_key=inventory_item_group_key,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ inventory_item_group_key: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, InventoryItemGroup]]:
+ """ This call retrieves the inventory item group for a given inventoryItemGroupKey
+ value. The inventoryItemGroupKey value is passed in at the end of the call URI.
+
+ Args:
+ inventory_item_group_key (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, InventoryItemGroup]
+ """
+
+
+ return (await asyncio_detailed(
+ inventory_item_group_key=inventory_item_group_key,
+client=client,
+
+ )).parsed
diff --git a/ebay_client/generated/inventory/api/listing/__init__.py b/ebay_client/generated/inventory/api/listing/__init__.py
new file mode 100644
index 0000000..c9921b5
--- /dev/null
+++ b/ebay_client/generated/inventory/api/listing/__init__.py
@@ -0,0 +1 @@
+""" Contains endpoint functions for accessing the API """
diff --git a/ebay_client/generated/inventory/api/listing/bulk_migrate_listing.py b/ebay_client/generated/inventory/api/listing/bulk_migrate_listing.py
new file mode 100644
index 0000000..a75d40a
--- /dev/null
+++ b/ebay_client/generated/inventory/api/listing/bulk_migrate_listing.py
@@ -0,0 +1,404 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.bulk_migrate_listing import BulkMigrateListing
+from ...models.bulk_migrate_listing_response import BulkMigrateListingResponse
+from typing import cast
+
+
+
+def _get_kwargs(
+ *,
+ body: BulkMigrateListing,
+ content_type: str,
+
+) -> dict[str, Any]:
+ headers: dict[str, Any] = {}
+ headers["Content-Type"] = content_type
+
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "post",
+ "url": "/bulk_migrate_listing",
+ }
+
+ _kwargs["json"] = body.to_dict()
+
+
+ headers["Content-Type"] = "application/json"
+
+ _kwargs["headers"] = headers
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, BulkMigrateListingResponse]]:
+ if response.status_code == 200:
+ response_200 = BulkMigrateListingResponse.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 207:
+ response_207 = cast(Any, None)
+ return response_207
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, BulkMigrateListingResponse]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ *,
+ client: AuthenticatedClient,
+ body: BulkMigrateListing,
+ content_type: str,
+
+) -> Response[Union[Any, BulkMigrateListingResponse]]:
+ r""" This call is used to convert existing eBay Listings to the corresponding Inventory API objects. If
+ an eBay listing is successfully migrated to the Inventory API model, new Inventory Location,
+ Inventory Item, and Offer objects are created. For a multiple-variation listing that is successfully
+ migrated, in addition to the three new Inventory API objects just mentioned, an Inventory Item Group
+ object will also be created. If the eBay listing is a motor vehicle part or accessory listing with a
+ compatible vehicle list (ItemCompatibilityList container in Trading API's
+ Add/Revise/Relist/Verify calls), a Product Compatibility object will be
+ created.
Migration Requirements
To be eligible for migration, the active eBay
+ listings must meet the following requirements:
Unsupported
+ Listing Features
The following features are not yet available to be set or modified through
+ the Inventory API, but they will remain on the active eBay listing, even after a successful
+ migration to the Inventory model. The downside to this is that the seller will be completely blocked
+ (in APIs or My eBay) from revising these features/settings once the migration takes
+ place:- Any listing-level Buyer Requirements
- Listing enhancements like a bold listing
+ title or Gallery Plus
Making the Call
In the request payload of the
+ bulkMigrateListings call, the seller will pass in an array of one to five eBay
+ listing IDs (aka Item IDs). To save time and hassle, that seller should do a pre-check on each
+ listing to make sure those listings meet the requirements to be migrated to the new Inventory model.
+ This method also requires the Content-Type request header. See the HTTP request
+ headers for more information. There are no path or query parameters for this
+ call.
Call Response
If an eBay listing is migrated successfully to the new
+ Inventory model, the following will occur:- An Inventory Item object will be created for the
+ item(s) in the listing, and this object will be accessible through the Inventory API
- An
+ Offer object will be created for the listing, and this object will be accessible through the
+ Inventory API
- An Inventory Location object will be created and associated with the Offer
+ object, as an Inventory Location must be associated with a published Offer
The response
+ payload of the Bulk Migrate Listings call will show the results of each listing migration. These
+ results include an HTTP status code to indicate the success or failure of each listing migration,
+ the SKU value associated with each item, and if the migration is successful, an Offer ID value. The
+ SKU value will be used in the Inventory API to manage the Inventory Item object, and the Offer ID
+ value will be used in the Inventory API to manage the Offer object. Errors and/or warnings
+ containers will be returned for each listing where an error and/or warning occurred with the
+ attempted migration.
If a multiple-variation listing is successfully migrated, along with the
+ Offer and Inventory Location objects, an Inventory Item object will be created for each product
+ variation within the listing, and an Inventory Item Group object will also be created, grouping
+ those variations together in the Inventory API platform. For a motor vehicle part or accessory
+ listing that has a specified list of compatible vehicles, in addition to the Inventory Item,
+ Inventory Location, and Offer objects that are created, a Product Compatibility object will also be
+ created in the Inventory API platform.
+
+ Args:
+ content_type (str):
+ body (BulkMigrateListing): This type is used by the base container of the
+ bulkMigrateListings request payload.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, BulkMigrateListingResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ body=body,
+content_type=content_type,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ *,
+ client: AuthenticatedClient,
+ body: BulkMigrateListing,
+ content_type: str,
+
+) -> Optional[Union[Any, BulkMigrateListingResponse]]:
+ r""" This call is used to convert existing eBay Listings to the corresponding Inventory API objects. If
+ an eBay listing is successfully migrated to the Inventory API model, new Inventory Location,
+ Inventory Item, and Offer objects are created. For a multiple-variation listing that is successfully
+ migrated, in addition to the three new Inventory API objects just mentioned, an Inventory Item Group
+ object will also be created. If the eBay listing is a motor vehicle part or accessory listing with a
+ compatible vehicle list (ItemCompatibilityList container in Trading API's
+ Add/Revise/Relist/Verify calls), a Product Compatibility object will be
+ created.
Migration Requirements
To be eligible for migration, the active eBay
+ listings must meet the following requirements:
Unsupported
+ Listing Features
The following features are not yet available to be set or modified through
+ the Inventory API, but they will remain on the active eBay listing, even after a successful
+ migration to the Inventory model. The downside to this is that the seller will be completely blocked
+ (in APIs or My eBay) from revising these features/settings once the migration takes
+ place:- Any listing-level Buyer Requirements
- Listing enhancements like a bold listing
+ title or Gallery Plus
Making the Call
In the request payload of the
+ bulkMigrateListings call, the seller will pass in an array of one to five eBay
+ listing IDs (aka Item IDs). To save time and hassle, that seller should do a pre-check on each
+ listing to make sure those listings meet the requirements to be migrated to the new Inventory model.
+ This method also requires the Content-Type request header. See the HTTP request
+ headers for more information. There are no path or query parameters for this
+ call.
Call Response
If an eBay listing is migrated successfully to the new
+ Inventory model, the following will occur:- An Inventory Item object will be created for the
+ item(s) in the listing, and this object will be accessible through the Inventory API
- An
+ Offer object will be created for the listing, and this object will be accessible through the
+ Inventory API
- An Inventory Location object will be created and associated with the Offer
+ object, as an Inventory Location must be associated with a published Offer
The response
+ payload of the Bulk Migrate Listings call will show the results of each listing migration. These
+ results include an HTTP status code to indicate the success or failure of each listing migration,
+ the SKU value associated with each item, and if the migration is successful, an Offer ID value. The
+ SKU value will be used in the Inventory API to manage the Inventory Item object, and the Offer ID
+ value will be used in the Inventory API to manage the Offer object. Errors and/or warnings
+ containers will be returned for each listing where an error and/or warning occurred with the
+ attempted migration.
If a multiple-variation listing is successfully migrated, along with the
+ Offer and Inventory Location objects, an Inventory Item object will be created for each product
+ variation within the listing, and an Inventory Item Group object will also be created, grouping
+ those variations together in the Inventory API platform. For a motor vehicle part or accessory
+ listing that has a specified list of compatible vehicles, in addition to the Inventory Item,
+ Inventory Location, and Offer objects that are created, a Product Compatibility object will also be
+ created in the Inventory API platform.
+
+ Args:
+ content_type (str):
+ body (BulkMigrateListing): This type is used by the base container of the
+ bulkMigrateListings request payload.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, BulkMigrateListingResponse]
+ """
+
+
+ return sync_detailed(
+ client=client,
+body=body,
+content_type=content_type,
+
+ ).parsed
+
+async def asyncio_detailed(
+ *,
+ client: AuthenticatedClient,
+ body: BulkMigrateListing,
+ content_type: str,
+
+) -> Response[Union[Any, BulkMigrateListingResponse]]:
+ r""" This call is used to convert existing eBay Listings to the corresponding Inventory API objects. If
+ an eBay listing is successfully migrated to the Inventory API model, new Inventory Location,
+ Inventory Item, and Offer objects are created. For a multiple-variation listing that is successfully
+ migrated, in addition to the three new Inventory API objects just mentioned, an Inventory Item Group
+ object will also be created. If the eBay listing is a motor vehicle part or accessory listing with a
+ compatible vehicle list (ItemCompatibilityList container in Trading API's
+ Add/Revise/Relist/Verify calls), a Product Compatibility object will be
+ created.
Migration Requirements
To be eligible for migration, the active eBay
+ listings must meet the following requirements:
Unsupported
+ Listing Features
The following features are not yet available to be set or modified through
+ the Inventory API, but they will remain on the active eBay listing, even after a successful
+ migration to the Inventory model. The downside to this is that the seller will be completely blocked
+ (in APIs or My eBay) from revising these features/settings once the migration takes
+ place:- Any listing-level Buyer Requirements
- Listing enhancements like a bold listing
+ title or Gallery Plus
Making the Call
In the request payload of the
+ bulkMigrateListings call, the seller will pass in an array of one to five eBay
+ listing IDs (aka Item IDs). To save time and hassle, that seller should do a pre-check on each
+ listing to make sure those listings meet the requirements to be migrated to the new Inventory model.
+ This method also requires the Content-Type request header. See the HTTP request
+ headers for more information. There are no path or query parameters for this
+ call.
Call Response
If an eBay listing is migrated successfully to the new
+ Inventory model, the following will occur:- An Inventory Item object will be created for the
+ item(s) in the listing, and this object will be accessible through the Inventory API
- An
+ Offer object will be created for the listing, and this object will be accessible through the
+ Inventory API
- An Inventory Location object will be created and associated with the Offer
+ object, as an Inventory Location must be associated with a published Offer
The response
+ payload of the Bulk Migrate Listings call will show the results of each listing migration. These
+ results include an HTTP status code to indicate the success or failure of each listing migration,
+ the SKU value associated with each item, and if the migration is successful, an Offer ID value. The
+ SKU value will be used in the Inventory API to manage the Inventory Item object, and the Offer ID
+ value will be used in the Inventory API to manage the Offer object. Errors and/or warnings
+ containers will be returned for each listing where an error and/or warning occurred with the
+ attempted migration.
If a multiple-variation listing is successfully migrated, along with the
+ Offer and Inventory Location objects, an Inventory Item object will be created for each product
+ variation within the listing, and an Inventory Item Group object will also be created, grouping
+ those variations together in the Inventory API platform. For a motor vehicle part or accessory
+ listing that has a specified list of compatible vehicles, in addition to the Inventory Item,
+ Inventory Location, and Offer objects that are created, a Product Compatibility object will also be
+ created in the Inventory API platform.
+
+ Args:
+ content_type (str):
+ body (BulkMigrateListing): This type is used by the base container of the
+ bulkMigrateListings request payload.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, BulkMigrateListingResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ body=body,
+content_type=content_type,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ *,
+ client: AuthenticatedClient,
+ body: BulkMigrateListing,
+ content_type: str,
+
+) -> Optional[Union[Any, BulkMigrateListingResponse]]:
+ r""" This call is used to convert existing eBay Listings to the corresponding Inventory API objects. If
+ an eBay listing is successfully migrated to the Inventory API model, new Inventory Location,
+ Inventory Item, and Offer objects are created. For a multiple-variation listing that is successfully
+ migrated, in addition to the three new Inventory API objects just mentioned, an Inventory Item Group
+ object will also be created. If the eBay listing is a motor vehicle part or accessory listing with a
+ compatible vehicle list (ItemCompatibilityList container in Trading API's
+ Add/Revise/Relist/Verify calls), a Product Compatibility object will be
+ created.
Migration Requirements
To be eligible for migration, the active eBay
+ listings must meet the following requirements:
Unsupported
+ Listing Features
The following features are not yet available to be set or modified through
+ the Inventory API, but they will remain on the active eBay listing, even after a successful
+ migration to the Inventory model. The downside to this is that the seller will be completely blocked
+ (in APIs or My eBay) from revising these features/settings once the migration takes
+ place:- Any listing-level Buyer Requirements
- Listing enhancements like a bold listing
+ title or Gallery Plus
Making the Call
In the request payload of the
+ bulkMigrateListings call, the seller will pass in an array of one to five eBay
+ listing IDs (aka Item IDs). To save time and hassle, that seller should do a pre-check on each
+ listing to make sure those listings meet the requirements to be migrated to the new Inventory model.
+ This method also requires the Content-Type request header. See the HTTP request
+ headers for more information. There are no path or query parameters for this
+ call.
Call Response
If an eBay listing is migrated successfully to the new
+ Inventory model, the following will occur:- An Inventory Item object will be created for the
+ item(s) in the listing, and this object will be accessible through the Inventory API
- An
+ Offer object will be created for the listing, and this object will be accessible through the
+ Inventory API
- An Inventory Location object will be created and associated with the Offer
+ object, as an Inventory Location must be associated with a published Offer
The response
+ payload of the Bulk Migrate Listings call will show the results of each listing migration. These
+ results include an HTTP status code to indicate the success or failure of each listing migration,
+ the SKU value associated with each item, and if the migration is successful, an Offer ID value. The
+ SKU value will be used in the Inventory API to manage the Inventory Item object, and the Offer ID
+ value will be used in the Inventory API to manage the Offer object. Errors and/or warnings
+ containers will be returned for each listing where an error and/or warning occurred with the
+ attempted migration.
If a multiple-variation listing is successfully migrated, along with the
+ Offer and Inventory Location objects, an Inventory Item object will be created for each product
+ variation within the listing, and an Inventory Item Group object will also be created, grouping
+ those variations together in the Inventory API platform. For a motor vehicle part or accessory
+ listing that has a specified list of compatible vehicles, in addition to the Inventory Item,
+ Inventory Location, and Offer objects that are created, a Product Compatibility object will also be
+ created in the Inventory API platform.
+
+ Args:
+ content_type (str):
+ body (BulkMigrateListing): This type is used by the base container of the
+ bulkMigrateListings request payload.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, BulkMigrateListingResponse]
+ """
+
+
+ return (await asyncio_detailed(
+ client=client,
+body=body,
+content_type=content_type,
+
+ )).parsed
diff --git a/ebay_client/generated/inventory/api/listing/create_or_replace_sku_location_mapping.py b/ebay_client/generated/inventory/api/listing/create_or_replace_sku_location_mapping.py
new file mode 100644
index 0000000..d095be3
--- /dev/null
+++ b/ebay_client/generated/inventory/api/listing/create_or_replace_sku_location_mapping.py
@@ -0,0 +1,204 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.location_mapping import LocationMapping
+from typing import cast
+
+
+
+def _get_kwargs(
+ listing_id: str,
+ sku: str,
+ *,
+ body: LocationMapping,
+ content_type: str,
+
+) -> dict[str, Any]:
+ headers: dict[str, Any] = {}
+ headers["Content-Type"] = content_type
+
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "put",
+ "url": "/listing/{listing_id}/sku/{sku}/locations".format(listing_id=listing_id,sku=sku,),
+ }
+
+ _kwargs["json"] = body.to_dict()
+
+
+ headers["Content-Type"] = "application/json"
+
+ _kwargs["headers"] = headers
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Any]:
+ if response.status_code == 400:
+ return None
+ if response.status_code == 500:
+ return None
+ if response.status_code == 204:
+ return None
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Any]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ listing_id: str,
+ sku: str,
+ *,
+ client: AuthenticatedClient,
+ body: LocationMapping,
+ content_type: str,
+
+) -> Response[Any]:
+ r""" This method allows sellers to map multiple fulfillment center locations to single-SKU listing, or to
+ a single SKU within a multiple-variation listing. This allows eBay to leverage the location metadata
+ associated with a seller’s fulfillment centers to calculate more accurate estimated delivery dates
+ on their listing.
Note: While location mappings can be
+ created for listings on any eBay marketplace, the improved delivery date estimate feature is
+ currently only supported for US-based fulfillment centers shipping domestically within the
+ US.
The listing for which the locations will be mapped is specified through the
+ listingId and sku values associated with the item. Note that only a single SKU value
+ can be identified; if the seller wishes to map locations to multiple/all SKU values in a multiple-
+ variation listing, this method must be called for each of those SKUs within the
+ listing.
Note: Sellers should keep track of
+ listingId/sku pairs that have been used for location mapping, as there is no
+ programmatic way to retrieve or delete these pairs at this time.
In the case of
+ replacing/updating existing location mappings, this method will do a complete replacement of the
+ location mappings associated with a SKU. This means that each existing location mappings that the
+ seller wants to continue to associate with the SKU are required in the update call, regardless of if
+ they are affected by the update.
This method is only supported for inventory locations that
+ have FULFILLMENT_CENTER as one of their locationTypes. For more information on
+ fulfillment center locations, see Create a fulfillment center
+ location.
For more information on location mapping features, see Multi-warehouse
+ program in the Selling Integration Guide.
Note: Only
+ listings with SKU values are supported. Sellers using listings creating through the Trading API can
+ add a SKU value to their single variation listing through the Item.SKU field during listing creation or by using the ReviseItem family of
+ calls.
+
+ Args:
+ listing_id (str):
+ sku (str):
+ content_type (str):
+ body (LocationMapping): This type provides an array of locations that are associated with
+ a SKU within a listing.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ listing_id=listing_id,
+sku=sku,
+body=body,
+content_type=content_type,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+
+async def asyncio_detailed(
+ listing_id: str,
+ sku: str,
+ *,
+ client: AuthenticatedClient,
+ body: LocationMapping,
+ content_type: str,
+
+) -> Response[Any]:
+ r""" This method allows sellers to map multiple fulfillment center locations to single-SKU listing, or to
+ a single SKU within a multiple-variation listing. This allows eBay to leverage the location metadata
+ associated with a seller’s fulfillment centers to calculate more accurate estimated delivery dates
+ on their listing.
Note: While location mappings can be
+ created for listings on any eBay marketplace, the improved delivery date estimate feature is
+ currently only supported for US-based fulfillment centers shipping domestically within the
+ US.
The listing for which the locations will be mapped is specified through the
+ listingId and sku values associated with the item. Note that only a single SKU value
+ can be identified; if the seller wishes to map locations to multiple/all SKU values in a multiple-
+ variation listing, this method must be called for each of those SKUs within the
+ listing.
Note: Sellers should keep track of
+ listingId/sku pairs that have been used for location mapping, as there is no
+ programmatic way to retrieve or delete these pairs at this time.
In the case of
+ replacing/updating existing location mappings, this method will do a complete replacement of the
+ location mappings associated with a SKU. This means that each existing location mappings that the
+ seller wants to continue to associate with the SKU are required in the update call, regardless of if
+ they are affected by the update.
This method is only supported for inventory locations that
+ have FULFILLMENT_CENTER as one of their locationTypes. For more information on
+ fulfillment center locations, see Create a fulfillment center
+ location.
For more information on location mapping features, see Multi-warehouse
+ program in the Selling Integration Guide.
Note: Only
+ listings with SKU values are supported. Sellers using listings creating through the Trading API can
+ add a SKU value to their single variation listing through the Item.SKU field during listing creation or by using the ReviseItem family of
+ calls.
+
+ Args:
+ listing_id (str):
+ sku (str):
+ content_type (str):
+ body (LocationMapping): This type provides an array of locations that are associated with
+ a SKU within a listing.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ listing_id=listing_id,
+sku=sku,
+body=body,
+content_type=content_type,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
diff --git a/ebay_client/generated/inventory/api/listing/delete_sku_location_mapping.py b/ebay_client/generated/inventory/api/listing/delete_sku_location_mapping.py
new file mode 100644
index 0000000..511790a
--- /dev/null
+++ b/ebay_client/generated/inventory/api/listing/delete_sku_location_mapping.py
@@ -0,0 +1,141 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+
+
+
+def _get_kwargs(
+ listing_id: str,
+ sku: str,
+
+) -> dict[str, Any]:
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "delete",
+ "url": "/listing/{listing_id}/sku/{sku}/locations".format(listing_id=listing_id,sku=sku,),
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Any]:
+ if response.status_code == 400:
+ return None
+ if response.status_code == 500:
+ return None
+ if response.status_code == 204:
+ return None
+ if response.status_code == 404:
+ return None
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Any]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ listing_id: str,
+ sku: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Any]:
+ r""" This method allows sellers to remove all location mappings associated with a specific SKU within a
+ listing.
The listingId and sku of the listing are passed in as path
+ parameters.
Important! To remove all location mappings from a
+ multiple-variation listing, this method must be used for each individual SKU in the
+ listing.
+
+ Args:
+ listing_id (str):
+ sku (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ listing_id=listing_id,
+sku=sku,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+
+async def asyncio_detailed(
+ listing_id: str,
+ sku: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Any]:
+ r""" This method allows sellers to remove all location mappings associated with a specific SKU within a
+ listing.
The listingId and sku of the listing are passed in as path
+ parameters.
Important! To remove all location mappings from a
+ multiple-variation listing, this method must be used for each individual SKU in the
+ listing.
+
+ Args:
+ listing_id (str):
+ sku (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ listing_id=listing_id,
+sku=sku,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
diff --git a/ebay_client/generated/inventory/api/listing/get_sku_location_mapping.py b/ebay_client/generated/inventory/api/listing/get_sku_location_mapping.py
new file mode 100644
index 0000000..29c97e8
--- /dev/null
+++ b/ebay_client/generated/inventory/api/listing/get_sku_location_mapping.py
@@ -0,0 +1,214 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.location_mapping import LocationMapping
+from typing import cast
+
+
+
+def _get_kwargs(
+ listing_id: str,
+ sku: str,
+
+) -> dict[str, Any]:
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/listing/{listing_id}/sku/{sku}/locations".format(listing_id=listing_id,sku=sku,),
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, LocationMapping]]:
+ if response.status_code == 200:
+ response_200 = LocationMapping.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 404:
+ response_404 = cast(Any, None)
+ return response_404
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, LocationMapping]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ listing_id: str,
+ sku: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, LocationMapping]]:
+ """ This method allows sellers to retrieve the locations mapped to a specific SKU within a
+ listing.
The listingId and sku of the listing are passed in as path parameters.
+ This method only retrieves location mappings for a single SKU value; if a seller wishes to retrieve
+ the location mappings for all items in a multiple-variation listing, this method must be called for
+ each variation in the listing.
If there are fulfillment center locations mapped to the SKU,
+ they will be returned in the locations array. If no locations are mapped to the SKU, status
+ code 404 Not Found will be returned.
+
+ Args:
+ listing_id (str):
+ sku (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, LocationMapping]]
+ """
+
+
+ kwargs = _get_kwargs(
+ listing_id=listing_id,
+sku=sku,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ listing_id: str,
+ sku: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, LocationMapping]]:
+ """ This method allows sellers to retrieve the locations mapped to a specific SKU within a
+ listing.
The listingId and sku of the listing are passed in as path parameters.
+ This method only retrieves location mappings for a single SKU value; if a seller wishes to retrieve
+ the location mappings for all items in a multiple-variation listing, this method must be called for
+ each variation in the listing.
If there are fulfillment center locations mapped to the SKU,
+ they will be returned in the locations array. If no locations are mapped to the SKU, status
+ code 404 Not Found will be returned.
+
+ Args:
+ listing_id (str):
+ sku (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, LocationMapping]
+ """
+
+
+ return sync_detailed(
+ listing_id=listing_id,
+sku=sku,
+client=client,
+
+ ).parsed
+
+async def asyncio_detailed(
+ listing_id: str,
+ sku: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, LocationMapping]]:
+ """ This method allows sellers to retrieve the locations mapped to a specific SKU within a
+ listing.
The listingId and sku of the listing are passed in as path parameters.
+ This method only retrieves location mappings for a single SKU value; if a seller wishes to retrieve
+ the location mappings for all items in a multiple-variation listing, this method must be called for
+ each variation in the listing.
If there are fulfillment center locations mapped to the SKU,
+ they will be returned in the locations array. If no locations are mapped to the SKU, status
+ code 404 Not Found will be returned.
+
+ Args:
+ listing_id (str):
+ sku (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, LocationMapping]]
+ """
+
+
+ kwargs = _get_kwargs(
+ listing_id=listing_id,
+sku=sku,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ listing_id: str,
+ sku: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, LocationMapping]]:
+ """ This method allows sellers to retrieve the locations mapped to a specific SKU within a
+ listing.
The listingId and sku of the listing are passed in as path parameters.
+ This method only retrieves location mappings for a single SKU value; if a seller wishes to retrieve
+ the location mappings for all items in a multiple-variation listing, this method must be called for
+ each variation in the listing.
If there are fulfillment center locations mapped to the SKU,
+ they will be returned in the locations array. If no locations are mapped to the SKU, status
+ code 404 Not Found will be returned.
+
+ Args:
+ listing_id (str):
+ sku (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, LocationMapping]
+ """
+
+
+ return (await asyncio_detailed(
+ listing_id=listing_id,
+sku=sku,
+client=client,
+
+ )).parsed
diff --git a/ebay_client/generated/inventory/api/location/__init__.py b/ebay_client/generated/inventory/api/location/__init__.py
new file mode 100644
index 0000000..c9921b5
--- /dev/null
+++ b/ebay_client/generated/inventory/api/location/__init__.py
@@ -0,0 +1 @@
+""" Contains endpoint functions for accessing the API """
diff --git a/ebay_client/generated/inventory/api/location/create_inventory_location.py b/ebay_client/generated/inventory/api/location/create_inventory_location.py
new file mode 100644
index 0000000..4257282
--- /dev/null
+++ b/ebay_client/generated/inventory/api/location/create_inventory_location.py
@@ -0,0 +1,215 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.inventory_location_full import InventoryLocationFull
+from typing import cast
+
+
+
+def _get_kwargs(
+ merchant_location_key: str,
+ *,
+ body: InventoryLocationFull,
+ content_type: str,
+
+) -> dict[str, Any]:
+ headers: dict[str, Any] = {}
+ headers["Content-Type"] = content_type
+
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "post",
+ "url": "/location/{merchant_location_key}".format(merchant_location_key=merchant_location_key,),
+ }
+
+ _kwargs["json"] = body.to_dict()
+
+
+ headers["Content-Type"] = "application/json"
+
+ _kwargs["headers"] = headers
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Any]:
+ if response.status_code == 400:
+ return None
+ if response.status_code == 500:
+ return None
+ if response.status_code == 204:
+ return None
+ if response.status_code == 409:
+ return None
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Any]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ merchant_location_key: str,
+ *,
+ client: AuthenticatedClient,
+ body: InventoryLocationFull,
+ content_type: str,
+
+) -> Response[Any]:
+ r""" Use this call to create a new inventory location. In order to create and publish an offer (and
+ create an eBay listing), a seller must have at least one location, as every offer must be associated
+ with at least one location.
Important!Publish offer note: Fields may be
+ optional or conditionally required when calling this method, but become required when publishing the
+ offer to create an active listing. For this method, see Location fields
+ for a list of fields required to publish an offer.
Upon first creating an
+ inventory location, only a seller-defined location identifier and a physical location is required,
+ and once set, these values can not be changed. The unique identifier value
+ (merchantLocationKey) is passed in at the end of the call URI. This
+ merchantLocationKey value will be used in other Inventory Location calls to identify the
+ location to perform an action against.
When creating an inventory location, the
+ locationTypes can be specified to define the function of a location. At this time, the
+ following locationTypes are supported:
- Fulfillment center locations are used by
+ sellers selling products through the Multi-warehouse program to get improved estimated delivery
+ dates on their listings. A full address is required when creating a fulfillment center location, as
+ well as the fulfillmentCenterSpecifications of the location. For more information on using
+ the fulfillment center location type to get improved delivery dates, see Multi-warehouse
+ program.
- Warehouse locations are used for traditional shipping. A full street
+ address is not needed, but the postalCode and country OR city,
+ stateOrProvince, and country of the location must be provided.
- Store
+ locations are generally used by merchants selling product through the In-Store Pickup program. A
+ full address is required when creating a store location.
Note that all inventory
+ locations are \"enabled\" by default when they are created, and you must specifically disable them
+ (by passing in a value of DISABLED in the merchantLocationStatus
+ field) if you want them to be set to the disabled state. The seller's inventory cannot be loaded to
+ inventory locations in the disabled state.
Unless one or more errors and/or warnings occur
+ with the call, there is no response payload for this call. A successful call will return an HTTP
+ status value of 204 No Content.
+
+ Args:
+ merchant_location_key (str):
+ content_type (str):
+ body (InventoryLocationFull): This type is used by the
+ createInventoryLocation call to provide details on the inventory
+ location, including the location's name, physical address, operating hours, special hours,
+ phone number and other details of an inventory location.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ merchant_location_key=merchant_location_key,
+body=body,
+content_type=content_type,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+
+async def asyncio_detailed(
+ merchant_location_key: str,
+ *,
+ client: AuthenticatedClient,
+ body: InventoryLocationFull,
+ content_type: str,
+
+) -> Response[Any]:
+ r""" Use this call to create a new inventory location. In order to create and publish an offer (and
+ create an eBay listing), a seller must have at least one location, as every offer must be associated
+ with at least one location.
Important!Publish offer note: Fields may be
+ optional or conditionally required when calling this method, but become required when publishing the
+ offer to create an active listing. For this method, see Location fields
+ for a list of fields required to publish an offer.
Upon first creating an
+ inventory location, only a seller-defined location identifier and a physical location is required,
+ and once set, these values can not be changed. The unique identifier value
+ (merchantLocationKey) is passed in at the end of the call URI. This
+ merchantLocationKey value will be used in other Inventory Location calls to identify the
+ location to perform an action against.
When creating an inventory location, the
+ locationTypes can be specified to define the function of a location. At this time, the
+ following locationTypes are supported:
- Fulfillment center locations are used by
+ sellers selling products through the Multi-warehouse program to get improved estimated delivery
+ dates on their listings. A full address is required when creating a fulfillment center location, as
+ well as the fulfillmentCenterSpecifications of the location. For more information on using
+ the fulfillment center location type to get improved delivery dates, see Multi-warehouse
+ program.
- Warehouse locations are used for traditional shipping. A full street
+ address is not needed, but the postalCode and country OR city,
+ stateOrProvince, and country of the location must be provided.
- Store
+ locations are generally used by merchants selling product through the In-Store Pickup program. A
+ full address is required when creating a store location.
Note that all inventory
+ locations are \"enabled\" by default when they are created, and you must specifically disable them
+ (by passing in a value of DISABLED in the merchantLocationStatus
+ field) if you want them to be set to the disabled state. The seller's inventory cannot be loaded to
+ inventory locations in the disabled state.
Unless one or more errors and/or warnings occur
+ with the call, there is no response payload for this call. A successful call will return an HTTP
+ status value of 204 No Content.
+
+ Args:
+ merchant_location_key (str):
+ content_type (str):
+ body (InventoryLocationFull): This type is used by the
+ createInventoryLocation call to provide details on the inventory
+ location, including the location's name, physical address, operating hours, special hours,
+ phone number and other details of an inventory location.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ merchant_location_key=merchant_location_key,
+body=body,
+content_type=content_type,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
diff --git a/ebay_client/generated/inventory/api/location/delete_inventory_location.py b/ebay_client/generated/inventory/api/location/delete_inventory_location.py
new file mode 100644
index 0000000..8f068bf
--- /dev/null
+++ b/ebay_client/generated/inventory/api/location/delete_inventory_location.py
@@ -0,0 +1,138 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+
+
+
+def _get_kwargs(
+ merchant_location_key: str,
+
+) -> dict[str, Any]:
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "delete",
+ "url": "/location/{merchant_location_key}".format(merchant_location_key=merchant_location_key,),
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Any]:
+ if response.status_code == 400:
+ return None
+ if response.status_code == 500:
+ return None
+ if response.status_code == 204:
+ return None
+ if response.status_code == 404:
+ return None
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Any]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ merchant_location_key: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Any]:
+ r""" This call deletes the inventory location that is specified in the
+ merchantLocationKey path parameter. Note that deleting a location will not affect any
+ active eBay listings associated with the deleted location, but the seller will not be able modify
+ the offers associated with the location once it is deleted.
Note: Deletion is not currently supported for fulfillment center
+ locations, as location mappings will still be retained despite the location being deleted. Instead,
+ fulfillment center locations should be disabled using the disableInventoryLocation method.Unless one or more errors and/or
+ warnings occur with the call, there is no response payload for this call. A successful call will
+ return an HTTP status value of 200 OK.
+
+ Args:
+ merchant_location_key (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ merchant_location_key=merchant_location_key,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+
+async def asyncio_detailed(
+ merchant_location_key: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Any]:
+ r""" This call deletes the inventory location that is specified in the
+ merchantLocationKey path parameter. Note that deleting a location will not affect any
+ active eBay listings associated with the deleted location, but the seller will not be able modify
+ the offers associated with the location once it is deleted.
Note: Deletion is not currently supported for fulfillment center
+ locations, as location mappings will still be retained despite the location being deleted. Instead,
+ fulfillment center locations should be disabled using the disableInventoryLocation method.Unless one or more errors and/or
+ warnings occur with the call, there is no response payload for this call. A successful call will
+ return an HTTP status value of 200 OK.
+
+ Args:
+ merchant_location_key (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ merchant_location_key=merchant_location_key,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
diff --git a/ebay_client/generated/inventory/api/location/disable_inventory_location.py b/ebay_client/generated/inventory/api/location/disable_inventory_location.py
new file mode 100644
index 0000000..fd7e851
--- /dev/null
+++ b/ebay_client/generated/inventory/api/location/disable_inventory_location.py
@@ -0,0 +1,193 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.disable_inventory_location_response_200 import DisableInventoryLocationResponse200
+from typing import cast
+
+
+
+def _get_kwargs(
+ merchant_location_key: str,
+
+) -> dict[str, Any]:
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "post",
+ "url": "/location/{merchant_location_key}/disable".format(merchant_location_key=merchant_location_key,),
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, DisableInventoryLocationResponse200]]:
+ if response.status_code == 200:
+ response_200 = DisableInventoryLocationResponse200.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 404:
+ response_404 = cast(Any, None)
+ return response_404
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, DisableInventoryLocationResponse200]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ merchant_location_key: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, DisableInventoryLocationResponse200]]:
+ """ This call disables the inventory location that is specified in the
+ merchantLocationKey path parameter. Sellers can not load/modify inventory to disabled
+ locations. Note that disabling a location will not affect any active eBay listings associated with
+ the disabled location, but the seller will not be able modify the offers associated with a disabled
+ location.
A successful call will return an HTTP status value of 200 OK.
+
+ Args:
+ merchant_location_key (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, DisableInventoryLocationResponse200]]
+ """
+
+
+ kwargs = _get_kwargs(
+ merchant_location_key=merchant_location_key,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ merchant_location_key: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, DisableInventoryLocationResponse200]]:
+ """ This call disables the inventory location that is specified in the
+ merchantLocationKey path parameter. Sellers can not load/modify inventory to disabled
+ locations. Note that disabling a location will not affect any active eBay listings associated with
+ the disabled location, but the seller will not be able modify the offers associated with a disabled
+ location.
A successful call will return an HTTP status value of 200 OK.
+
+ Args:
+ merchant_location_key (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, DisableInventoryLocationResponse200]
+ """
+
+
+ return sync_detailed(
+ merchant_location_key=merchant_location_key,
+client=client,
+
+ ).parsed
+
+async def asyncio_detailed(
+ merchant_location_key: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, DisableInventoryLocationResponse200]]:
+ """ This call disables the inventory location that is specified in the
+ merchantLocationKey path parameter. Sellers can not load/modify inventory to disabled
+ locations. Note that disabling a location will not affect any active eBay listings associated with
+ the disabled location, but the seller will not be able modify the offers associated with a disabled
+ location.
A successful call will return an HTTP status value of 200 OK.
+
+ Args:
+ merchant_location_key (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, DisableInventoryLocationResponse200]]
+ """
+
+
+ kwargs = _get_kwargs(
+ merchant_location_key=merchant_location_key,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ merchant_location_key: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, DisableInventoryLocationResponse200]]:
+ """ This call disables the inventory location that is specified in the
+ merchantLocationKey path parameter. Sellers can not load/modify inventory to disabled
+ locations. Note that disabling a location will not affect any active eBay listings associated with
+ the disabled location, but the seller will not be able modify the offers associated with a disabled
+ location.
A successful call will return an HTTP status value of 200 OK.
+
+ Args:
+ merchant_location_key (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, DisableInventoryLocationResponse200]
+ """
+
+
+ return (await asyncio_detailed(
+ merchant_location_key=merchant_location_key,
+client=client,
+
+ )).parsed
diff --git a/ebay_client/generated/inventory/api/location/enable_inventory_location.py b/ebay_client/generated/inventory/api/location/enable_inventory_location.py
new file mode 100644
index 0000000..990c8e3
--- /dev/null
+++ b/ebay_client/generated/inventory/api/location/enable_inventory_location.py
@@ -0,0 +1,189 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.enable_inventory_location_response_200 import EnableInventoryLocationResponse200
+from typing import cast
+
+
+
+def _get_kwargs(
+ merchant_location_key: str,
+
+) -> dict[str, Any]:
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "post",
+ "url": "/location/{merchant_location_key}/enable".format(merchant_location_key=merchant_location_key,),
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, EnableInventoryLocationResponse200]]:
+ if response.status_code == 200:
+ response_200 = EnableInventoryLocationResponse200.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 404:
+ response_404 = cast(Any, None)
+ return response_404
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, EnableInventoryLocationResponse200]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ merchant_location_key: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, EnableInventoryLocationResponse200]]:
+ """ This call enables a disabled inventory location that is specified in the
+ merchantLocationKey path parameter. Once a disabled location is enabled, sellers can
+ start loading/modifying inventory to that location.
A successful call will return an HTTP
+ status value of 200 OK.
+
+ Args:
+ merchant_location_key (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, EnableInventoryLocationResponse200]]
+ """
+
+
+ kwargs = _get_kwargs(
+ merchant_location_key=merchant_location_key,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ merchant_location_key: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, EnableInventoryLocationResponse200]]:
+ """ This call enables a disabled inventory location that is specified in the
+ merchantLocationKey path parameter. Once a disabled location is enabled, sellers can
+ start loading/modifying inventory to that location.
A successful call will return an HTTP
+ status value of 200 OK.
+
+ Args:
+ merchant_location_key (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, EnableInventoryLocationResponse200]
+ """
+
+
+ return sync_detailed(
+ merchant_location_key=merchant_location_key,
+client=client,
+
+ ).parsed
+
+async def asyncio_detailed(
+ merchant_location_key: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, EnableInventoryLocationResponse200]]:
+ """ This call enables a disabled inventory location that is specified in the
+ merchantLocationKey path parameter. Once a disabled location is enabled, sellers can
+ start loading/modifying inventory to that location.
A successful call will return an HTTP
+ status value of 200 OK.
+
+ Args:
+ merchant_location_key (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, EnableInventoryLocationResponse200]]
+ """
+
+
+ kwargs = _get_kwargs(
+ merchant_location_key=merchant_location_key,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ merchant_location_key: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, EnableInventoryLocationResponse200]]:
+ """ This call enables a disabled inventory location that is specified in the
+ merchantLocationKey path parameter. Once a disabled location is enabled, sellers can
+ start loading/modifying inventory to that location.
A successful call will return an HTTP
+ status value of 200 OK.
+
+ Args:
+ merchant_location_key (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, EnableInventoryLocationResponse200]
+ """
+
+
+ return (await asyncio_detailed(
+ merchant_location_key=merchant_location_key,
+client=client,
+
+ )).parsed
diff --git a/ebay_client/generated/inventory/api/location/get_inventory_location.py b/ebay_client/generated/inventory/api/location/get_inventory_location.py
new file mode 100644
index 0000000..4605a27
--- /dev/null
+++ b/ebay_client/generated/inventory/api/location/get_inventory_location.py
@@ -0,0 +1,185 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.inventory_location_response import InventoryLocationResponse
+from typing import cast
+
+
+
+def _get_kwargs(
+ merchant_location_key: str,
+
+) -> dict[str, Any]:
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/location/{merchant_location_key}".format(merchant_location_key=merchant_location_key,),
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, InventoryLocationResponse]]:
+ if response.status_code == 200:
+ response_200 = InventoryLocationResponse.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 404:
+ response_404 = cast(Any, None)
+ return response_404
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, InventoryLocationResponse]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ merchant_location_key: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, InventoryLocationResponse]]:
+ """ This call retrieves all defined details of the inventory location that is specified by the
+ merchantLocationKey path parameter.A successful call will return an HTTP status value of
+ 200 OK.
+
+ Args:
+ merchant_location_key (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, InventoryLocationResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ merchant_location_key=merchant_location_key,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ merchant_location_key: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, InventoryLocationResponse]]:
+ """ This call retrieves all defined details of the inventory location that is specified by the
+ merchantLocationKey path parameter.A successful call will return an HTTP status value of
+ 200 OK.
+
+ Args:
+ merchant_location_key (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, InventoryLocationResponse]
+ """
+
+
+ return sync_detailed(
+ merchant_location_key=merchant_location_key,
+client=client,
+
+ ).parsed
+
+async def asyncio_detailed(
+ merchant_location_key: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, InventoryLocationResponse]]:
+ """ This call retrieves all defined details of the inventory location that is specified by the
+ merchantLocationKey path parameter.A successful call will return an HTTP status value of
+ 200 OK.
+
+ Args:
+ merchant_location_key (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, InventoryLocationResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ merchant_location_key=merchant_location_key,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ merchant_location_key: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, InventoryLocationResponse]]:
+ """ This call retrieves all defined details of the inventory location that is specified by the
+ merchantLocationKey path parameter.A successful call will return an HTTP status value of
+ 200 OK.
+
+ Args:
+ merchant_location_key (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, InventoryLocationResponse]
+ """
+
+
+ return (await asyncio_detailed(
+ merchant_location_key=merchant_location_key,
+client=client,
+
+ )).parsed
diff --git a/ebay_client/generated/inventory/api/location/get_inventory_locations.py b/ebay_client/generated/inventory/api/location/get_inventory_locations.py
new file mode 100644
index 0000000..6696ec5
--- /dev/null
+++ b/ebay_client/generated/inventory/api/location/get_inventory_locations.py
@@ -0,0 +1,227 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.location_response import LocationResponse
+from ...types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+
+
+def _get_kwargs(
+ *,
+ limit: Union[Unset, str] = UNSET,
+ offset: Union[Unset, str] = UNSET,
+
+) -> dict[str, Any]:
+
+
+
+
+ params: dict[str, Any] = {}
+
+ params["limit"] = limit
+
+ params["offset"] = offset
+
+
+ params = {k: v for k, v in params.items() if v is not UNSET and v is not None}
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/location",
+ "params": params,
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, LocationResponse]]:
+ if response.status_code == 200:
+ response_200 = LocationResponse.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, LocationResponse]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ *,
+ client: AuthenticatedClient,
+ limit: Union[Unset, str] = UNSET,
+ offset: Union[Unset, str] = UNSET,
+
+) -> Response[Union[Any, LocationResponse]]:
+ """ This call retrieves all defined details for every inventory location associated with the seller's
+ account. There are no required parameters for this call and no request payload. However, there are
+ two optional query parameters, limit and offset. The
+ limit query parameter sets the maximum number of locations returned on one page of
+ data, and the offset query parameter specifies the page of data to return. These
+ query parameters are discussed more in the URI parameters table below. The
+ authorization HTTP header is the only required request header for this call.
A
+ successful call will return an HTTP status value of 200 OK.
+
+ Args:
+ limit (Union[Unset, str]):
+ offset (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, LocationResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ limit=limit,
+offset=offset,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ *,
+ client: AuthenticatedClient,
+ limit: Union[Unset, str] = UNSET,
+ offset: Union[Unset, str] = UNSET,
+
+) -> Optional[Union[Any, LocationResponse]]:
+ """ This call retrieves all defined details for every inventory location associated with the seller's
+ account. There are no required parameters for this call and no request payload. However, there are
+ two optional query parameters, limit and offset. The
+ limit query parameter sets the maximum number of locations returned on one page of
+ data, and the offset query parameter specifies the page of data to return. These
+ query parameters are discussed more in the URI parameters table below. The
+ authorization HTTP header is the only required request header for this call.
A
+ successful call will return an HTTP status value of 200 OK.
+
+ Args:
+ limit (Union[Unset, str]):
+ offset (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, LocationResponse]
+ """
+
+
+ return sync_detailed(
+ client=client,
+limit=limit,
+offset=offset,
+
+ ).parsed
+
+async def asyncio_detailed(
+ *,
+ client: AuthenticatedClient,
+ limit: Union[Unset, str] = UNSET,
+ offset: Union[Unset, str] = UNSET,
+
+) -> Response[Union[Any, LocationResponse]]:
+ """ This call retrieves all defined details for every inventory location associated with the seller's
+ account. There are no required parameters for this call and no request payload. However, there are
+ two optional query parameters, limit and offset. The
+ limit query parameter sets the maximum number of locations returned on one page of
+ data, and the offset query parameter specifies the page of data to return. These
+ query parameters are discussed more in the URI parameters table below. The
+ authorization HTTP header is the only required request header for this call.
A
+ successful call will return an HTTP status value of 200 OK.
+
+ Args:
+ limit (Union[Unset, str]):
+ offset (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, LocationResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ limit=limit,
+offset=offset,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ *,
+ client: AuthenticatedClient,
+ limit: Union[Unset, str] = UNSET,
+ offset: Union[Unset, str] = UNSET,
+
+) -> Optional[Union[Any, LocationResponse]]:
+ """ This call retrieves all defined details for every inventory location associated with the seller's
+ account. There are no required parameters for this call and no request payload. However, there are
+ two optional query parameters, limit and offset. The
+ limit query parameter sets the maximum number of locations returned on one page of
+ data, and the offset query parameter specifies the page of data to return. These
+ query parameters are discussed more in the URI parameters table below. The
+ authorization HTTP header is the only required request header for this call.
A
+ successful call will return an HTTP status value of 200 OK.
+
+ Args:
+ limit (Union[Unset, str]):
+ offset (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, LocationResponse]
+ """
+
+
+ return (await asyncio_detailed(
+ client=client,
+limit=limit,
+offset=offset,
+
+ )).parsed
diff --git a/ebay_client/generated/inventory/api/location/update_inventory_location.py b/ebay_client/generated/inventory/api/location/update_inventory_location.py
new file mode 100644
index 0000000..36fe5df
--- /dev/null
+++ b/ebay_client/generated/inventory/api/location/update_inventory_location.py
@@ -0,0 +1,181 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.inventory_location import InventoryLocation
+from typing import cast
+
+
+
+def _get_kwargs(
+ merchant_location_key: str,
+ *,
+ body: InventoryLocation,
+ content_type: str,
+
+) -> dict[str, Any]:
+ headers: dict[str, Any] = {}
+ headers["Content-Type"] = content_type
+
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "post",
+ "url": "/location/{merchant_location_key}/update_location_details".format(merchant_location_key=merchant_location_key,),
+ }
+
+ _kwargs["json"] = body.to_dict()
+
+
+ headers["Content-Type"] = "application/json"
+
+ _kwargs["headers"] = headers
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Any]:
+ if response.status_code == 400:
+ return None
+ if response.status_code == 500:
+ return None
+ if response.status_code == 204:
+ return None
+ if response.status_code == 404:
+ return None
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Any]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ merchant_location_key: str,
+ *,
+ client: AuthenticatedClient,
+ body: InventoryLocation,
+ content_type: str,
+
+) -> Response[Any]:
+ r""" Use this call to update location details for an existing inventory location. Specify the
+ inventory location you want to update using the merchantLocationKey path parameter.
You
+ can update the following text-based fields: name, phone,
+ timeZoneId, geoCoordinates,
+ fulfillmentCenterSpecifications, locationTypes,
+ locationWebUrl, locationInstructions and
+ locationAdditionalInformation any number of times for any location type.
For
+ warehouse and store inventory locations, address fields can be updated any number of times. Address
+ fields cannot be updated for fulfillment center locations. However, if any address fields
+ were omitted during the createInventoryLocation call, they can be added through this
+ method.
Note: When updating a warehouse location to a
+ fulfillment center, sellers can update any of the address fields a single time during the same call
+ used to make this update. After this, they can no longer be updated.For store locations,
+ the operating hours and/or the special hours can also be updated.
Whatever text is passed in
+ for these fields in an updateInventoryLocation call will replace the current text
+ strings defined for these fields.
Unless one or more errors and/or warnings occurs with the
+ call, there is no response payload for this call. A successful call will return an HTTP status value
+ of 204 No Content.
+
+ Args:
+ merchant_location_key (str):
+ content_type (str):
+ body (InventoryLocation): This type is used by the
+ updateInventoryLocation call to update operating hours, special hours,
+ phone number, and other minor details of an inventory location.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ merchant_location_key=merchant_location_key,
+body=body,
+content_type=content_type,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+
+async def asyncio_detailed(
+ merchant_location_key: str,
+ *,
+ client: AuthenticatedClient,
+ body: InventoryLocation,
+ content_type: str,
+
+) -> Response[Any]:
+ r""" Use this call to update location details for an existing inventory location. Specify the
+ inventory location you want to update using the merchantLocationKey path parameter.
You
+ can update the following text-based fields: name, phone,
+ timeZoneId, geoCoordinates,
+ fulfillmentCenterSpecifications, locationTypes,
+ locationWebUrl, locationInstructions and
+ locationAdditionalInformation any number of times for any location type.
For
+ warehouse and store inventory locations, address fields can be updated any number of times. Address
+ fields cannot be updated for fulfillment center locations. However, if any address fields
+ were omitted during the createInventoryLocation call, they can be added through this
+ method.
Note: When updating a warehouse location to a
+ fulfillment center, sellers can update any of the address fields a single time during the same call
+ used to make this update. After this, they can no longer be updated.For store locations,
+ the operating hours and/or the special hours can also be updated.
Whatever text is passed in
+ for these fields in an updateInventoryLocation call will replace the current text
+ strings defined for these fields.
Unless one or more errors and/or warnings occurs with the
+ call, there is no response payload for this call. A successful call will return an HTTP status value
+ of 204 No Content.
+
+ Args:
+ merchant_location_key (str):
+ content_type (str):
+ body (InventoryLocation): This type is used by the
+ updateInventoryLocation call to update operating hours, special hours,
+ phone number, and other minor details of an inventory location.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ merchant_location_key=merchant_location_key,
+body=body,
+content_type=content_type,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
diff --git a/ebay_client/generated/inventory/api/offer/__init__.py b/ebay_client/generated/inventory/api/offer/__init__.py
new file mode 100644
index 0000000..c9921b5
--- /dev/null
+++ b/ebay_client/generated/inventory/api/offer/__init__.py
@@ -0,0 +1 @@
+""" Contains endpoint functions for accessing the API """
diff --git a/ebay_client/generated/inventory/api/offer/bulk_create_offer.py b/ebay_client/generated/inventory/api/offer/bulk_create_offer.py
new file mode 100644
index 0000000..86510b9
--- /dev/null
+++ b/ebay_client/generated/inventory/api/offer/bulk_create_offer.py
@@ -0,0 +1,343 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.bulk_ebay_offer_details_with_keys import BulkEbayOfferDetailsWithKeys
+from ...models.bulk_offer_response import BulkOfferResponse
+from typing import cast
+
+
+
+def _get_kwargs(
+ *,
+ body: BulkEbayOfferDetailsWithKeys,
+ content_language: str,
+ content_type: str,
+
+) -> dict[str, Any]:
+ headers: dict[str, Any] = {}
+ headers["Content-Language"] = content_language
+
+ headers["Content-Type"] = content_type
+
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "post",
+ "url": "/bulk_create_offer",
+ }
+
+ _kwargs["json"] = body.to_dict()
+
+
+ headers["Content-Type"] = "application/json"
+
+ _kwargs["headers"] = headers
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, BulkOfferResponse]]:
+ if response.status_code == 200:
+ response_200 = BulkOfferResponse.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 207:
+ response_207 = cast(Any, None)
+ return response_207
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, BulkOfferResponse]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ *,
+ client: AuthenticatedClient,
+ body: BulkEbayOfferDetailsWithKeys,
+ content_language: str,
+ content_type: str,
+
+) -> Response[Union[Any, BulkOfferResponse]]:
+ r""" This call creates multiple offers (up to 25) for specific inventory items on a specific eBay
+ marketplace. Although it is not a requirement for the seller to create complete offers (with all
+ necessary details) right from the start, eBay recommends that the seller provide all necessary
+ details with this call since there is currently no bulk operation available to update multiple
+ offers with one call. The following fields are always required in the request payload:
+ sku, marketplaceId, and (listing) format.
+
Important!Publish offer note: Fields may be
+ optional or conditionally required when calling this method, but become required when publishing the
+ offer to create an active listing. For this method, see Offer fields for a
+ list of fields required to publish an offer.
Other information that will be
+ required before a offer can be published are highlighted below: - Inventory location
+ - Offer price
- Available quantity
- eBay listing category
- Referenced
+ listing policy profiles to set payment, return, and fulfillment values/settings
Note: Though the includeCatalogProductDetails
+ parameter is not required to be submitted in the request, the parameter defaults to
+ true if omitted.
Note: In addition to the
+ authorization header, which is required for all Inventory API calls, this call also
+ requires the Content-Type and Content-Language headers. See the HTTP
+ request headers for more information.
If the call is successful, unique
+ offerId values are returned in the response for each successfully created offer.
+ The offerId value will be required for many other offer-related calls. Note that
+ this call only stages an offer for publishing. The seller must run either the
+ publishOffer, bulkPublishOffer, or
+ publishOfferByInventoryItemGroup call to convert offer(s) into an active single- or
+ multiple-variation listing.
For those who prefer to create a single offer per call, the
+ createOffer method can be used instead.
+
+ Args:
+ content_language (str):
+ content_type (str):
+ body (BulkEbayOfferDetailsWithKeys): This type is used by the base request of the
+ bulkCreateOffer method, which is used to create up to 25 new offers.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, BulkOfferResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ body=body,
+content_language=content_language,
+content_type=content_type,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ *,
+ client: AuthenticatedClient,
+ body: BulkEbayOfferDetailsWithKeys,
+ content_language: str,
+ content_type: str,
+
+) -> Optional[Union[Any, BulkOfferResponse]]:
+ r""" This call creates multiple offers (up to 25) for specific inventory items on a specific eBay
+ marketplace. Although it is not a requirement for the seller to create complete offers (with all
+ necessary details) right from the start, eBay recommends that the seller provide all necessary
+ details with this call since there is currently no bulk operation available to update multiple
+ offers with one call. The following fields are always required in the request payload:
+ sku, marketplaceId, and (listing) format.
+
Important!Publish offer note: Fields may be
+ optional or conditionally required when calling this method, but become required when publishing the
+ offer to create an active listing. For this method, see Offer fields for a
+ list of fields required to publish an offer.
Other information that will be
+ required before a offer can be published are highlighted below: - Inventory location
+ - Offer price
- Available quantity
- eBay listing category
- Referenced
+ listing policy profiles to set payment, return, and fulfillment values/settings
Note: Though the includeCatalogProductDetails
+ parameter is not required to be submitted in the request, the parameter defaults to
+ true if omitted.
Note: In addition to the
+ authorization header, which is required for all Inventory API calls, this call also
+ requires the Content-Type and Content-Language headers. See the HTTP
+ request headers for more information.
If the call is successful, unique
+ offerId values are returned in the response for each successfully created offer.
+ The offerId value will be required for many other offer-related calls. Note that
+ this call only stages an offer for publishing. The seller must run either the
+ publishOffer, bulkPublishOffer, or
+ publishOfferByInventoryItemGroup call to convert offer(s) into an active single- or
+ multiple-variation listing.
For those who prefer to create a single offer per call, the
+ createOffer method can be used instead.
+
+ Args:
+ content_language (str):
+ content_type (str):
+ body (BulkEbayOfferDetailsWithKeys): This type is used by the base request of the
+ bulkCreateOffer method, which is used to create up to 25 new offers.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, BulkOfferResponse]
+ """
+
+
+ return sync_detailed(
+ client=client,
+body=body,
+content_language=content_language,
+content_type=content_type,
+
+ ).parsed
+
+async def asyncio_detailed(
+ *,
+ client: AuthenticatedClient,
+ body: BulkEbayOfferDetailsWithKeys,
+ content_language: str,
+ content_type: str,
+
+) -> Response[Union[Any, BulkOfferResponse]]:
+ r""" This call creates multiple offers (up to 25) for specific inventory items on a specific eBay
+ marketplace. Although it is not a requirement for the seller to create complete offers (with all
+ necessary details) right from the start, eBay recommends that the seller provide all necessary
+ details with this call since there is currently no bulk operation available to update multiple
+ offers with one call. The following fields are always required in the request payload:
+ sku, marketplaceId, and (listing) format.
+
Important!Publish offer note: Fields may be
+ optional or conditionally required when calling this method, but become required when publishing the
+ offer to create an active listing. For this method, see Offer fields for a
+ list of fields required to publish an offer.
Other information that will be
+ required before a offer can be published are highlighted below: - Inventory location
+ - Offer price
- Available quantity
- eBay listing category
- Referenced
+ listing policy profiles to set payment, return, and fulfillment values/settings
Note: Though the includeCatalogProductDetails
+ parameter is not required to be submitted in the request, the parameter defaults to
+ true if omitted.
Note: In addition to the
+ authorization header, which is required for all Inventory API calls, this call also
+ requires the Content-Type and Content-Language headers. See the HTTP
+ request headers for more information.
If the call is successful, unique
+ offerId values are returned in the response for each successfully created offer.
+ The offerId value will be required for many other offer-related calls. Note that
+ this call only stages an offer for publishing. The seller must run either the
+ publishOffer, bulkPublishOffer, or
+ publishOfferByInventoryItemGroup call to convert offer(s) into an active single- or
+ multiple-variation listing.
For those who prefer to create a single offer per call, the
+ createOffer method can be used instead.
+
+ Args:
+ content_language (str):
+ content_type (str):
+ body (BulkEbayOfferDetailsWithKeys): This type is used by the base request of the
+ bulkCreateOffer method, which is used to create up to 25 new offers.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, BulkOfferResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ body=body,
+content_language=content_language,
+content_type=content_type,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ *,
+ client: AuthenticatedClient,
+ body: BulkEbayOfferDetailsWithKeys,
+ content_language: str,
+ content_type: str,
+
+) -> Optional[Union[Any, BulkOfferResponse]]:
+ r""" This call creates multiple offers (up to 25) for specific inventory items on a specific eBay
+ marketplace. Although it is not a requirement for the seller to create complete offers (with all
+ necessary details) right from the start, eBay recommends that the seller provide all necessary
+ details with this call since there is currently no bulk operation available to update multiple
+ offers with one call. The following fields are always required in the request payload:
+ sku, marketplaceId, and (listing) format.
+
Important!Publish offer note: Fields may be
+ optional or conditionally required when calling this method, but become required when publishing the
+ offer to create an active listing. For this method, see Offer fields for a
+ list of fields required to publish an offer.
Other information that will be
+ required before a offer can be published are highlighted below: - Inventory location
+ - Offer price
- Available quantity
- eBay listing category
- Referenced
+ listing policy profiles to set payment, return, and fulfillment values/settings
Note: Though the includeCatalogProductDetails
+ parameter is not required to be submitted in the request, the parameter defaults to
+ true if omitted.
Note: In addition to the
+ authorization header, which is required for all Inventory API calls, this call also
+ requires the Content-Type and Content-Language headers. See the HTTP
+ request headers for more information.
If the call is successful, unique
+ offerId values are returned in the response for each successfully created offer.
+ The offerId value will be required for many other offer-related calls. Note that
+ this call only stages an offer for publishing. The seller must run either the
+ publishOffer, bulkPublishOffer, or
+ publishOfferByInventoryItemGroup call to convert offer(s) into an active single- or
+ multiple-variation listing.
For those who prefer to create a single offer per call, the
+ createOffer method can be used instead.
+
+ Args:
+ content_language (str):
+ content_type (str):
+ body (BulkEbayOfferDetailsWithKeys): This type is used by the base request of the
+ bulkCreateOffer method, which is used to create up to 25 new offers.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, BulkOfferResponse]
+ """
+
+
+ return (await asyncio_detailed(
+ client=client,
+body=body,
+content_language=content_language,
+content_type=content_type,
+
+ )).parsed
diff --git a/ebay_client/generated/inventory/api/offer/bulk_publish_offer.py b/ebay_client/generated/inventory/api/offer/bulk_publish_offer.py
new file mode 100644
index 0000000..09cbafc
--- /dev/null
+++ b/ebay_client/generated/inventory/api/offer/bulk_publish_offer.py
@@ -0,0 +1,288 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.bulk_offer import BulkOffer
+from ...models.bulk_publish_response import BulkPublishResponse
+from typing import cast
+
+
+
+def _get_kwargs(
+ *,
+ body: BulkOffer,
+ content_type: str,
+
+) -> dict[str, Any]:
+ headers: dict[str, Any] = {}
+ headers["Content-Type"] = content_type
+
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "post",
+ "url": "/bulk_publish_offer",
+ }
+
+ _kwargs["json"] = body.to_dict()
+
+
+ headers["Content-Type"] = "application/json"
+
+ _kwargs["headers"] = headers
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, BulkPublishResponse]]:
+ if response.status_code == 200:
+ response_200 = BulkPublishResponse.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 207:
+ response_207 = cast(Any, None)
+ return response_207
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, BulkPublishResponse]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ *,
+ client: AuthenticatedClient,
+ body: BulkOffer,
+ content_type: str,
+
+) -> Response[Union[Any, BulkPublishResponse]]:
+ r""" Note: Each listing can be revised up to 250 times in one
+ calendar day. If this revision threshold is reached, the seller will be blocked from revising the
+ item until the next calendar day.
This call is used to convert unpublished offers (up to
+ 25) into published offers, or live eBay listings. The unique identifier (offerId)
+ of each offer to publish is passed into the request payload. It is possible that some unpublished
+ offers will be successfully created into eBay listings, but others may fail. The response payload
+ will show the results for each offerId value that is passed into the request
+ payload. The errors and warnings containers will be returned for
+ an offer that had one or more issues being published.
Important!Publish offer note: Fields may be
+ optional or conditionally required when calling the create or update methods, but become required
+ when publishing the offer to create active listings. For this method, see Offer fields for a
+ list of fields required to publish an offer.
For those who prefer to publish one
+ offer per call, the publishOffer method can be used instead. In the case of a
+ multiple-variation listing, the publishOfferByInventoryItemGroup call should be
+ used instead, as this call will convert all unpublished offers associated with an inventory item
+ group into a multiple-variation listing.
+
+ Args:
+ content_type (str):
+ body (BulkOffer): This type is used by the base request of the
+ bulkPublishOffer method, which is used to publish up to 25 different
+ offers.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, BulkPublishResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ body=body,
+content_type=content_type,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ *,
+ client: AuthenticatedClient,
+ body: BulkOffer,
+ content_type: str,
+
+) -> Optional[Union[Any, BulkPublishResponse]]:
+ r""" Note: Each listing can be revised up to 250 times in one
+ calendar day. If this revision threshold is reached, the seller will be blocked from revising the
+ item until the next calendar day.
This call is used to convert unpublished offers (up to
+ 25) into published offers, or live eBay listings. The unique identifier (offerId)
+ of each offer to publish is passed into the request payload. It is possible that some unpublished
+ offers will be successfully created into eBay listings, but others may fail. The response payload
+ will show the results for each offerId value that is passed into the request
+ payload. The errors and warnings containers will be returned for
+ an offer that had one or more issues being published.
Important!Publish offer note: Fields may be
+ optional or conditionally required when calling the create or update methods, but become required
+ when publishing the offer to create active listings. For this method, see Offer fields for a
+ list of fields required to publish an offer.
For those who prefer to publish one
+ offer per call, the publishOffer method can be used instead. In the case of a
+ multiple-variation listing, the publishOfferByInventoryItemGroup call should be
+ used instead, as this call will convert all unpublished offers associated with an inventory item
+ group into a multiple-variation listing.
+
+ Args:
+ content_type (str):
+ body (BulkOffer): This type is used by the base request of the
+ bulkPublishOffer method, which is used to publish up to 25 different
+ offers.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, BulkPublishResponse]
+ """
+
+
+ return sync_detailed(
+ client=client,
+body=body,
+content_type=content_type,
+
+ ).parsed
+
+async def asyncio_detailed(
+ *,
+ client: AuthenticatedClient,
+ body: BulkOffer,
+ content_type: str,
+
+) -> Response[Union[Any, BulkPublishResponse]]:
+ r""" Note: Each listing can be revised up to 250 times in one
+ calendar day. If this revision threshold is reached, the seller will be blocked from revising the
+ item until the next calendar day.
This call is used to convert unpublished offers (up to
+ 25) into published offers, or live eBay listings. The unique identifier (offerId)
+ of each offer to publish is passed into the request payload. It is possible that some unpublished
+ offers will be successfully created into eBay listings, but others may fail. The response payload
+ will show the results for each offerId value that is passed into the request
+ payload. The errors and warnings containers will be returned for
+ an offer that had one or more issues being published.
Important!Publish offer note: Fields may be
+ optional or conditionally required when calling the create or update methods, but become required
+ when publishing the offer to create active listings. For this method, see Offer fields for a
+ list of fields required to publish an offer.
For those who prefer to publish one
+ offer per call, the publishOffer method can be used instead. In the case of a
+ multiple-variation listing, the publishOfferByInventoryItemGroup call should be
+ used instead, as this call will convert all unpublished offers associated with an inventory item
+ group into a multiple-variation listing.
+
+ Args:
+ content_type (str):
+ body (BulkOffer): This type is used by the base request of the
+ bulkPublishOffer method, which is used to publish up to 25 different
+ offers.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, BulkPublishResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ body=body,
+content_type=content_type,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ *,
+ client: AuthenticatedClient,
+ body: BulkOffer,
+ content_type: str,
+
+) -> Optional[Union[Any, BulkPublishResponse]]:
+ r""" Note: Each listing can be revised up to 250 times in one
+ calendar day. If this revision threshold is reached, the seller will be blocked from revising the
+ item until the next calendar day.
This call is used to convert unpublished offers (up to
+ 25) into published offers, or live eBay listings. The unique identifier (offerId)
+ of each offer to publish is passed into the request payload. It is possible that some unpublished
+ offers will be successfully created into eBay listings, but others may fail. The response payload
+ will show the results for each offerId value that is passed into the request
+ payload. The errors and warnings containers will be returned for
+ an offer that had one or more issues being published.
Important!Publish offer note: Fields may be
+ optional or conditionally required when calling the create or update methods, but become required
+ when publishing the offer to create active listings. For this method, see Offer fields for a
+ list of fields required to publish an offer.
For those who prefer to publish one
+ offer per call, the publishOffer method can be used instead. In the case of a
+ multiple-variation listing, the publishOfferByInventoryItemGroup call should be
+ used instead, as this call will convert all unpublished offers associated with an inventory item
+ group into a multiple-variation listing.
+
+ Args:
+ content_type (str):
+ body (BulkOffer): This type is used by the base request of the
+ bulkPublishOffer method, which is used to publish up to 25 different
+ offers.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, BulkPublishResponse]
+ """
+
+
+ return (await asyncio_detailed(
+ client=client,
+body=body,
+content_type=content_type,
+
+ )).parsed
diff --git a/ebay_client/generated/inventory/api/offer/create_offer.py b/ebay_client/generated/inventory/api/offer/create_offer.py
new file mode 100644
index 0000000..d6da16b
--- /dev/null
+++ b/ebay_client/generated/inventory/api/offer/create_offer.py
@@ -0,0 +1,344 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.ebay_offer_details_with_keys import EbayOfferDetailsWithKeys
+from ...models.offer_response import OfferResponse
+from typing import cast
+
+
+
+def _get_kwargs(
+ *,
+ body: EbayOfferDetailsWithKeys,
+ content_language: str,
+ content_type: str,
+
+) -> dict[str, Any]:
+ headers: dict[str, Any] = {}
+ headers["Content-Language"] = content_language
+
+ headers["Content-Type"] = content_type
+
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "post",
+ "url": "/offer",
+ }
+
+ _kwargs["json"] = body.to_dict()
+
+
+ headers["Content-Type"] = "application/json"
+
+ _kwargs["headers"] = headers
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, OfferResponse]]:
+ if response.status_code == 201:
+ response_201 = OfferResponse.from_dict(response.json())
+
+
+
+ return response_201
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, OfferResponse]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ *,
+ client: AuthenticatedClient,
+ body: EbayOfferDetailsWithKeys,
+ content_language: str,
+ content_type: str,
+
+) -> Response[Union[Any, OfferResponse]]:
+ r""" This call creates an offer for a specific inventory item on a specific eBay marketplace. It is up to
+ the sellers whether they want to create a complete offer (with all necessary details) right from the
+ start, or sellers can provide only some information with the initial createOffer
+ call, and then make one or more subsequent updateOffer calls to complete the offer
+ and prepare to publish the offer. Upon first creating an offer, the following fields are required in
+ the request payload: sku, marketplaceId, and (listing)
+ format.
Important!Publish offer note: Fields may be
+ optional or conditionally required when calling this method, but become required when publishing the
+ offer to create an active listing. For this method, see Offer fields for a
+ list of fields required to publish an offer.
Other information that will be
+ required before an offer can be published are highlighted below. These settings are either set with
+ createOffer, or they can be set with a subsequent updateOffer
+ call: - Inventory location
- Offer price
- Available quantity
- eBay
+ listing category
- Referenced listing policy profiles to set payment, return, and fulfillment
+ values/settings
Note: Though the
+ includeCatalogProductDetails parameter is not required to be submitted in the
+ request, the parameter defaults to true if omitted.
Note: In addition to the authorization header, which is
+ required for all Inventory API calls, this call also requires the Content-Type and
+ Content-Language headers. See the HTTP request
+ headers for more information.If the call is successful, a unique
+ offerId value is returned in the response. This value will be required for many
+ other offer-related calls. Note that this call only stages an offer for publishing. The seller must
+ run the publishOffer call to convert the offer to an active eBay listing.
For
+ those who prefer to create multiple offers (up to 25 at a time) with one call, the
+ bulkCreateOffer method can be used.
+
+ Args:
+ content_language (str):
+ content_type (str):
+ body (EbayOfferDetailsWithKeys): This type provides details of an offer, and is used by
+ the base request payload of the createOffer and
+ bulkCreateOffer methods.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, OfferResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ body=body,
+content_language=content_language,
+content_type=content_type,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ *,
+ client: AuthenticatedClient,
+ body: EbayOfferDetailsWithKeys,
+ content_language: str,
+ content_type: str,
+
+) -> Optional[Union[Any, OfferResponse]]:
+ r""" This call creates an offer for a specific inventory item on a specific eBay marketplace. It is up to
+ the sellers whether they want to create a complete offer (with all necessary details) right from the
+ start, or sellers can provide only some information with the initial createOffer
+ call, and then make one or more subsequent updateOffer calls to complete the offer
+ and prepare to publish the offer. Upon first creating an offer, the following fields are required in
+ the request payload: sku, marketplaceId, and (listing)
+ format.
Important!Publish offer note: Fields may be
+ optional or conditionally required when calling this method, but become required when publishing the
+ offer to create an active listing. For this method, see Offer fields for a
+ list of fields required to publish an offer.
Other information that will be
+ required before an offer can be published are highlighted below. These settings are either set with
+ createOffer, or they can be set with a subsequent updateOffer
+ call: - Inventory location
- Offer price
- Available quantity
- eBay
+ listing category
- Referenced listing policy profiles to set payment, return, and fulfillment
+ values/settings
Note: Though the
+ includeCatalogProductDetails parameter is not required to be submitted in the
+ request, the parameter defaults to true if omitted.
Note: In addition to the authorization header, which is
+ required for all Inventory API calls, this call also requires the Content-Type and
+ Content-Language headers. See the HTTP request
+ headers for more information.If the call is successful, a unique
+ offerId value is returned in the response. This value will be required for many
+ other offer-related calls. Note that this call only stages an offer for publishing. The seller must
+ run the publishOffer call to convert the offer to an active eBay listing.
For
+ those who prefer to create multiple offers (up to 25 at a time) with one call, the
+ bulkCreateOffer method can be used.
+
+ Args:
+ content_language (str):
+ content_type (str):
+ body (EbayOfferDetailsWithKeys): This type provides details of an offer, and is used by
+ the base request payload of the createOffer and
+ bulkCreateOffer methods.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, OfferResponse]
+ """
+
+
+ return sync_detailed(
+ client=client,
+body=body,
+content_language=content_language,
+content_type=content_type,
+
+ ).parsed
+
+async def asyncio_detailed(
+ *,
+ client: AuthenticatedClient,
+ body: EbayOfferDetailsWithKeys,
+ content_language: str,
+ content_type: str,
+
+) -> Response[Union[Any, OfferResponse]]:
+ r""" This call creates an offer for a specific inventory item on a specific eBay marketplace. It is up to
+ the sellers whether they want to create a complete offer (with all necessary details) right from the
+ start, or sellers can provide only some information with the initial createOffer
+ call, and then make one or more subsequent updateOffer calls to complete the offer
+ and prepare to publish the offer. Upon first creating an offer, the following fields are required in
+ the request payload: sku, marketplaceId, and (listing)
+ format.
Important!Publish offer note: Fields may be
+ optional or conditionally required when calling this method, but become required when publishing the
+ offer to create an active listing. For this method, see Offer fields for a
+ list of fields required to publish an offer.
Other information that will be
+ required before an offer can be published are highlighted below. These settings are either set with
+ createOffer, or they can be set with a subsequent updateOffer
+ call: - Inventory location
- Offer price
- Available quantity
- eBay
+ listing category
- Referenced listing policy profiles to set payment, return, and fulfillment
+ values/settings
Note: Though the
+ includeCatalogProductDetails parameter is not required to be submitted in the
+ request, the parameter defaults to true if omitted.
Note: In addition to the authorization header, which is
+ required for all Inventory API calls, this call also requires the Content-Type and
+ Content-Language headers. See the HTTP request
+ headers for more information.If the call is successful, a unique
+ offerId value is returned in the response. This value will be required for many
+ other offer-related calls. Note that this call only stages an offer for publishing. The seller must
+ run the publishOffer call to convert the offer to an active eBay listing.
For
+ those who prefer to create multiple offers (up to 25 at a time) with one call, the
+ bulkCreateOffer method can be used.
+
+ Args:
+ content_language (str):
+ content_type (str):
+ body (EbayOfferDetailsWithKeys): This type provides details of an offer, and is used by
+ the base request payload of the createOffer and
+ bulkCreateOffer methods.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, OfferResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ body=body,
+content_language=content_language,
+content_type=content_type,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ *,
+ client: AuthenticatedClient,
+ body: EbayOfferDetailsWithKeys,
+ content_language: str,
+ content_type: str,
+
+) -> Optional[Union[Any, OfferResponse]]:
+ r""" This call creates an offer for a specific inventory item on a specific eBay marketplace. It is up to
+ the sellers whether they want to create a complete offer (with all necessary details) right from the
+ start, or sellers can provide only some information with the initial createOffer
+ call, and then make one or more subsequent updateOffer calls to complete the offer
+ and prepare to publish the offer. Upon first creating an offer, the following fields are required in
+ the request payload: sku, marketplaceId, and (listing)
+ format.
Important!Publish offer note: Fields may be
+ optional or conditionally required when calling this method, but become required when publishing the
+ offer to create an active listing. For this method, see Offer fields for a
+ list of fields required to publish an offer.
Other information that will be
+ required before an offer can be published are highlighted below. These settings are either set with
+ createOffer, or they can be set with a subsequent updateOffer
+ call: - Inventory location
- Offer price
- Available quantity
- eBay
+ listing category
- Referenced listing policy profiles to set payment, return, and fulfillment
+ values/settings
Note: Though the
+ includeCatalogProductDetails parameter is not required to be submitted in the
+ request, the parameter defaults to true if omitted.
Note: In addition to the authorization header, which is
+ required for all Inventory API calls, this call also requires the Content-Type and
+ Content-Language headers. See the HTTP request
+ headers for more information.If the call is successful, a unique
+ offerId value is returned in the response. This value will be required for many
+ other offer-related calls. Note that this call only stages an offer for publishing. The seller must
+ run the publishOffer call to convert the offer to an active eBay listing.
For
+ those who prefer to create multiple offers (up to 25 at a time) with one call, the
+ bulkCreateOffer method can be used.
+
+ Args:
+ content_language (str):
+ content_type (str):
+ body (EbayOfferDetailsWithKeys): This type provides details of an offer, and is used by
+ the base request payload of the createOffer and
+ bulkCreateOffer methods.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, OfferResponse]
+ """
+
+
+ return (await asyncio_detailed(
+ client=client,
+body=body,
+content_language=content_language,
+content_type=content_type,
+
+ )).parsed
diff --git a/ebay_client/generated/inventory/api/offer/delete_offer.py b/ebay_client/generated/inventory/api/offer/delete_offer.py
new file mode 100644
index 0000000..16e0d4e
--- /dev/null
+++ b/ebay_client/generated/inventory/api/offer/delete_offer.py
@@ -0,0 +1,134 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+
+
+
+def _get_kwargs(
+ offer_id: str,
+
+) -> dict[str, Any]:
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "delete",
+ "url": "/offer/{offer_id}".format(offer_id=offer_id,),
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Any]:
+ if response.status_code == 400:
+ return None
+ if response.status_code == 500:
+ return None
+ if response.status_code == 204:
+ return None
+ if response.status_code == 404:
+ return None
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Any]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ offer_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Any]:
+ """ If used against an unpublished offer, this call will permanently delete that offer. In the case of a
+ published offer (or live eBay listing), a successful call will either end the single-variation
+ listing associated with the offer, or it will remove that product variation from the eBay listing
+ and also automatically remove that product variation from the inventory item group. In the case of a
+ multiple-variation listing, the deleteOffer will not remove the product variation
+ from the listing if that variation has one or more sales. If that product variation has one or more
+ sales, the seller can alternately just set the available quantity of that product variation to
+ 0, so it is not available in the eBay search or View Item page, and then the seller can
+ remove that product variation from the inventory item group at a later time.
+
+ Args:
+ offer_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ offer_id=offer_id,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+
+async def asyncio_detailed(
+ offer_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Any]:
+ """ If used against an unpublished offer, this call will permanently delete that offer. In the case of a
+ published offer (or live eBay listing), a successful call will either end the single-variation
+ listing associated with the offer, or it will remove that product variation from the eBay listing
+ and also automatically remove that product variation from the inventory item group. In the case of a
+ multiple-variation listing, the deleteOffer will not remove the product variation
+ from the listing if that variation has one or more sales. If that product variation has one or more
+ sales, the seller can alternately just set the available quantity of that product variation to
+ 0, so it is not available in the eBay search or View Item page, and then the seller can
+ remove that product variation from the inventory item group at a later time.
+
+ Args:
+ offer_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ offer_id=offer_id,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
diff --git a/ebay_client/generated/inventory/api/offer/get_listing_fees.py b/ebay_client/generated/inventory/api/offer/get_listing_fees.py
new file mode 100644
index 0000000..d402bad
--- /dev/null
+++ b/ebay_client/generated/inventory/api/offer/get_listing_fees.py
@@ -0,0 +1,232 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.fees_summary_response import FeesSummaryResponse
+from ...models.offer_keys_with_id import OfferKeysWithId
+from typing import cast
+
+
+
+def _get_kwargs(
+ *,
+ body: OfferKeysWithId,
+ content_type: str,
+
+) -> dict[str, Any]:
+ headers: dict[str, Any] = {}
+ headers["Content-Type"] = content_type
+
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "post",
+ "url": "/offer/get_listing_fees",
+ }
+
+ _kwargs["json"] = body.to_dict()
+
+
+ headers["Content-Type"] = "application/json"
+
+ _kwargs["headers"] = headers
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, FeesSummaryResponse]]:
+ if response.status_code == 200:
+ response_200 = FeesSummaryResponse.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 404:
+ response_404 = cast(Any, None)
+ return response_404
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, FeesSummaryResponse]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ *,
+ client: AuthenticatedClient,
+ body: OfferKeysWithId,
+ content_type: str,
+
+) -> Response[Union[Any, FeesSummaryResponse]]:
+ """ This call is used to retrieve the expected listing fees for up to 250 unpublished offers. An array
+ of one or more offerId values are passed in under the offers
+ container.
In the response payload, all listing fees are grouped by eBay marketplace, and
+ listing fees per offer are not shown. A fees container will be returned for each
+ eBay marketplace where the seller is selling the products associated with the specified offers.
+
Errors will occur if the seller passes in offerIds that represent published
+ offers, so this call should be made before the seller publishes offers with the
+ publishOffer.
+
+ Args:
+ content_type (str):
+ body (OfferKeysWithId): This type is used by the base request payload of the
+ getListingFees call.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, FeesSummaryResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ body=body,
+content_type=content_type,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ *,
+ client: AuthenticatedClient,
+ body: OfferKeysWithId,
+ content_type: str,
+
+) -> Optional[Union[Any, FeesSummaryResponse]]:
+ """ This call is used to retrieve the expected listing fees for up to 250 unpublished offers. An array
+ of one or more offerId values are passed in under the offers
+ container.
In the response payload, all listing fees are grouped by eBay marketplace, and
+ listing fees per offer are not shown. A fees container will be returned for each
+ eBay marketplace where the seller is selling the products associated with the specified offers.
+
Errors will occur if the seller passes in offerIds that represent published
+ offers, so this call should be made before the seller publishes offers with the
+ publishOffer.
+
+ Args:
+ content_type (str):
+ body (OfferKeysWithId): This type is used by the base request payload of the
+ getListingFees call.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, FeesSummaryResponse]
+ """
+
+
+ return sync_detailed(
+ client=client,
+body=body,
+content_type=content_type,
+
+ ).parsed
+
+async def asyncio_detailed(
+ *,
+ client: AuthenticatedClient,
+ body: OfferKeysWithId,
+ content_type: str,
+
+) -> Response[Union[Any, FeesSummaryResponse]]:
+ """ This call is used to retrieve the expected listing fees for up to 250 unpublished offers. An array
+ of one or more offerId values are passed in under the offers
+ container.
In the response payload, all listing fees are grouped by eBay marketplace, and
+ listing fees per offer are not shown. A fees container will be returned for each
+ eBay marketplace where the seller is selling the products associated with the specified offers.
+
Errors will occur if the seller passes in offerIds that represent published
+ offers, so this call should be made before the seller publishes offers with the
+ publishOffer.
+
+ Args:
+ content_type (str):
+ body (OfferKeysWithId): This type is used by the base request payload of the
+ getListingFees call.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, FeesSummaryResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ body=body,
+content_type=content_type,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ *,
+ client: AuthenticatedClient,
+ body: OfferKeysWithId,
+ content_type: str,
+
+) -> Optional[Union[Any, FeesSummaryResponse]]:
+ """ This call is used to retrieve the expected listing fees for up to 250 unpublished offers. An array
+ of one or more offerId values are passed in under the offers
+ container.
In the response payload, all listing fees are grouped by eBay marketplace, and
+ listing fees per offer are not shown. A fees container will be returned for each
+ eBay marketplace where the seller is selling the products associated with the specified offers.
+
Errors will occur if the seller passes in offerIds that represent published
+ offers, so this call should be made before the seller publishes offers with the
+ publishOffer.
+
+ Args:
+ content_type (str):
+ body (OfferKeysWithId): This type is used by the base request payload of the
+ getListingFees call.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, FeesSummaryResponse]
+ """
+
+
+ return (await asyncio_detailed(
+ client=client,
+body=body,
+content_type=content_type,
+
+ )).parsed
diff --git a/ebay_client/generated/inventory/api/offer/get_offer.py b/ebay_client/generated/inventory/api/offer/get_offer.py
new file mode 100644
index 0000000..894bd6d
--- /dev/null
+++ b/ebay_client/generated/inventory/api/offer/get_offer.py
@@ -0,0 +1,189 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.ebay_offer_details_with_all import EbayOfferDetailsWithAll
+from typing import cast
+
+
+
+def _get_kwargs(
+ offer_id: str,
+
+) -> dict[str, Any]:
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/offer/{offer_id}".format(offer_id=offer_id,),
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, EbayOfferDetailsWithAll]]:
+ if response.status_code == 200:
+ response_200 = EbayOfferDetailsWithAll.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 404:
+ response_404 = cast(Any, None)
+ return response_404
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, EbayOfferDetailsWithAll]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ offer_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, EbayOfferDetailsWithAll]]:
+ """ This call retrieves a specific published or unpublished offer. The unique identifier of the offer
+ (offerId) is passed in at the end of the call URI.The authorization
+ header is the only required HTTP header for this call. See the HTTP request headers
+ section for more information.
+
+ Args:
+ offer_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, EbayOfferDetailsWithAll]]
+ """
+
+
+ kwargs = _get_kwargs(
+ offer_id=offer_id,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ offer_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, EbayOfferDetailsWithAll]]:
+ """ This call retrieves a specific published or unpublished offer. The unique identifier of the offer
+ (offerId) is passed in at the end of the call URI.The authorization
+ header is the only required HTTP header for this call. See the HTTP request headers
+ section for more information.
+
+ Args:
+ offer_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, EbayOfferDetailsWithAll]
+ """
+
+
+ return sync_detailed(
+ offer_id=offer_id,
+client=client,
+
+ ).parsed
+
+async def asyncio_detailed(
+ offer_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, EbayOfferDetailsWithAll]]:
+ """ This call retrieves a specific published or unpublished offer. The unique identifier of the offer
+ (offerId) is passed in at the end of the call URI.The authorization
+ header is the only required HTTP header for this call. See the HTTP request headers
+ section for more information.
+
+ Args:
+ offer_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, EbayOfferDetailsWithAll]]
+ """
+
+
+ kwargs = _get_kwargs(
+ offer_id=offer_id,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ offer_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, EbayOfferDetailsWithAll]]:
+ """ This call retrieves a specific published or unpublished offer. The unique identifier of the offer
+ (offerId) is passed in at the end of the call URI.The authorization
+ header is the only required HTTP header for this call. See the HTTP request headers
+ section for more information.
+
+ Args:
+ offer_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, EbayOfferDetailsWithAll]
+ """
+
+
+ return (await asyncio_detailed(
+ offer_id=offer_id,
+client=client,
+
+ )).parsed
diff --git a/ebay_client/generated/inventory/api/offer/get_offers.py b/ebay_client/generated/inventory/api/offer/get_offers.py
new file mode 100644
index 0000000..2d691f3
--- /dev/null
+++ b/ebay_client/generated/inventory/api/offer/get_offers.py
@@ -0,0 +1,283 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.offers import Offers
+from ...types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+
+
+def _get_kwargs(
+ *,
+ format_: Union[Unset, str] = UNSET,
+ limit: Union[Unset, str] = UNSET,
+ marketplace_id: Union[Unset, str] = UNSET,
+ offset: Union[Unset, str] = UNSET,
+ sku: Union[Unset, str] = UNSET,
+
+) -> dict[str, Any]:
+
+
+
+
+ params: dict[str, Any] = {}
+
+ params["format"] = format_
+
+ params["limit"] = limit
+
+ params["marketplace_id"] = marketplace_id
+
+ params["offset"] = offset
+
+ params["sku"] = sku
+
+
+ params = {k: v for k, v in params.items() if v is not UNSET and v is not None}
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/offer",
+ "params": params,
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, Offers]]:
+ if response.status_code == 200:
+ response_200 = Offers.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 404:
+ response_404 = cast(Any, None)
+ return response_404
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, Offers]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ *,
+ client: AuthenticatedClient,
+ format_: Union[Unset, str] = UNSET,
+ limit: Union[Unset, str] = UNSET,
+ marketplace_id: Union[Unset, str] = UNSET,
+ offset: Union[Unset, str] = UNSET,
+ sku: Union[Unset, str] = UNSET,
+
+) -> Response[Union[Any, Offers]]:
+ r""" This call retrieves all existing offers for the specified SKU value. The seller has the option of
+ limiting the offers that are retrieved to a specific eBay marketplace, or to a listing
+ format.
Note: At this time, the same SKU value can
+ not be offered across multiple eBay marketplaces, so the marketplace_id query
+ parameter currently does not have any practical use for this call.
Note: The same SKU can be offered through an auction and a
+ fixed-price listing concurrently. If this is the case, getOffers will return two offers.
+ Otherwise, only one offer will be returned.
The authorization header is the
+ only required HTTP header for this call. See the HTTP request headers section for
+ more information.
+
+ Args:
+ format_ (Union[Unset, str]):
+ limit (Union[Unset, str]):
+ marketplace_id (Union[Unset, str]):
+ offset (Union[Unset, str]):
+ sku (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, Offers]]
+ """
+
+
+ kwargs = _get_kwargs(
+ format_=format_,
+limit=limit,
+marketplace_id=marketplace_id,
+offset=offset,
+sku=sku,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ *,
+ client: AuthenticatedClient,
+ format_: Union[Unset, str] = UNSET,
+ limit: Union[Unset, str] = UNSET,
+ marketplace_id: Union[Unset, str] = UNSET,
+ offset: Union[Unset, str] = UNSET,
+ sku: Union[Unset, str] = UNSET,
+
+) -> Optional[Union[Any, Offers]]:
+ r""" This call retrieves all existing offers for the specified SKU value. The seller has the option of
+ limiting the offers that are retrieved to a specific eBay marketplace, or to a listing
+ format.
Note: At this time, the same SKU value can
+ not be offered across multiple eBay marketplaces, so the marketplace_id query
+ parameter currently does not have any practical use for this call.
Note: The same SKU can be offered through an auction and a
+ fixed-price listing concurrently. If this is the case, getOffers will return two offers.
+ Otherwise, only one offer will be returned.
The authorization header is the
+ only required HTTP header for this call. See the HTTP request headers section for
+ more information.
+
+ Args:
+ format_ (Union[Unset, str]):
+ limit (Union[Unset, str]):
+ marketplace_id (Union[Unset, str]):
+ offset (Union[Unset, str]):
+ sku (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, Offers]
+ """
+
+
+ return sync_detailed(
+ client=client,
+format_=format_,
+limit=limit,
+marketplace_id=marketplace_id,
+offset=offset,
+sku=sku,
+
+ ).parsed
+
+async def asyncio_detailed(
+ *,
+ client: AuthenticatedClient,
+ format_: Union[Unset, str] = UNSET,
+ limit: Union[Unset, str] = UNSET,
+ marketplace_id: Union[Unset, str] = UNSET,
+ offset: Union[Unset, str] = UNSET,
+ sku: Union[Unset, str] = UNSET,
+
+) -> Response[Union[Any, Offers]]:
+ r""" This call retrieves all existing offers for the specified SKU value. The seller has the option of
+ limiting the offers that are retrieved to a specific eBay marketplace, or to a listing
+ format.
Note: At this time, the same SKU value can
+ not be offered across multiple eBay marketplaces, so the marketplace_id query
+ parameter currently does not have any practical use for this call.
Note: The same SKU can be offered through an auction and a
+ fixed-price listing concurrently. If this is the case, getOffers will return two offers.
+ Otherwise, only one offer will be returned.
The authorization header is the
+ only required HTTP header for this call. See the HTTP request headers section for
+ more information.
+
+ Args:
+ format_ (Union[Unset, str]):
+ limit (Union[Unset, str]):
+ marketplace_id (Union[Unset, str]):
+ offset (Union[Unset, str]):
+ sku (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, Offers]]
+ """
+
+
+ kwargs = _get_kwargs(
+ format_=format_,
+limit=limit,
+marketplace_id=marketplace_id,
+offset=offset,
+sku=sku,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ *,
+ client: AuthenticatedClient,
+ format_: Union[Unset, str] = UNSET,
+ limit: Union[Unset, str] = UNSET,
+ marketplace_id: Union[Unset, str] = UNSET,
+ offset: Union[Unset, str] = UNSET,
+ sku: Union[Unset, str] = UNSET,
+
+) -> Optional[Union[Any, Offers]]:
+ r""" This call retrieves all existing offers for the specified SKU value. The seller has the option of
+ limiting the offers that are retrieved to a specific eBay marketplace, or to a listing
+ format.
Note: At this time, the same SKU value can
+ not be offered across multiple eBay marketplaces, so the marketplace_id query
+ parameter currently does not have any practical use for this call.
Note: The same SKU can be offered through an auction and a
+ fixed-price listing concurrently. If this is the case, getOffers will return two offers.
+ Otherwise, only one offer will be returned.
The authorization header is the
+ only required HTTP header for this call. See the HTTP request headers section for
+ more information.
+
+ Args:
+ format_ (Union[Unset, str]):
+ limit (Union[Unset, str]):
+ marketplace_id (Union[Unset, str]):
+ offset (Union[Unset, str]):
+ sku (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, Offers]
+ """
+
+
+ return (await asyncio_detailed(
+ client=client,
+format_=format_,
+limit=limit,
+marketplace_id=marketplace_id,
+offset=offset,
+sku=sku,
+
+ )).parsed
diff --git a/ebay_client/generated/inventory/api/offer/publish_offer.py b/ebay_client/generated/inventory/api/offer/publish_offer.py
new file mode 100644
index 0000000..fb89114
--- /dev/null
+++ b/ebay_client/generated/inventory/api/offer/publish_offer.py
@@ -0,0 +1,245 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.publish_response import PublishResponse
+from typing import cast
+
+
+
+def _get_kwargs(
+ offer_id: str,
+
+) -> dict[str, Any]:
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "post",
+ "url": "/offer/{offer_id}/publish".format(offer_id=offer_id,),
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, PublishResponse]]:
+ if response.status_code == 200:
+ response_200 = PublishResponse.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 404:
+ response_404 = cast(Any, None)
+ return response_404
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, PublishResponse]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ offer_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, PublishResponse]]:
+ r""" Note: Each listing can be revised up to 250 times in one
+ calendar day. If this revision threshold is reached, the seller will be blocked from revising the
+ item until the next calendar day.
This call is used to convert an unpublished offer into a
+ published offer, or live eBay listing. The unique identifier of the offer (offerId)
+ is passed in at the end of the call URI.
Important!Publish offer note: Fields may be
+ optional or conditionally required when calling the create or update methods, but become required
+ when publishing the offer to create active listings. For this method, see Offer fields for a
+ list of fields required to publish an offer.
For those who prefer to publish
+ multiple offers (up to 25 at a time) with one call, the bulkPublishOffer method can
+ be used. In the case of a multiple-variation listing, the
+ publishOfferByInventoryItemGroup call should be used instead, as this call will
+ convert all unpublished offers associated with an inventory item group into a multiple-variation
+ listing.
+
+ Args:
+ offer_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, PublishResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ offer_id=offer_id,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ offer_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, PublishResponse]]:
+ r""" Note: Each listing can be revised up to 250 times in one
+ calendar day. If this revision threshold is reached, the seller will be blocked from revising the
+ item until the next calendar day.
This call is used to convert an unpublished offer into a
+ published offer, or live eBay listing. The unique identifier of the offer (offerId)
+ is passed in at the end of the call URI.
Important!Publish offer note: Fields may be
+ optional or conditionally required when calling the create or update methods, but become required
+ when publishing the offer to create active listings. For this method, see Offer fields for a
+ list of fields required to publish an offer.
For those who prefer to publish
+ multiple offers (up to 25 at a time) with one call, the bulkPublishOffer method can
+ be used. In the case of a multiple-variation listing, the
+ publishOfferByInventoryItemGroup call should be used instead, as this call will
+ convert all unpublished offers associated with an inventory item group into a multiple-variation
+ listing.
+
+ Args:
+ offer_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, PublishResponse]
+ """
+
+
+ return sync_detailed(
+ offer_id=offer_id,
+client=client,
+
+ ).parsed
+
+async def asyncio_detailed(
+ offer_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, PublishResponse]]:
+ r""" Note: Each listing can be revised up to 250 times in one
+ calendar day. If this revision threshold is reached, the seller will be blocked from revising the
+ item until the next calendar day.
This call is used to convert an unpublished offer into a
+ published offer, or live eBay listing. The unique identifier of the offer (offerId)
+ is passed in at the end of the call URI.
Important!Publish offer note: Fields may be
+ optional or conditionally required when calling the create or update methods, but become required
+ when publishing the offer to create active listings. For this method, see Offer fields for a
+ list of fields required to publish an offer.
For those who prefer to publish
+ multiple offers (up to 25 at a time) with one call, the bulkPublishOffer method can
+ be used. In the case of a multiple-variation listing, the
+ publishOfferByInventoryItemGroup call should be used instead, as this call will
+ convert all unpublished offers associated with an inventory item group into a multiple-variation
+ listing.
+
+ Args:
+ offer_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, PublishResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ offer_id=offer_id,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ offer_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, PublishResponse]]:
+ r""" Note: Each listing can be revised up to 250 times in one
+ calendar day. If this revision threshold is reached, the seller will be blocked from revising the
+ item until the next calendar day.
This call is used to convert an unpublished offer into a
+ published offer, or live eBay listing. The unique identifier of the offer (offerId)
+ is passed in at the end of the call URI.
Important!Publish offer note: Fields may be
+ optional or conditionally required when calling the create or update methods, but become required
+ when publishing the offer to create active listings. For this method, see Offer fields for a
+ list of fields required to publish an offer.
For those who prefer to publish
+ multiple offers (up to 25 at a time) with one call, the bulkPublishOffer method can
+ be used. In the case of a multiple-variation listing, the
+ publishOfferByInventoryItemGroup call should be used instead, as this call will
+ convert all unpublished offers associated with an inventory item group into a multiple-variation
+ listing.
+
+ Args:
+ offer_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, PublishResponse]
+ """
+
+
+ return (await asyncio_detailed(
+ offer_id=offer_id,
+client=client,
+
+ )).parsed
diff --git a/ebay_client/generated/inventory/api/offer/publish_offer_by_inventory_item_group.py b/ebay_client/generated/inventory/api/offer/publish_offer_by_inventory_item_group.py
new file mode 100644
index 0000000..018d69e
--- /dev/null
+++ b/ebay_client/generated/inventory/api/offer/publish_offer_by_inventory_item_group.py
@@ -0,0 +1,305 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.publish_by_inventory_item_group_request import PublishByInventoryItemGroupRequest
+from ...models.publish_response import PublishResponse
+from typing import cast
+
+
+
+def _get_kwargs(
+ *,
+ body: PublishByInventoryItemGroupRequest,
+ content_type: str,
+
+) -> dict[str, Any]:
+ headers: dict[str, Any] = {}
+ headers["Content-Type"] = content_type
+
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "post",
+ "url": "/offer/publish_by_inventory_item_group",
+ }
+
+ _kwargs["json"] = body.to_dict()
+
+
+ headers["Content-Type"] = "application/json"
+
+ _kwargs["headers"] = headers
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, PublishResponse]]:
+ if response.status_code == 200:
+ response_200 = PublishResponse.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, PublishResponse]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ *,
+ client: AuthenticatedClient,
+ body: PublishByInventoryItemGroupRequest,
+ content_type: str,
+
+) -> Response[Union[Any, PublishResponse]]:
+ r""" Note: Please note that any eBay listing created using the
+ Inventory API cannot be revised or relisted using the Trading API calls.
Note: Each listing can be revised up to 250 times in one
+ calendar day. If this revision threshold is reached, the seller will be blocked from revising the
+ item until the next calendar day.
This call is used to convert all unpublished offers
+ associated with an inventory item group into an active, multiple-variation listing.
Important!Publish offer note: Fields may be
+ optional or conditionally required when calling the create or update methods, but become required
+ when publishing the offer to create active listings. For this method, see Offer fields for a
+ list of fields required to publish an offer.
The unique identifier of the
+ inventory item group (inventoryItemGroupKey) is passed in the request payload. All
+ inventory items and their corresponding offers in the inventory item group must be valid (meet all
+ requirements) for the publishOfferByInventoryItemGroup call to be completely
+ successful. For any inventory items in the group that are missing required data or have no
+ corresponding offers, the publishOfferByInventoryItemGroup will create a new
+ multiple-variation listing, but any inventory items with missing required data/offers will not be in
+ the newly-created listing. If any inventory items in the group to be published have invalid data, or
+ one or more of the inventory items have conflicting data with one another, the
+ publishOfferByInventoryItemGroup call will fail. Be sure to check for any error or
+ warning messages in the call response for any applicable information about one or more inventory
+ items/offers having issues.
+
+ Args:
+ content_type (str):
+ body (PublishByInventoryItemGroupRequest): This type is used by the request payload of the
+ publishByInventoryItemGroup call. The identifier of the inventory item
+ group to publish and the eBay marketplace where the listing will be published is needed in
+ the request payload.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, PublishResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ body=body,
+content_type=content_type,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ *,
+ client: AuthenticatedClient,
+ body: PublishByInventoryItemGroupRequest,
+ content_type: str,
+
+) -> Optional[Union[Any, PublishResponse]]:
+ r""" Note: Please note that any eBay listing created using the
+ Inventory API cannot be revised or relisted using the Trading API calls.
Note: Each listing can be revised up to 250 times in one
+ calendar day. If this revision threshold is reached, the seller will be blocked from revising the
+ item until the next calendar day.
This call is used to convert all unpublished offers
+ associated with an inventory item group into an active, multiple-variation listing.
Important!Publish offer note: Fields may be
+ optional or conditionally required when calling the create or update methods, but become required
+ when publishing the offer to create active listings. For this method, see Offer fields for a
+ list of fields required to publish an offer.
The unique identifier of the
+ inventory item group (inventoryItemGroupKey) is passed in the request payload. All
+ inventory items and their corresponding offers in the inventory item group must be valid (meet all
+ requirements) for the publishOfferByInventoryItemGroup call to be completely
+ successful. For any inventory items in the group that are missing required data or have no
+ corresponding offers, the publishOfferByInventoryItemGroup will create a new
+ multiple-variation listing, but any inventory items with missing required data/offers will not be in
+ the newly-created listing. If any inventory items in the group to be published have invalid data, or
+ one or more of the inventory items have conflicting data with one another, the
+ publishOfferByInventoryItemGroup call will fail. Be sure to check for any error or
+ warning messages in the call response for any applicable information about one or more inventory
+ items/offers having issues.
+
+ Args:
+ content_type (str):
+ body (PublishByInventoryItemGroupRequest): This type is used by the request payload of the
+ publishByInventoryItemGroup call. The identifier of the inventory item
+ group to publish and the eBay marketplace where the listing will be published is needed in
+ the request payload.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, PublishResponse]
+ """
+
+
+ return sync_detailed(
+ client=client,
+body=body,
+content_type=content_type,
+
+ ).parsed
+
+async def asyncio_detailed(
+ *,
+ client: AuthenticatedClient,
+ body: PublishByInventoryItemGroupRequest,
+ content_type: str,
+
+) -> Response[Union[Any, PublishResponse]]:
+ r""" Note: Please note that any eBay listing created using the
+ Inventory API cannot be revised or relisted using the Trading API calls.
Note: Each listing can be revised up to 250 times in one
+ calendar day. If this revision threshold is reached, the seller will be blocked from revising the
+ item until the next calendar day.
This call is used to convert all unpublished offers
+ associated with an inventory item group into an active, multiple-variation listing.
Important!Publish offer note: Fields may be
+ optional or conditionally required when calling the create or update methods, but become required
+ when publishing the offer to create active listings. For this method, see Offer fields for a
+ list of fields required to publish an offer.
The unique identifier of the
+ inventory item group (inventoryItemGroupKey) is passed in the request payload. All
+ inventory items and their corresponding offers in the inventory item group must be valid (meet all
+ requirements) for the publishOfferByInventoryItemGroup call to be completely
+ successful. For any inventory items in the group that are missing required data or have no
+ corresponding offers, the publishOfferByInventoryItemGroup will create a new
+ multiple-variation listing, but any inventory items with missing required data/offers will not be in
+ the newly-created listing. If any inventory items in the group to be published have invalid data, or
+ one or more of the inventory items have conflicting data with one another, the
+ publishOfferByInventoryItemGroup call will fail. Be sure to check for any error or
+ warning messages in the call response for any applicable information about one or more inventory
+ items/offers having issues.
+
+ Args:
+ content_type (str):
+ body (PublishByInventoryItemGroupRequest): This type is used by the request payload of the
+ publishByInventoryItemGroup call. The identifier of the inventory item
+ group to publish and the eBay marketplace where the listing will be published is needed in
+ the request payload.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, PublishResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ body=body,
+content_type=content_type,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ *,
+ client: AuthenticatedClient,
+ body: PublishByInventoryItemGroupRequest,
+ content_type: str,
+
+) -> Optional[Union[Any, PublishResponse]]:
+ r""" Note: Please note that any eBay listing created using the
+ Inventory API cannot be revised or relisted using the Trading API calls.
Note: Each listing can be revised up to 250 times in one
+ calendar day. If this revision threshold is reached, the seller will be blocked from revising the
+ item until the next calendar day.
This call is used to convert all unpublished offers
+ associated with an inventory item group into an active, multiple-variation listing.
Important!Publish offer note: Fields may be
+ optional or conditionally required when calling the create or update methods, but become required
+ when publishing the offer to create active listings. For this method, see Offer fields for a
+ list of fields required to publish an offer.
The unique identifier of the
+ inventory item group (inventoryItemGroupKey) is passed in the request payload. All
+ inventory items and their corresponding offers in the inventory item group must be valid (meet all
+ requirements) for the publishOfferByInventoryItemGroup call to be completely
+ successful. For any inventory items in the group that are missing required data or have no
+ corresponding offers, the publishOfferByInventoryItemGroup will create a new
+ multiple-variation listing, but any inventory items with missing required data/offers will not be in
+ the newly-created listing. If any inventory items in the group to be published have invalid data, or
+ one or more of the inventory items have conflicting data with one another, the
+ publishOfferByInventoryItemGroup call will fail. Be sure to check for any error or
+ warning messages in the call response for any applicable information about one or more inventory
+ items/offers having issues.
+
+ Args:
+ content_type (str):
+ body (PublishByInventoryItemGroupRequest): This type is used by the request payload of the
+ publishByInventoryItemGroup call. The identifier of the inventory item
+ group to publish and the eBay marketplace where the listing will be published is needed in
+ the request payload.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, PublishResponse]
+ """
+
+
+ return (await asyncio_detailed(
+ client=client,
+body=body,
+content_type=content_type,
+
+ )).parsed
diff --git a/ebay_client/generated/inventory/api/offer/update_offer.py b/ebay_client/generated/inventory/api/offer/update_offer.py
new file mode 100644
index 0000000..d3bc424
--- /dev/null
+++ b/ebay_client/generated/inventory/api/offer/update_offer.py
@@ -0,0 +1,375 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.ebay_offer_details_with_id import EbayOfferDetailsWithId
+from ...models.offer_response import OfferResponse
+from typing import cast
+
+
+
+def _get_kwargs(
+ offer_id: str,
+ *,
+ body: EbayOfferDetailsWithId,
+ content_language: str,
+ content_type: str,
+
+) -> dict[str, Any]:
+ headers: dict[str, Any] = {}
+ headers["Content-Language"] = content_language
+
+ headers["Content-Type"] = content_type
+
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "put",
+ "url": "/offer/{offer_id}".format(offer_id=offer_id,),
+ }
+
+ _kwargs["json"] = body.to_dict()
+
+
+ headers["Content-Type"] = "application/json"
+
+ _kwargs["headers"] = headers
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, OfferResponse]]:
+ if response.status_code == 200:
+ response_200 = OfferResponse.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 204:
+ response_204 = cast(Any, None)
+ return response_204
+ if response.status_code == 404:
+ response_404 = cast(Any, None)
+ return response_404
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, OfferResponse]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ offer_id: str,
+ *,
+ client: AuthenticatedClient,
+ body: EbayOfferDetailsWithId,
+ content_language: str,
+ content_type: str,
+
+) -> Response[Union[Any, OfferResponse]]:
+ r""" This call updates an existing offer. An existing offer may be in published state (active eBay
+ listing), or in an unpublished state and yet to be published with the publishOffer
+ call. The unique identifier (offerId) for the offer to update is passed in at the
+ end of the call URI.
The updateOffer call does a complete replacement of
+ the existing offer object, so all fields that make up the current offer object are required,
+ regardless of whether their values changed.
Important!Publish offer note: Fields may be
+ optional or conditionally required when calling this method, but become required when publishing the
+ offer to create an active listing. For this method, see Offer fields for a
+ list of fields required to publish an offer.
Other information that is required
+ before an unpublished offer can be published or before a published offer can be revised include:
+ - Inventory location
- Offer price
- Available quantity
- eBay listing
+ category
- Referenced listing policy profiles to set payment, return, and fulfillment
+ values/settings
Note: Though the
+ includeCatalogProductDetails parameter is not required to be submitted in the
+ request, the parameter defaults to true if omitted from both the
+ updateOffer and the createOffer calls. If a value is specified in
+ the updateOffer call, this value will be used.
Note: In addition to the authorization header, which is
+ required for all Inventory API calls, this call also requires the Content-Type and
+ Content-Language headers. See the HTTP request
+ headers for more information.
Note: Each
+ listing can be revised up to 250 times in one calendar day. If this revision threshold is reached,
+ the seller will be blocked from revising the item until the next calendar day.
For
+ published offers, the listingDescription field is also required to update the
+ offer/eBay listing. For unpublished offers, this field is not necessarily required unless it is
+ already set for the unpublished offer.
+
+ Args:
+ offer_id (str):
+ content_language (str):
+ content_type (str):
+ body (EbayOfferDetailsWithId): updateOffer call. Every field that is
+ currently set with the unpublished/published offer must also be passed into the
+ updateOffer call, even those fields whose values are not changing. Note
+ that for published offers, a successful updateOffer call will actually
+ update the active eBay listing with whatever changes were made.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, OfferResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ offer_id=offer_id,
+body=body,
+content_language=content_language,
+content_type=content_type,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ offer_id: str,
+ *,
+ client: AuthenticatedClient,
+ body: EbayOfferDetailsWithId,
+ content_language: str,
+ content_type: str,
+
+) -> Optional[Union[Any, OfferResponse]]:
+ r""" This call updates an existing offer. An existing offer may be in published state (active eBay
+ listing), or in an unpublished state and yet to be published with the publishOffer
+ call. The unique identifier (offerId) for the offer to update is passed in at the
+ end of the call URI.
The updateOffer call does a complete replacement of
+ the existing offer object, so all fields that make up the current offer object are required,
+ regardless of whether their values changed.
Important!Publish offer note: Fields may be
+ optional or conditionally required when calling this method, but become required when publishing the
+ offer to create an active listing. For this method, see Offer fields for a
+ list of fields required to publish an offer.
Other information that is required
+ before an unpublished offer can be published or before a published offer can be revised include:
+ - Inventory location
- Offer price
- Available quantity
- eBay listing
+ category
- Referenced listing policy profiles to set payment, return, and fulfillment
+ values/settings
Note: Though the
+ includeCatalogProductDetails parameter is not required to be submitted in the
+ request, the parameter defaults to true if omitted from both the
+ updateOffer and the createOffer calls. If a value is specified in
+ the updateOffer call, this value will be used.
Note: In addition to the authorization header, which is
+ required for all Inventory API calls, this call also requires the Content-Type and
+ Content-Language headers. See the HTTP request
+ headers for more information.
Note: Each
+ listing can be revised up to 250 times in one calendar day. If this revision threshold is reached,
+ the seller will be blocked from revising the item until the next calendar day.
For
+ published offers, the listingDescription field is also required to update the
+ offer/eBay listing. For unpublished offers, this field is not necessarily required unless it is
+ already set for the unpublished offer.
+
+ Args:
+ offer_id (str):
+ content_language (str):
+ content_type (str):
+ body (EbayOfferDetailsWithId): updateOffer call. Every field that is
+ currently set with the unpublished/published offer must also be passed into the
+ updateOffer call, even those fields whose values are not changing. Note
+ that for published offers, a successful updateOffer call will actually
+ update the active eBay listing with whatever changes were made.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, OfferResponse]
+ """
+
+
+ return sync_detailed(
+ offer_id=offer_id,
+client=client,
+body=body,
+content_language=content_language,
+content_type=content_type,
+
+ ).parsed
+
+async def asyncio_detailed(
+ offer_id: str,
+ *,
+ client: AuthenticatedClient,
+ body: EbayOfferDetailsWithId,
+ content_language: str,
+ content_type: str,
+
+) -> Response[Union[Any, OfferResponse]]:
+ r""" This call updates an existing offer. An existing offer may be in published state (active eBay
+ listing), or in an unpublished state and yet to be published with the publishOffer
+ call. The unique identifier (offerId) for the offer to update is passed in at the
+ end of the call URI.
The updateOffer call does a complete replacement of
+ the existing offer object, so all fields that make up the current offer object are required,
+ regardless of whether their values changed.
Important!Publish offer note: Fields may be
+ optional or conditionally required when calling this method, but become required when publishing the
+ offer to create an active listing. For this method, see Offer fields for a
+ list of fields required to publish an offer.
Other information that is required
+ before an unpublished offer can be published or before a published offer can be revised include:
+ - Inventory location
- Offer price
- Available quantity
- eBay listing
+ category
- Referenced listing policy profiles to set payment, return, and fulfillment
+ values/settings
Note: Though the
+ includeCatalogProductDetails parameter is not required to be submitted in the
+ request, the parameter defaults to true if omitted from both the
+ updateOffer and the createOffer calls. If a value is specified in
+ the updateOffer call, this value will be used.
Note: In addition to the authorization header, which is
+ required for all Inventory API calls, this call also requires the Content-Type and
+ Content-Language headers. See the HTTP request
+ headers for more information.
Note: Each
+ listing can be revised up to 250 times in one calendar day. If this revision threshold is reached,
+ the seller will be blocked from revising the item until the next calendar day.
For
+ published offers, the listingDescription field is also required to update the
+ offer/eBay listing. For unpublished offers, this field is not necessarily required unless it is
+ already set for the unpublished offer.
+
+ Args:
+ offer_id (str):
+ content_language (str):
+ content_type (str):
+ body (EbayOfferDetailsWithId): updateOffer call. Every field that is
+ currently set with the unpublished/published offer must also be passed into the
+ updateOffer call, even those fields whose values are not changing. Note
+ that for published offers, a successful updateOffer call will actually
+ update the active eBay listing with whatever changes were made.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, OfferResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ offer_id=offer_id,
+body=body,
+content_language=content_language,
+content_type=content_type,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ offer_id: str,
+ *,
+ client: AuthenticatedClient,
+ body: EbayOfferDetailsWithId,
+ content_language: str,
+ content_type: str,
+
+) -> Optional[Union[Any, OfferResponse]]:
+ r""" This call updates an existing offer. An existing offer may be in published state (active eBay
+ listing), or in an unpublished state and yet to be published with the publishOffer
+ call. The unique identifier (offerId) for the offer to update is passed in at the
+ end of the call URI.
The updateOffer call does a complete replacement of
+ the existing offer object, so all fields that make up the current offer object are required,
+ regardless of whether their values changed.
Important!Publish offer note: Fields may be
+ optional or conditionally required when calling this method, but become required when publishing the
+ offer to create an active listing. For this method, see Offer fields for a
+ list of fields required to publish an offer.
Other information that is required
+ before an unpublished offer can be published or before a published offer can be revised include:
+ - Inventory location
- Offer price
- Available quantity
- eBay listing
+ category
- Referenced listing policy profiles to set payment, return, and fulfillment
+ values/settings
Note: Though the
+ includeCatalogProductDetails parameter is not required to be submitted in the
+ request, the parameter defaults to true if omitted from both the
+ updateOffer and the createOffer calls. If a value is specified in
+ the updateOffer call, this value will be used.
Note: In addition to the authorization header, which is
+ required for all Inventory API calls, this call also requires the Content-Type and
+ Content-Language headers. See the HTTP request
+ headers for more information.
Note: Each
+ listing can be revised up to 250 times in one calendar day. If this revision threshold is reached,
+ the seller will be blocked from revising the item until the next calendar day.
For
+ published offers, the listingDescription field is also required to update the
+ offer/eBay listing. For unpublished offers, this field is not necessarily required unless it is
+ already set for the unpublished offer.
+
+ Args:
+ offer_id (str):
+ content_language (str):
+ content_type (str):
+ body (EbayOfferDetailsWithId): updateOffer call. Every field that is
+ currently set with the unpublished/published offer must also be passed into the
+ updateOffer call, even those fields whose values are not changing. Note
+ that for published offers, a successful updateOffer call will actually
+ update the active eBay listing with whatever changes were made.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, OfferResponse]
+ """
+
+
+ return (await asyncio_detailed(
+ offer_id=offer_id,
+client=client,
+body=body,
+content_language=content_language,
+content_type=content_type,
+
+ )).parsed
diff --git a/ebay_client/generated/inventory/api/offer/withdraw_offer.py b/ebay_client/generated/inventory/api/offer/withdraw_offer.py
new file mode 100644
index 0000000..27b3060
--- /dev/null
+++ b/ebay_client/generated/inventory/api/offer/withdraw_offer.py
@@ -0,0 +1,213 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.withdraw_response import WithdrawResponse
+from typing import cast
+
+
+
+def _get_kwargs(
+ offer_id: str,
+
+) -> dict[str, Any]:
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "post",
+ "url": "/offer/{offer_id}/withdraw".format(offer_id=offer_id,),
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, WithdrawResponse]]:
+ if response.status_code == 200:
+ response_200 = WithdrawResponse.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 404:
+ response_404 = cast(Any, None)
+ return response_404
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, WithdrawResponse]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ offer_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, WithdrawResponse]]:
+ """ This call is used to end a single-variation listing that is associated with the specified offer.
+ This call is used in place of the deleteOffer call if the seller only wants to end
+ the listing associated with the offer but does not want to delete the offer object. With this call,
+ the offer object remains, but it goes into the unpublished state, and will require a
+ publishOffer call to relist the offer.
To end a multiple-variation listing
+ that is associated with an inventory item group, the
+ withdrawOfferByInventoryItemGroup method can be used. This call only ends the
+ multiple-variation listing associated with an inventory item group but does not delete the inventory
+ item group object, nor does it delete any of the offers associated with the inventory item group,
+ but instead all of these offers go into the unpublished state.
+
+ Args:
+ offer_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, WithdrawResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ offer_id=offer_id,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ offer_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, WithdrawResponse]]:
+ """ This call is used to end a single-variation listing that is associated with the specified offer.
+ This call is used in place of the deleteOffer call if the seller only wants to end
+ the listing associated with the offer but does not want to delete the offer object. With this call,
+ the offer object remains, but it goes into the unpublished state, and will require a
+ publishOffer call to relist the offer.
To end a multiple-variation listing
+ that is associated with an inventory item group, the
+ withdrawOfferByInventoryItemGroup method can be used. This call only ends the
+ multiple-variation listing associated with an inventory item group but does not delete the inventory
+ item group object, nor does it delete any of the offers associated with the inventory item group,
+ but instead all of these offers go into the unpublished state.
+
+ Args:
+ offer_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, WithdrawResponse]
+ """
+
+
+ return sync_detailed(
+ offer_id=offer_id,
+client=client,
+
+ ).parsed
+
+async def asyncio_detailed(
+ offer_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, WithdrawResponse]]:
+ """ This call is used to end a single-variation listing that is associated with the specified offer.
+ This call is used in place of the deleteOffer call if the seller only wants to end
+ the listing associated with the offer but does not want to delete the offer object. With this call,
+ the offer object remains, but it goes into the unpublished state, and will require a
+ publishOffer call to relist the offer.
To end a multiple-variation listing
+ that is associated with an inventory item group, the
+ withdrawOfferByInventoryItemGroup method can be used. This call only ends the
+ multiple-variation listing associated with an inventory item group but does not delete the inventory
+ item group object, nor does it delete any of the offers associated with the inventory item group,
+ but instead all of these offers go into the unpublished state.
+
+ Args:
+ offer_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, WithdrawResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ offer_id=offer_id,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ offer_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, WithdrawResponse]]:
+ """ This call is used to end a single-variation listing that is associated with the specified offer.
+ This call is used in place of the deleteOffer call if the seller only wants to end
+ the listing associated with the offer but does not want to delete the offer object. With this call,
+ the offer object remains, but it goes into the unpublished state, and will require a
+ publishOffer call to relist the offer.
To end a multiple-variation listing
+ that is associated with an inventory item group, the
+ withdrawOfferByInventoryItemGroup method can be used. This call only ends the
+ multiple-variation listing associated with an inventory item group but does not delete the inventory
+ item group object, nor does it delete any of the offers associated with the inventory item group,
+ but instead all of these offers go into the unpublished state.
+
+ Args:
+ offer_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, WithdrawResponse]
+ """
+
+
+ return (await asyncio_detailed(
+ offer_id=offer_id,
+client=client,
+
+ )).parsed
diff --git a/ebay_client/generated/inventory/api/offer/withdraw_offer_by_inventory_item_group.py b/ebay_client/generated/inventory/api/offer/withdraw_offer_by_inventory_item_group.py
new file mode 100644
index 0000000..7e8df7f
--- /dev/null
+++ b/ebay_client/generated/inventory/api/offer/withdraw_offer_by_inventory_item_group.py
@@ -0,0 +1,148 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.withdraw_by_inventory_item_group_request import WithdrawByInventoryItemGroupRequest
+from typing import cast
+
+
+
+def _get_kwargs(
+ *,
+ body: WithdrawByInventoryItemGroupRequest,
+ content_type: str,
+
+) -> dict[str, Any]:
+ headers: dict[str, Any] = {}
+ headers["Content-Type"] = content_type
+
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "post",
+ "url": "/offer/withdraw_by_inventory_item_group",
+ }
+
+ _kwargs["json"] = body.to_dict()
+
+
+ headers["Content-Type"] = "application/json"
+
+ _kwargs["headers"] = headers
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Any]:
+ if response.status_code == 400:
+ return None
+ if response.status_code == 500:
+ return None
+ if response.status_code == 204:
+ return None
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Any]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ *,
+ client: AuthenticatedClient,
+ body: WithdrawByInventoryItemGroupRequest,
+ content_type: str,
+
+) -> Response[Any]:
+ """ This call is used to end a multiple-variation eBay listing that is associated with the specified
+ inventory item group. This call only ends multiple-variation eBay listing associated with the
+ inventory item group but does not delete the inventory item group object. Similarly, this call also
+ does not delete any of the offers associated with the inventory item group, but instead all of these
+ offers go into the unpublished state. If the seller wanted to relist the multiple-variation eBay
+ listing, they could use the publishOfferByInventoryItemGroup method.
+
+ Args:
+ content_type (str):
+ body (WithdrawByInventoryItemGroupRequest): This type is used by the base request of the
+ WithdrawByInventoryItemGroup method, which is used to end a multiple-
+ variation listing.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ body=body,
+content_type=content_type,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+
+async def asyncio_detailed(
+ *,
+ client: AuthenticatedClient,
+ body: WithdrawByInventoryItemGroupRequest,
+ content_type: str,
+
+) -> Response[Any]:
+ """ This call is used to end a multiple-variation eBay listing that is associated with the specified
+ inventory item group. This call only ends multiple-variation eBay listing associated with the
+ inventory item group but does not delete the inventory item group object. Similarly, this call also
+ does not delete any of the offers associated with the inventory item group, but instead all of these
+ offers go into the unpublished state. If the seller wanted to relist the multiple-variation eBay
+ listing, they could use the publishOfferByInventoryItemGroup method.
+
+ Args:
+ content_type (str):
+ body (WithdrawByInventoryItemGroupRequest): This type is used by the base request of the
+ WithdrawByInventoryItemGroup method, which is used to end a multiple-
+ variation listing.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ body=body,
+content_type=content_type,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
diff --git a/ebay_client/generated/inventory/api/product_compatibility/__init__.py b/ebay_client/generated/inventory/api/product_compatibility/__init__.py
new file mode 100644
index 0000000..c9921b5
--- /dev/null
+++ b/ebay_client/generated/inventory/api/product_compatibility/__init__.py
@@ -0,0 +1 @@
+""" Contains endpoint functions for accessing the API """
diff --git a/ebay_client/generated/inventory/api/product_compatibility/create_or_replace_product_compatibility.py b/ebay_client/generated/inventory/api/product_compatibility/create_or_replace_product_compatibility.py
new file mode 100644
index 0000000..a11c493
--- /dev/null
+++ b/ebay_client/generated/inventory/api/product_compatibility/create_or_replace_product_compatibility.py
@@ -0,0 +1,274 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.base_response import BaseResponse
+from ...models.compatibility import Compatibility
+from typing import cast
+
+
+
+def _get_kwargs(
+ sku: str,
+ *,
+ body: Compatibility,
+ content_language: str,
+ content_type: str,
+
+) -> dict[str, Any]:
+ headers: dict[str, Any] = {}
+ headers["Content-Language"] = content_language
+
+ headers["Content-Type"] = content_type
+
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "put",
+ "url": "/inventory_item/{sku}/product_compatibility".format(sku=sku,),
+ }
+
+ _kwargs["json"] = body.to_dict()
+
+
+ headers["Content-Type"] = "application/json"
+
+ _kwargs["headers"] = headers
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, BaseResponse]]:
+ if response.status_code == 200:
+ response_200 = BaseResponse.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 201:
+ response_201 = BaseResponse.from_dict(response.json())
+
+
+
+ return response_201
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 204:
+ response_204 = cast(Any, None)
+ return response_204
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, BaseResponse]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ sku: str,
+ *,
+ client: AuthenticatedClient,
+ body: Compatibility,
+ content_language: str,
+ content_type: str,
+
+) -> Response[Union[Any, BaseResponse]]:
+ r""" This call is used by the seller to create or replace a list of products that are compatible with the
+ inventory item. The inventory item is identified with a SKU value in the URI. Product compatibility
+ is currently only applicable to motor vehicle parts and accessory categories, but more categories
+ may be supported in the future.
Note: In addition to the
+ authorization header, which is required for all Inventory API calls, this call also
+ requires the Content-Type and Content-Language headers. See the HTTP request headers for more information.
+
+ Args:
+ sku (str):
+ content_language (str):
+ content_type (str):
+ body (Compatibility): This type is used by the
+ createOrReplaceProductCompatibility call to associate compatible vehicles
+ to an inventory item. This type is also the base response of the
+ getProductCompatibility call.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, BaseResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ sku=sku,
+body=body,
+content_language=content_language,
+content_type=content_type,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ sku: str,
+ *,
+ client: AuthenticatedClient,
+ body: Compatibility,
+ content_language: str,
+ content_type: str,
+
+) -> Optional[Union[Any, BaseResponse]]:
+ r""" This call is used by the seller to create or replace a list of products that are compatible with the
+ inventory item. The inventory item is identified with a SKU value in the URI. Product compatibility
+ is currently only applicable to motor vehicle parts and accessory categories, but more categories
+ may be supported in the future.
Note: In addition to the
+ authorization header, which is required for all Inventory API calls, this call also
+ requires the Content-Type and Content-Language headers. See the HTTP request headers for more information.
+
+ Args:
+ sku (str):
+ content_language (str):
+ content_type (str):
+ body (Compatibility): This type is used by the
+ createOrReplaceProductCompatibility call to associate compatible vehicles
+ to an inventory item. This type is also the base response of the
+ getProductCompatibility call.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, BaseResponse]
+ """
+
+
+ return sync_detailed(
+ sku=sku,
+client=client,
+body=body,
+content_language=content_language,
+content_type=content_type,
+
+ ).parsed
+
+async def asyncio_detailed(
+ sku: str,
+ *,
+ client: AuthenticatedClient,
+ body: Compatibility,
+ content_language: str,
+ content_type: str,
+
+) -> Response[Union[Any, BaseResponse]]:
+ r""" This call is used by the seller to create or replace a list of products that are compatible with the
+ inventory item. The inventory item is identified with a SKU value in the URI. Product compatibility
+ is currently only applicable to motor vehicle parts and accessory categories, but more categories
+ may be supported in the future.
Note: In addition to the
+ authorization header, which is required for all Inventory API calls, this call also
+ requires the Content-Type and Content-Language headers. See the HTTP request headers for more information.
+
+ Args:
+ sku (str):
+ content_language (str):
+ content_type (str):
+ body (Compatibility): This type is used by the
+ createOrReplaceProductCompatibility call to associate compatible vehicles
+ to an inventory item. This type is also the base response of the
+ getProductCompatibility call.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, BaseResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ sku=sku,
+body=body,
+content_language=content_language,
+content_type=content_type,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ sku: str,
+ *,
+ client: AuthenticatedClient,
+ body: Compatibility,
+ content_language: str,
+ content_type: str,
+
+) -> Optional[Union[Any, BaseResponse]]:
+ r""" This call is used by the seller to create or replace a list of products that are compatible with the
+ inventory item. The inventory item is identified with a SKU value in the URI. Product compatibility
+ is currently only applicable to motor vehicle parts and accessory categories, but more categories
+ may be supported in the future.
Note: In addition to the
+ authorization header, which is required for all Inventory API calls, this call also
+ requires the Content-Type and Content-Language headers. See the HTTP request headers for more information.
+
+ Args:
+ sku (str):
+ content_language (str):
+ content_type (str):
+ body (Compatibility): This type is used by the
+ createOrReplaceProductCompatibility call to associate compatible vehicles
+ to an inventory item. This type is also the base response of the
+ getProductCompatibility call.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, BaseResponse]
+ """
+
+
+ return (await asyncio_detailed(
+ sku=sku,
+client=client,
+body=body,
+content_language=content_language,
+content_type=content_type,
+
+ )).parsed
diff --git a/ebay_client/generated/inventory/api/product_compatibility/delete_product_compatibility.py b/ebay_client/generated/inventory/api/product_compatibility/delete_product_compatibility.py
new file mode 100644
index 0000000..1afb211
--- /dev/null
+++ b/ebay_client/generated/inventory/api/product_compatibility/delete_product_compatibility.py
@@ -0,0 +1,124 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+
+
+
+def _get_kwargs(
+ sku: str,
+
+) -> dict[str, Any]:
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "delete",
+ "url": "/inventory_item/{sku}/product_compatibility".format(sku=sku,),
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Any]:
+ if response.status_code == 400:
+ return None
+ if response.status_code == 500:
+ return None
+ if response.status_code == 204:
+ return None
+ if response.status_code == 404:
+ return None
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Any]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ sku: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Any]:
+ """ This call is used by the seller to delete the list of products that are compatible with the
+ inventory item that is associated with the compatible product list. The inventory item is identified
+ with a SKU value in the URI. Product compatibility is currently only applicable to motor vehicle
+ parts and accessory categories, but more categories may be supported in the future.
+
+ Args:
+ sku (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ sku=sku,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+
+async def asyncio_detailed(
+ sku: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Any]:
+ """ This call is used by the seller to delete the list of products that are compatible with the
+ inventory item that is associated with the compatible product list. The inventory item is identified
+ with a SKU value in the URI. Product compatibility is currently only applicable to motor vehicle
+ parts and accessory categories, but more categories may be supported in the future.
+
+ Args:
+ sku (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ sku=sku,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
diff --git a/ebay_client/generated/inventory/api/product_compatibility/get_product_compatibility.py b/ebay_client/generated/inventory/api/product_compatibility/get_product_compatibility.py
new file mode 100644
index 0000000..0642cee
--- /dev/null
+++ b/ebay_client/generated/inventory/api/product_compatibility/get_product_compatibility.py
@@ -0,0 +1,193 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.compatibility import Compatibility
+from typing import cast
+
+
+
+def _get_kwargs(
+ sku: str,
+
+) -> dict[str, Any]:
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/inventory_item/{sku}/product_compatibility".format(sku=sku,),
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, Compatibility]]:
+ if response.status_code == 200:
+ response_200 = Compatibility.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 404:
+ response_404 = cast(Any, None)
+ return response_404
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, Compatibility]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ sku: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, Compatibility]]:
+ """ This call is used by the seller to retrieve the list of products that are compatible with the
+ inventory item. The SKU value for the inventory item is passed into the call URI, and a successful
+ call with return the compatible vehicle list associated with this inventory item. Product
+ compatibility is currently only applicable to motor vehicle parts and accessory categories, but more
+ categories may be supported in the future.
+
+ Args:
+ sku (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, Compatibility]]
+ """
+
+
+ kwargs = _get_kwargs(
+ sku=sku,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ sku: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, Compatibility]]:
+ """ This call is used by the seller to retrieve the list of products that are compatible with the
+ inventory item. The SKU value for the inventory item is passed into the call URI, and a successful
+ call with return the compatible vehicle list associated with this inventory item. Product
+ compatibility is currently only applicable to motor vehicle parts and accessory categories, but more
+ categories may be supported in the future.
+
+ Args:
+ sku (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, Compatibility]
+ """
+
+
+ return sync_detailed(
+ sku=sku,
+client=client,
+
+ ).parsed
+
+async def asyncio_detailed(
+ sku: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, Compatibility]]:
+ """ This call is used by the seller to retrieve the list of products that are compatible with the
+ inventory item. The SKU value for the inventory item is passed into the call URI, and a successful
+ call with return the compatible vehicle list associated with this inventory item. Product
+ compatibility is currently only applicable to motor vehicle parts and accessory categories, but more
+ categories may be supported in the future.
+
+ Args:
+ sku (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, Compatibility]]
+ """
+
+
+ kwargs = _get_kwargs(
+ sku=sku,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ sku: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, Compatibility]]:
+ """ This call is used by the seller to retrieve the list of products that are compatible with the
+ inventory item. The SKU value for the inventory item is passed into the call URI, and a successful
+ call with return the compatible vehicle list associated with this inventory item. Product
+ compatibility is currently only applicable to motor vehicle parts and accessory categories, but more
+ categories may be supported in the future.
+
+ Args:
+ sku (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, Compatibility]
+ """
+
+
+ return (await asyncio_detailed(
+ sku=sku,
+client=client,
+
+ )).parsed
diff --git a/ebay_client/generated/inventory/client.py b/ebay_client/generated/inventory/client.py
new file mode 100644
index 0000000..998cf0b
--- /dev/null
+++ b/ebay_client/generated/inventory/client.py
@@ -0,0 +1,271 @@
+import ssl
+from typing import Any, Union, Optional
+
+from attrs import define, field, evolve
+import httpx
+
+
+
+
+
+@define
+class Client:
+ """A class for keeping track of data related to the API
+
+ The following are accepted as keyword arguments and will be used to construct httpx Clients internally:
+
+ ``base_url``: The base URL for the API, all requests are made to a relative path to this URL
+
+ ``cookies``: A dictionary of cookies to be sent with every request
+
+ ``headers``: A dictionary of headers to be sent with every request
+
+ ``timeout``: The maximum amount of a time a request can take. API functions will raise
+ httpx.TimeoutException if this is exceeded.
+
+ ``verify_ssl``: Whether or not to verify the SSL certificate of the API server. This should be True in production,
+ but can be set to False for testing purposes.
+
+ ``follow_redirects``: Whether or not to follow redirects. Default value is False.
+
+ ``httpx_args``: A dictionary of additional arguments to be passed to the ``httpx.Client`` and ``httpx.AsyncClient`` constructor.
+
+
+ Attributes:
+ raise_on_unexpected_status: Whether or not to raise an errors.UnexpectedStatus if the API returns a
+ status code that was not documented in the source OpenAPI document. Can also be provided as a keyword
+ argument to the constructor.
+ """
+ raise_on_unexpected_status: bool = field(default=False, kw_only=True)
+ _base_url: str = field(alias="base_url")
+ _cookies: dict[str, str] = field(factory=dict, kw_only=True, alias="cookies")
+ _headers: dict[str, str] = field(factory=dict, kw_only=True, alias="headers")
+ _timeout: Optional[httpx.Timeout] = field(default=None, kw_only=True, alias="timeout")
+ _verify_ssl: Union[str, bool, ssl.SSLContext] = field(default=True, kw_only=True, alias="verify_ssl")
+ _follow_redirects: bool = field(default=False, kw_only=True, alias="follow_redirects")
+ _httpx_args: dict[str, Any] = field(factory=dict, kw_only=True, alias="httpx_args")
+ _client: Optional[httpx.Client] = field(default=None, init=False)
+ _async_client: Optional[httpx.AsyncClient] = field(default=None, init=False)
+
+ def with_headers(self, headers: dict[str, str]) -> "Client":
+ """Get a new client matching this one with additional headers"""
+ if self._client is not None:
+ self._client.headers.update(headers)
+ if self._async_client is not None:
+ self._async_client.headers.update(headers)
+ return evolve(self, headers={**self._headers, **headers})
+
+ def with_cookies(self, cookies: dict[str, str]) -> "Client":
+ """Get a new client matching this one with additional cookies"""
+ if self._client is not None:
+ self._client.cookies.update(cookies)
+ if self._async_client is not None:
+ self._async_client.cookies.update(cookies)
+ return evolve(self, cookies={**self._cookies, **cookies})
+
+ def with_timeout(self, timeout: httpx.Timeout) -> "Client":
+ """Get a new client matching this one with a new timeout (in seconds)"""
+ if self._client is not None:
+ self._client.timeout = timeout
+ if self._async_client is not None:
+ self._async_client.timeout = timeout
+ return evolve(self, timeout=timeout)
+
+ def set_httpx_client(self, client: httpx.Client) -> "Client":
+ """Manually set the underlying httpx.Client
+
+ **NOTE**: This will override any other settings on the client, including cookies, headers, and timeout.
+ """
+ self._client = client
+ return self
+
+ def get_httpx_client(self) -> httpx.Client:
+ """Get the underlying httpx.Client, constructing a new one if not previously set"""
+ if self._client is None:
+ self._client = httpx.Client(
+ base_url=self._base_url,
+ cookies=self._cookies,
+ headers=self._headers,
+ timeout=self._timeout,
+ verify=self._verify_ssl,
+ follow_redirects=self._follow_redirects,
+ **self._httpx_args,
+ )
+ return self._client
+
+ def __enter__(self) -> "Client":
+ """Enter a context manager for self.client—you cannot enter twice (see httpx docs)"""
+ self.get_httpx_client().__enter__()
+ return self
+
+ def __exit__(self, *args: Any, **kwargs: Any) -> None:
+ """Exit a context manager for internal httpx.Client (see httpx docs)"""
+ self.get_httpx_client().__exit__(*args, **kwargs)
+
+ def set_async_httpx_client(self, async_client: httpx.AsyncClient) -> "Client":
+ """Manually the underlying httpx.AsyncClient
+
+ **NOTE**: This will override any other settings on the client, including cookies, headers, and timeout.
+ """
+ self._async_client = async_client
+ return self
+
+ def get_async_httpx_client(self) -> httpx.AsyncClient:
+ """Get the underlying httpx.AsyncClient, constructing a new one if not previously set"""
+ if self._async_client is None:
+ self._async_client = httpx.AsyncClient(
+ base_url=self._base_url,
+ cookies=self._cookies,
+ headers=self._headers,
+ timeout=self._timeout,
+ verify=self._verify_ssl,
+ follow_redirects=self._follow_redirects,
+ **self._httpx_args,
+ )
+ return self._async_client
+
+ async def __aenter__(self) -> "Client":
+ """Enter a context manager for underlying httpx.AsyncClient—you cannot enter twice (see httpx docs)"""
+ await self.get_async_httpx_client().__aenter__()
+ return self
+
+ async def __aexit__(self, *args: Any, **kwargs: Any) -> None:
+ """Exit a context manager for underlying httpx.AsyncClient (see httpx docs)"""
+ await self.get_async_httpx_client().__aexit__(*args, **kwargs)
+
+
+@define
+class AuthenticatedClient:
+ """A Client which has been authenticated for use on secured endpoints
+
+ The following are accepted as keyword arguments and will be used to construct httpx Clients internally:
+
+ ``base_url``: The base URL for the API, all requests are made to a relative path to this URL
+
+ ``cookies``: A dictionary of cookies to be sent with every request
+
+ ``headers``: A dictionary of headers to be sent with every request
+
+ ``timeout``: The maximum amount of a time a request can take. API functions will raise
+ httpx.TimeoutException if this is exceeded.
+
+ ``verify_ssl``: Whether or not to verify the SSL certificate of the API server. This should be True in production,
+ but can be set to False for testing purposes.
+
+ ``follow_redirects``: Whether or not to follow redirects. Default value is False.
+
+ ``httpx_args``: A dictionary of additional arguments to be passed to the ``httpx.Client`` and ``httpx.AsyncClient`` constructor.
+
+
+ Attributes:
+ raise_on_unexpected_status: Whether or not to raise an errors.UnexpectedStatus if the API returns a
+ status code that was not documented in the source OpenAPI document. Can also be provided as a keyword
+ argument to the constructor.
+ token: The token to use for authentication
+ prefix: The prefix to use for the Authorization header
+ auth_header_name: The name of the Authorization header
+ """
+
+ raise_on_unexpected_status: bool = field(default=False, kw_only=True)
+ _base_url: str = field(alias="base_url")
+ _cookies: dict[str, str] = field(factory=dict, kw_only=True, alias="cookies")
+ _headers: dict[str, str] = field(factory=dict, kw_only=True, alias="headers")
+ _timeout: Optional[httpx.Timeout] = field(default=None, kw_only=True, alias="timeout")
+ _verify_ssl: Union[str, bool, ssl.SSLContext] = field(default=True, kw_only=True, alias="verify_ssl")
+ _follow_redirects: bool = field(default=False, kw_only=True, alias="follow_redirects")
+ _httpx_args: dict[str, Any] = field(factory=dict, kw_only=True, alias="httpx_args")
+ _client: Optional[httpx.Client] = field(default=None, init=False)
+ _async_client: Optional[httpx.AsyncClient] = field(default=None, init=False)
+
+ token: str
+ prefix: str = "Bearer"
+ auth_header_name: str = "Authorization"
+
+ def with_headers(self, headers: dict[str, str]) -> "AuthenticatedClient":
+ """Get a new client matching this one with additional headers"""
+ if self._client is not None:
+ self._client.headers.update(headers)
+ if self._async_client is not None:
+ self._async_client.headers.update(headers)
+ return evolve(self, headers={**self._headers, **headers})
+
+ def with_cookies(self, cookies: dict[str, str]) -> "AuthenticatedClient":
+ """Get a new client matching this one with additional cookies"""
+ if self._client is not None:
+ self._client.cookies.update(cookies)
+ if self._async_client is not None:
+ self._async_client.cookies.update(cookies)
+ return evolve(self, cookies={**self._cookies, **cookies})
+
+ def with_timeout(self, timeout: httpx.Timeout) -> "AuthenticatedClient":
+ """Get a new client matching this one with a new timeout (in seconds)"""
+ if self._client is not None:
+ self._client.timeout = timeout
+ if self._async_client is not None:
+ self._async_client.timeout = timeout
+ return evolve(self, timeout=timeout)
+
+ def set_httpx_client(self, client: httpx.Client) -> "AuthenticatedClient":
+ """Manually set the underlying httpx.Client
+
+ **NOTE**: This will override any other settings on the client, including cookies, headers, and timeout.
+ """
+ self._client = client
+ return self
+
+ def get_httpx_client(self) -> httpx.Client:
+ """Get the underlying httpx.Client, constructing a new one if not previously set"""
+ if self._client is None:
+ self._headers[self.auth_header_name] = f"{self.prefix} {self.token}" if self.prefix else self.token
+ self._client = httpx.Client(
+ base_url=self._base_url,
+ cookies=self._cookies,
+ headers=self._headers,
+ timeout=self._timeout,
+ verify=self._verify_ssl,
+ follow_redirects=self._follow_redirects,
+ **self._httpx_args,
+ )
+ return self._client
+
+ def __enter__(self) -> "AuthenticatedClient":
+ """Enter a context manager for self.client—you cannot enter twice (see httpx docs)"""
+ self.get_httpx_client().__enter__()
+ return self
+
+ def __exit__(self, *args: Any, **kwargs: Any) -> None:
+ """Exit a context manager for internal httpx.Client (see httpx docs)"""
+ self.get_httpx_client().__exit__(*args, **kwargs)
+
+ def set_async_httpx_client(self, async_client: httpx.AsyncClient) -> "AuthenticatedClient":
+ """Manually the underlying httpx.AsyncClient
+
+ **NOTE**: This will override any other settings on the client, including cookies, headers, and timeout.
+ """
+ self._async_client = async_client
+ return self
+
+ def get_async_httpx_client(self) -> httpx.AsyncClient:
+ """Get the underlying httpx.AsyncClient, constructing a new one if not previously set"""
+ if self._async_client is None:
+ self._headers[self.auth_header_name] = f"{self.prefix} {self.token}" if self.prefix else self.token
+ self._async_client = httpx.AsyncClient(
+ base_url=self._base_url,
+ cookies=self._cookies,
+ headers=self._headers,
+ timeout=self._timeout,
+ verify=self._verify_ssl,
+ follow_redirects=self._follow_redirects,
+ **self._httpx_args,
+ )
+ return self._async_client
+
+ async def __aenter__(self) -> "AuthenticatedClient":
+ """Enter a context manager for underlying httpx.AsyncClient—you cannot enter twice (see httpx docs)"""
+ await self.get_async_httpx_client().__aenter__()
+ return self
+
+ async def __aexit__(self, *args: Any, **kwargs: Any) -> None:
+ """Exit a context manager for underlying httpx.AsyncClient (see httpx docs)"""
+ await self.get_async_httpx_client().__aexit__(*args, **kwargs)
+
diff --git a/ebay_client/generated/inventory/errors.py b/ebay_client/generated/inventory/errors.py
new file mode 100644
index 0000000..b912123
--- /dev/null
+++ b/ebay_client/generated/inventory/errors.py
@@ -0,0 +1,14 @@
+""" Contains shared errors types that can be raised from API functions """
+
+class UnexpectedStatus(Exception):
+ """Raised by api functions when the response status an undocumented status and Client.raise_on_unexpected_status is True"""
+
+ def __init__(self, status_code: int, content: bytes):
+ self.status_code = status_code
+ self.content = content
+
+ super().__init__(
+ f"Unexpected status code: {status_code}\n\nResponse content:\n{content.decode(errors='ignore')}"
+ )
+
+__all__ = ["UnexpectedStatus"]
diff --git a/ebay_client/generated/inventory/models/__init__.py b/ebay_client/generated/inventory/models/__init__.py
new file mode 100644
index 0000000..bdc4d97
--- /dev/null
+++ b/ebay_client/generated/inventory/models/__init__.py
@@ -0,0 +1,215 @@
+""" Contains all the data models used in inputs/outputs """
+
+from .address import Address
+from .amount import Amount
+from .availability import Availability
+from .availability_distribution import AvailabilityDistribution
+from .availability_with_all import AvailabilityWithAll
+from .base_response import BaseResponse
+from .best_offer import BestOffer
+from .bulk_ebay_offer_details_with_keys import BulkEbayOfferDetailsWithKeys
+from .bulk_get_inventory_item import BulkGetInventoryItem
+from .bulk_get_inventory_item_response import BulkGetInventoryItemResponse
+from .bulk_inventory_item import BulkInventoryItem
+from .bulk_inventory_item_response import BulkInventoryItemResponse
+from .bulk_migrate_listing import BulkMigrateListing
+from .bulk_migrate_listing_response import BulkMigrateListingResponse
+from .bulk_offer import BulkOffer
+from .bulk_offer_response import BulkOfferResponse
+from .bulk_price_quantity import BulkPriceQuantity
+from .bulk_price_quantity_response import BulkPriceQuantityResponse
+from .bulk_publish_response import BulkPublishResponse
+from .charity import Charity
+from .compatibility import Compatibility
+from .compatible_product import CompatibleProduct
+from .condition_descriptor import ConditionDescriptor
+from .country_policy import CountryPolicy
+from .dimension import Dimension
+from .disable_inventory_location_response_200 import DisableInventoryLocationResponse200
+from .document import Document
+from .ebay_offer_details_with_all import EbayOfferDetailsWithAll
+from .ebay_offer_details_with_id import EbayOfferDetailsWithId
+from .ebay_offer_details_with_keys import EbayOfferDetailsWithKeys
+from .enable_inventory_location_response_200 import EnableInventoryLocationResponse200
+from .energy_efficiency_label import EnergyEfficiencyLabel
+from .error import Error
+from .error_parameter import ErrorParameter
+from .extended_producer_responsibility import ExtendedProducerResponsibility
+from .fee import Fee
+from .fee_summary import FeeSummary
+from .fees_summary_response import FeesSummaryResponse
+from .format_allocation import FormatAllocation
+from .fulfillment_center_specifications import FulfillmentCenterSpecifications
+from .geo_coordinates import GeoCoordinates
+from .get_inventory_item import GetInventoryItem
+from .get_inventory_item_response import GetInventoryItemResponse
+from .hazmat import Hazmat
+from .interval import Interval
+from .inventory_item import InventoryItem
+from .inventory_item_group import InventoryItemGroup
+from .inventory_item_listing import InventoryItemListing
+from .inventory_item_response import InventoryItemResponse
+from .inventory_item_with_sku_locale import InventoryItemWithSkuLocale
+from .inventory_item_with_sku_locale_group_keys import InventoryItemWithSkuLocaleGroupKeys
+from .inventory_item_with_sku_locale_groupid import InventoryItemWithSkuLocaleGroupid
+from .inventory_items import InventoryItems
+from .inventory_location import InventoryLocation
+from .inventory_location_full import InventoryLocationFull
+from .inventory_location_response import InventoryLocationResponse
+from .listing_details import ListingDetails
+from .listing_policies import ListingPolicies
+from .location import Location
+from .location_availability_details import LocationAvailabilityDetails
+from .location_details import LocationDetails
+from .location_mapping import LocationMapping
+from .location_response import LocationResponse
+from .manufacturer import Manufacturer
+from .migrate_listing import MigrateListing
+from .migrate_listing_response import MigrateListingResponse
+from .name_value_list import NameValueList
+from .offer_key_with_id import OfferKeyWithId
+from .offer_keys_with_id import OfferKeysWithId
+from .offer_price_quantity import OfferPriceQuantity
+from .offer_response import OfferResponse
+from .offer_response_with_listing_id import OfferResponseWithListingId
+from .offer_sku_response import OfferSkuResponse
+from .offers import Offers
+from .operating_hours import OperatingHours
+from .overrides import Overrides
+from .package_weight_and_size import PackageWeightAndSize
+from .pickup_at_location_availability import PickupAtLocationAvailability
+from .price_quantity import PriceQuantity
+from .price_quantity_response import PriceQuantityResponse
+from .pricing_summary import PricingSummary
+from .product import Product
+from .product_family_properties import ProductFamilyProperties
+from .product_identifier import ProductIdentifier
+from .product_safety import ProductSafety
+from .publish_by_inventory_item_group_request import PublishByInventoryItemGroupRequest
+from .publish_response import PublishResponse
+from .regional_product_compliance_policies import RegionalProductCompliancePolicies
+from .regional_take_back_policies import RegionalTakeBackPolicies
+from .regulatory import Regulatory
+from .responsible_person import ResponsiblePerson
+from .same_day_shipping_cut_off_times import SameDayShippingCutOffTimes
+from .ship_to_location_availability import ShipToLocationAvailability
+from .ship_to_location_availability_with_all import ShipToLocationAvailabilityWithAll
+from .shipping_cost_override import ShippingCostOverride
+from .special_hours import SpecialHours
+from .specification import Specification
+from .tax import Tax
+from .time_duration import TimeDuration
+from .varies_by import VariesBy
+from .version import Version
+from .weekly_schedule import WeeklySchedule
+from .weight import Weight
+from .withdraw_by_inventory_item_group_request import WithdrawByInventoryItemGroupRequest
+from .withdraw_response import WithdrawResponse
+
+__all__ = (
+ "Address",
+ "Amount",
+ "Availability",
+ "AvailabilityDistribution",
+ "AvailabilityWithAll",
+ "BaseResponse",
+ "BestOffer",
+ "BulkEbayOfferDetailsWithKeys",
+ "BulkGetInventoryItem",
+ "BulkGetInventoryItemResponse",
+ "BulkInventoryItem",
+ "BulkInventoryItemResponse",
+ "BulkMigrateListing",
+ "BulkMigrateListingResponse",
+ "BulkOffer",
+ "BulkOfferResponse",
+ "BulkPriceQuantity",
+ "BulkPriceQuantityResponse",
+ "BulkPublishResponse",
+ "Charity",
+ "Compatibility",
+ "CompatibleProduct",
+ "ConditionDescriptor",
+ "CountryPolicy",
+ "Dimension",
+ "DisableInventoryLocationResponse200",
+ "Document",
+ "EbayOfferDetailsWithAll",
+ "EbayOfferDetailsWithId",
+ "EbayOfferDetailsWithKeys",
+ "EnableInventoryLocationResponse200",
+ "EnergyEfficiencyLabel",
+ "Error",
+ "ErrorParameter",
+ "ExtendedProducerResponsibility",
+ "Fee",
+ "FeesSummaryResponse",
+ "FeeSummary",
+ "FormatAllocation",
+ "FulfillmentCenterSpecifications",
+ "GeoCoordinates",
+ "GetInventoryItem",
+ "GetInventoryItemResponse",
+ "Hazmat",
+ "Interval",
+ "InventoryItem",
+ "InventoryItemGroup",
+ "InventoryItemListing",
+ "InventoryItemResponse",
+ "InventoryItems",
+ "InventoryItemWithSkuLocale",
+ "InventoryItemWithSkuLocaleGroupid",
+ "InventoryItemWithSkuLocaleGroupKeys",
+ "InventoryLocation",
+ "InventoryLocationFull",
+ "InventoryLocationResponse",
+ "ListingDetails",
+ "ListingPolicies",
+ "Location",
+ "LocationAvailabilityDetails",
+ "LocationDetails",
+ "LocationMapping",
+ "LocationResponse",
+ "Manufacturer",
+ "MigrateListing",
+ "MigrateListingResponse",
+ "NameValueList",
+ "OfferKeysWithId",
+ "OfferKeyWithId",
+ "OfferPriceQuantity",
+ "OfferResponse",
+ "OfferResponseWithListingId",
+ "Offers",
+ "OfferSkuResponse",
+ "OperatingHours",
+ "Overrides",
+ "PackageWeightAndSize",
+ "PickupAtLocationAvailability",
+ "PriceQuantity",
+ "PriceQuantityResponse",
+ "PricingSummary",
+ "Product",
+ "ProductFamilyProperties",
+ "ProductIdentifier",
+ "ProductSafety",
+ "PublishByInventoryItemGroupRequest",
+ "PublishResponse",
+ "RegionalProductCompliancePolicies",
+ "RegionalTakeBackPolicies",
+ "Regulatory",
+ "ResponsiblePerson",
+ "SameDayShippingCutOffTimes",
+ "ShippingCostOverride",
+ "ShipToLocationAvailability",
+ "ShipToLocationAvailabilityWithAll",
+ "SpecialHours",
+ "Specification",
+ "Tax",
+ "TimeDuration",
+ "VariesBy",
+ "Version",
+ "WeeklySchedule",
+ "Weight",
+ "WithdrawByInventoryItemGroupRequest",
+ "WithdrawResponse",
+)
diff --git a/ebay_client/generated/inventory/models/address.py b/ebay_client/generated/inventory/models/address.py
new file mode 100644
index 0000000..f691514
--- /dev/null
+++ b/ebay_client/generated/inventory/models/address.py
@@ -0,0 +1,158 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="Address")
+
+
+
+@_attrs_define
+class Address:
+ """ This type is used to define the physical address of an inventory location.
+
+ Attributes:
+ address_line_1 (Union[Unset, str]): The first line of a street address. This field is required for store and
+ fulfillment center locations. A street address is not required for warehouse locations.
This field will
+ be returned if defined for an inventory location.
Max length: 128
+ address_line_2 (Union[Unset, str]): The second line of a street address. This field can be used for additional
+ address information, such as a suite or apartment number.
This field will be returned if defined for an
+ inventory location.
Max length: 128
+ city (Union[Unset, str]): The city in which the inventory location resides. This field is required for store and
+ fulfillment center locations. For warehouse locations, this field is conditionally required as part of a
+ city and stateOrProvince pair if a postalCode is not
+ provided. If a postalCode is provided, the city is derived from the provided postal code and
+ this field is technically optional.
This field is returned if defined for an inventory location.
+
Max length: 128
+ country (Union[Unset, str]): The country in which the address resides, represented as two-letter ISO
+ 3166 country code. For example, US represents the United States, and DE represents
+ Germany. For implementation help, refer to eBay API documentation
+ county (Union[Unset, str]): The county in which the address resides.
This field is returned if defined
+ for an inventory location.
+ postal_code (Union[Unset, str]): The postal/zip code of the address. eBay uses postal codes to surface In-Store
+ Pickup items within the vicinity of a buyer's location, and it also uses postal codes (origin and destination)
+ to estimate shipping costs when the seller uses calculated shipping. This field is required for store and
+ fulfillment center locations.
For warehouse locations, this field is conditionally required if a
+ city and stateOrProvince pair is not provided.
+ Note: For warehouse locations, city and stateOrProvince pair
+ can be used instead of a postalCode value, and then the postal code is just derived from the
+ city and state/province.
This field is returned if defined for an inventory location.
+
Max length: 16
+ state_or_province (Union[Unset, str]): The state/province in which the inventory location resides. This field is
+ required for store and fulfillment center locations. For warehouse locations, this field is conditionally
+ required as part of a city and stateOrProvince pair if a
+ postalCode is not provided. If a postalCode is provided, the state or province
+ is derived from the provided zip code and this field is technically optional.
Max length: 128
+ """
+
+ address_line_1: Union[Unset, str] = UNSET
+ address_line_2: Union[Unset, str] = UNSET
+ city: Union[Unset, str] = UNSET
+ country: Union[Unset, str] = UNSET
+ county: Union[Unset, str] = UNSET
+ postal_code: Union[Unset, str] = UNSET
+ state_or_province: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ address_line_1 = self.address_line_1
+
+ address_line_2 = self.address_line_2
+
+ city = self.city
+
+ country = self.country
+
+ county = self.county
+
+ postal_code = self.postal_code
+
+ state_or_province = self.state_or_province
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if address_line_1 is not UNSET:
+ field_dict["addressLine1"] = address_line_1
+ if address_line_2 is not UNSET:
+ field_dict["addressLine2"] = address_line_2
+ if city is not UNSET:
+ field_dict["city"] = city
+ if country is not UNSET:
+ field_dict["country"] = country
+ if county is not UNSET:
+ field_dict["county"] = county
+ if postal_code is not UNSET:
+ field_dict["postalCode"] = postal_code
+ if state_or_province is not UNSET:
+ field_dict["stateOrProvince"] = state_or_province
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ address_line_1 = d.pop("addressLine1", UNSET)
+
+ address_line_2 = d.pop("addressLine2", UNSET)
+
+ city = d.pop("city", UNSET)
+
+ country = d.pop("country", UNSET)
+
+ county = d.pop("county", UNSET)
+
+ postal_code = d.pop("postalCode", UNSET)
+
+ state_or_province = d.pop("stateOrProvince", UNSET)
+
+ address = cls(
+ address_line_1=address_line_1,
+ address_line_2=address_line_2,
+ city=city,
+ country=country,
+ county=county,
+ postal_code=postal_code,
+ state_or_province=state_or_province,
+ )
+
+
+ address.additional_properties = d
+ return address
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/amount.py b/ebay_client/generated/inventory/models/amount.py
new file mode 100644
index 0000000..776931c
--- /dev/null
+++ b/ebay_client/generated/inventory/models/amount.py
@@ -0,0 +1,93 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="Amount")
+
+
+
+@_attrs_define
+class Amount:
+ """ This type is used to express a dollar value and the applicable currency.
+
+ Attributes:
+ currency (Union[Unset, str]): A three-digit string value representing the type of currency being used. Both the
+ value and currency fields are required/always returned when expressing prices.
+
See the CurrencyCodeEnum type for the full list of currencies and their corresponding three-digit
+ string values.
+ value (Union[Unset, str]): A string representation of a dollar value expressed in the currency specified in the
+ currency field. Both the value and currency fields are
+ required/always returned when expressing prices.
+ """
+
+ currency: Union[Unset, str] = UNSET
+ value: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ currency = self.currency
+
+ value = self.value
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if currency is not UNSET:
+ field_dict["currency"] = currency
+ if value is not UNSET:
+ field_dict["value"] = value
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ currency = d.pop("currency", UNSET)
+
+ value = d.pop("value", UNSET)
+
+ amount = cls(
+ currency=currency,
+ value=value,
+ )
+
+
+ amount.additional_properties = d
+ return amount
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/availability.py b/ebay_client/generated/inventory/models/availability.py
new file mode 100644
index 0000000..37a4106
--- /dev/null
+++ b/ebay_client/generated/inventory/models/availability.py
@@ -0,0 +1,129 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.pickup_at_location_availability import PickupAtLocationAvailability
+ from ..models.ship_to_location_availability import ShipToLocationAvailability
+
+
+
+
+
+T = TypeVar("T", bound="Availability")
+
+
+
+@_attrs_define
+class Availability:
+ """ This type is used to specify the quantity of the inventory item that is available for purchase if the item will be
+ shipped to the buyer, and the quantity of the inventory item that is available for In-Store Pickup at one or more of
+ the merchant's physical stores. In-Store Pickup is only available to large merchants selling on the US, UK, Germany,
+ and Australia sites.
+
+ Attributes:
+ pickup_at_location_availability (Union[Unset, list['PickupAtLocationAvailability']]): This container consists of
+ an array of one or more of the merchant's physical store locations where the inventory item is available for In-
+ Store Pickup orders. The merchant's location, the quantity available, and the fulfillment time (how soon the
+ item will be ready for pickup after the order takes place) are all in this container. In-Store Pickup is only
+ available to large merchants selling on the US, UK, Germany, and Australia sites.
+ ship_to_location_availability (Union[Unset, ShipToLocationAvailability]): This type is used to specify the total
+ 'ship-to-home' quantity of the inventory item that will be available for purchase through one or more published
+ offers.
+ """
+
+ pickup_at_location_availability: Union[Unset, list['PickupAtLocationAvailability']] = UNSET
+ ship_to_location_availability: Union[Unset, 'ShipToLocationAvailability'] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.pickup_at_location_availability import PickupAtLocationAvailability
+ from ..models.ship_to_location_availability import ShipToLocationAvailability
+ pickup_at_location_availability: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.pickup_at_location_availability, Unset):
+ pickup_at_location_availability = []
+ for pickup_at_location_availability_item_data in self.pickup_at_location_availability:
+ pickup_at_location_availability_item = pickup_at_location_availability_item_data.to_dict()
+ pickup_at_location_availability.append(pickup_at_location_availability_item)
+
+
+
+ ship_to_location_availability: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.ship_to_location_availability, Unset):
+ ship_to_location_availability = self.ship_to_location_availability.to_dict()
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if pickup_at_location_availability is not UNSET:
+ field_dict["pickupAtLocationAvailability"] = pickup_at_location_availability
+ if ship_to_location_availability is not UNSET:
+ field_dict["shipToLocationAvailability"] = ship_to_location_availability
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.pickup_at_location_availability import PickupAtLocationAvailability
+ from ..models.ship_to_location_availability import ShipToLocationAvailability
+ d = dict(src_dict)
+ pickup_at_location_availability = []
+ _pickup_at_location_availability = d.pop("pickupAtLocationAvailability", UNSET)
+ for pickup_at_location_availability_item_data in (_pickup_at_location_availability or []):
+ pickup_at_location_availability_item = PickupAtLocationAvailability.from_dict(pickup_at_location_availability_item_data)
+
+
+
+ pickup_at_location_availability.append(pickup_at_location_availability_item)
+
+
+ _ship_to_location_availability = d.pop("shipToLocationAvailability", UNSET)
+ ship_to_location_availability: Union[Unset, ShipToLocationAvailability]
+ if isinstance(_ship_to_location_availability, Unset):
+ ship_to_location_availability = UNSET
+ else:
+ ship_to_location_availability = ShipToLocationAvailability.from_dict(_ship_to_location_availability)
+
+
+
+
+ availability = cls(
+ pickup_at_location_availability=pickup_at_location_availability,
+ ship_to_location_availability=ship_to_location_availability,
+ )
+
+
+ availability.additional_properties = d
+ return availability
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/availability_distribution.py b/ebay_client/generated/inventory/models/availability_distribution.py
new file mode 100644
index 0000000..fede3da
--- /dev/null
+++ b/ebay_client/generated/inventory/models/availability_distribution.py
@@ -0,0 +1,117 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.time_duration import TimeDuration
+
+
+
+
+
+T = TypeVar("T", bound="AvailabilityDistribution")
+
+
+
+@_attrs_define
+class AvailabilityDistribution:
+ """ This type is used to set the available quantity of the inventory item at one or more warehouse locations.
+
+ Attributes:
+ fulfillment_time (Union[Unset, TimeDuration]): This type is used to indicate the fulfillment time for an In-
+ Store Pickup order, or for an order than will be shipped to the buyer.
+ merchant_location_key (Union[Unset, str]): The unique identifier of an inventory location where quantity is
+ available for the inventory item. This field is conditionally required to identify the inventory location that
+ has quantity of the inventory item.
Use the getInventoryLocations
+ method to retrieve merchant location keys.
+ quantity (Union[Unset, int]): The integer value passed into this field indicates the quantity of the inventory
+ item that is available at this inventory location. This field is conditionally required.
+ """
+
+ fulfillment_time: Union[Unset, 'TimeDuration'] = UNSET
+ merchant_location_key: Union[Unset, str] = UNSET
+ quantity: Union[Unset, int] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.time_duration import TimeDuration
+ fulfillment_time: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.fulfillment_time, Unset):
+ fulfillment_time = self.fulfillment_time.to_dict()
+
+ merchant_location_key = self.merchant_location_key
+
+ quantity = self.quantity
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if fulfillment_time is not UNSET:
+ field_dict["fulfillmentTime"] = fulfillment_time
+ if merchant_location_key is not UNSET:
+ field_dict["merchantLocationKey"] = merchant_location_key
+ if quantity is not UNSET:
+ field_dict["quantity"] = quantity
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.time_duration import TimeDuration
+ d = dict(src_dict)
+ _fulfillment_time = d.pop("fulfillmentTime", UNSET)
+ fulfillment_time: Union[Unset, TimeDuration]
+ if isinstance(_fulfillment_time, Unset):
+ fulfillment_time = UNSET
+ else:
+ fulfillment_time = TimeDuration.from_dict(_fulfillment_time)
+
+
+
+
+ merchant_location_key = d.pop("merchantLocationKey", UNSET)
+
+ quantity = d.pop("quantity", UNSET)
+
+ availability_distribution = cls(
+ fulfillment_time=fulfillment_time,
+ merchant_location_key=merchant_location_key,
+ quantity=quantity,
+ )
+
+
+ availability_distribution.additional_properties = d
+ return availability_distribution
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/availability_with_all.py b/ebay_client/generated/inventory/models/availability_with_all.py
new file mode 100644
index 0000000..07ad1d4
--- /dev/null
+++ b/ebay_client/generated/inventory/models/availability_with_all.py
@@ -0,0 +1,128 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.pickup_at_location_availability import PickupAtLocationAvailability
+ from ..models.ship_to_location_availability_with_all import ShipToLocationAvailabilityWithAll
+
+
+
+
+
+T = TypeVar("T", bound="AvailabilityWithAll")
+
+
+
+@_attrs_define
+class AvailabilityWithAll:
+ """ This type is used to specify the quantity of the inventory items that are available for purchase if the items will
+ be shipped to the buyer, and the quantity of the inventory items that are available for In-Store Pickup at one or
+ more of the merchant's physical stores.
In-Store Pickup is only available to large merchants selling on the
+ US, UK, Germany, and Australia sites.
+
+ Attributes:
+ pickup_at_location_availability (Union[Unset, list['PickupAtLocationAvailability']]): This container consists of
+ an array of one or more of the merchant's physical stores where the inventory item is available for in-store
+ pickup.
The store ID, the quantity available, and the fulfillment time (how soon the item will be ready
+ for pickup after the order occurs) are all returned in this container.
+ ship_to_location_availability (Union[Unset, ShipToLocationAvailabilityWithAll]): This type is used to specify
+ the total 'ship-to-home' quantity of the inventory items that will be available for purchase through one or more
+ published offers.
+ """
+
+ pickup_at_location_availability: Union[Unset, list['PickupAtLocationAvailability']] = UNSET
+ ship_to_location_availability: Union[Unset, 'ShipToLocationAvailabilityWithAll'] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.pickup_at_location_availability import PickupAtLocationAvailability
+ from ..models.ship_to_location_availability_with_all import ShipToLocationAvailabilityWithAll
+ pickup_at_location_availability: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.pickup_at_location_availability, Unset):
+ pickup_at_location_availability = []
+ for pickup_at_location_availability_item_data in self.pickup_at_location_availability:
+ pickup_at_location_availability_item = pickup_at_location_availability_item_data.to_dict()
+ pickup_at_location_availability.append(pickup_at_location_availability_item)
+
+
+
+ ship_to_location_availability: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.ship_to_location_availability, Unset):
+ ship_to_location_availability = self.ship_to_location_availability.to_dict()
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if pickup_at_location_availability is not UNSET:
+ field_dict["pickupAtLocationAvailability"] = pickup_at_location_availability
+ if ship_to_location_availability is not UNSET:
+ field_dict["shipToLocationAvailability"] = ship_to_location_availability
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.pickup_at_location_availability import PickupAtLocationAvailability
+ from ..models.ship_to_location_availability_with_all import ShipToLocationAvailabilityWithAll
+ d = dict(src_dict)
+ pickup_at_location_availability = []
+ _pickup_at_location_availability = d.pop("pickupAtLocationAvailability", UNSET)
+ for pickup_at_location_availability_item_data in (_pickup_at_location_availability or []):
+ pickup_at_location_availability_item = PickupAtLocationAvailability.from_dict(pickup_at_location_availability_item_data)
+
+
+
+ pickup_at_location_availability.append(pickup_at_location_availability_item)
+
+
+ _ship_to_location_availability = d.pop("shipToLocationAvailability", UNSET)
+ ship_to_location_availability: Union[Unset, ShipToLocationAvailabilityWithAll]
+ if isinstance(_ship_to_location_availability, Unset):
+ ship_to_location_availability = UNSET
+ else:
+ ship_to_location_availability = ShipToLocationAvailabilityWithAll.from_dict(_ship_to_location_availability)
+
+
+
+
+ availability_with_all = cls(
+ pickup_at_location_availability=pickup_at_location_availability,
+ ship_to_location_availability=ship_to_location_availability,
+ )
+
+
+ availability_with_all.additional_properties = d
+ return availability_with_all
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/base_response.py b/ebay_client/generated/inventory/models/base_response.py
new file mode 100644
index 0000000..4a12266
--- /dev/null
+++ b/ebay_client/generated/inventory/models/base_response.py
@@ -0,0 +1,103 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.error import Error
+
+
+
+
+
+T = TypeVar("T", bound="BaseResponse")
+
+
+
+@_attrs_define
+class BaseResponse:
+ """ This is the base response of the createOrReplaceInventoryItem,
+ createOrReplaceInventoryItemGroup, and createOrReplaceProductCompatibility calls.
+ A response payload will only be returned for these three calls if one or more errors or warnings occur with the
+ call.
+
+ Attributes:
+ warnings (Union[Unset, list['Error']]): This container will be returned in a call response payload if one or
+ more warnings or errors are triggered when an Inventory API call is made. This container will contain detailed
+ information about the error or warning.
+ """
+
+ warnings: Union[Unset, list['Error']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.error import Error
+ warnings: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.warnings, Unset):
+ warnings = []
+ for warnings_item_data in self.warnings:
+ warnings_item = warnings_item_data.to_dict()
+ warnings.append(warnings_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if warnings is not UNSET:
+ field_dict["warnings"] = warnings
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.error import Error
+ d = dict(src_dict)
+ warnings = []
+ _warnings = d.pop("warnings", UNSET)
+ for warnings_item_data in (_warnings or []):
+ warnings_item = Error.from_dict(warnings_item_data)
+
+
+
+ warnings.append(warnings_item)
+
+
+ base_response = cls(
+ warnings=warnings,
+ )
+
+
+ base_response.additional_properties = d
+ return base_response
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/best_offer.py b/ebay_client/generated/inventory/models/best_offer.py
new file mode 100644
index 0000000..bff62cf
--- /dev/null
+++ b/ebay_client/generated/inventory/models/best_offer.py
@@ -0,0 +1,128 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.amount import Amount
+
+
+
+
+
+T = TypeVar("T", bound="BestOffer")
+
+
+
+@_attrs_define
+class BestOffer:
+ """ This type is used by the bestOfferTerms container, which is used if the seller would like to
+ support the Best Offer feature on their listing.
+
+ Attributes:
+ auto_accept_price (Union[Unset, Amount]): This type is used to express a dollar value and the applicable
+ currency.
+ auto_decline_price (Union[Unset, Amount]): This type is used to express a dollar value and the applicable
+ currency.
+ best_offer_enabled (Union[Unset, bool]): This field indicates whether or not the Best Offer feature is enabled
+ for the listing. A seller can enable the Best Offer feature for a listing as long as the category supports the
+ Best Offer feature.
The seller includes this field and sets its value to true to enable Best
+ Offer feature.
Note: Best Offer is not available for multi-variation
+ listings.
+ """
+
+ auto_accept_price: Union[Unset, 'Amount'] = UNSET
+ auto_decline_price: Union[Unset, 'Amount'] = UNSET
+ best_offer_enabled: Union[Unset, bool] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.amount import Amount
+ auto_accept_price: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.auto_accept_price, Unset):
+ auto_accept_price = self.auto_accept_price.to_dict()
+
+ auto_decline_price: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.auto_decline_price, Unset):
+ auto_decline_price = self.auto_decline_price.to_dict()
+
+ best_offer_enabled = self.best_offer_enabled
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if auto_accept_price is not UNSET:
+ field_dict["autoAcceptPrice"] = auto_accept_price
+ if auto_decline_price is not UNSET:
+ field_dict["autoDeclinePrice"] = auto_decline_price
+ if best_offer_enabled is not UNSET:
+ field_dict["bestOfferEnabled"] = best_offer_enabled
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.amount import Amount
+ d = dict(src_dict)
+ _auto_accept_price = d.pop("autoAcceptPrice", UNSET)
+ auto_accept_price: Union[Unset, Amount]
+ if isinstance(_auto_accept_price, Unset):
+ auto_accept_price = UNSET
+ else:
+ auto_accept_price = Amount.from_dict(_auto_accept_price)
+
+
+
+
+ _auto_decline_price = d.pop("autoDeclinePrice", UNSET)
+ auto_decline_price: Union[Unset, Amount]
+ if isinstance(_auto_decline_price, Unset):
+ auto_decline_price = UNSET
+ else:
+ auto_decline_price = Amount.from_dict(_auto_decline_price)
+
+
+
+
+ best_offer_enabled = d.pop("bestOfferEnabled", UNSET)
+
+ best_offer = cls(
+ auto_accept_price=auto_accept_price,
+ auto_decline_price=auto_decline_price,
+ best_offer_enabled=best_offer_enabled,
+ )
+
+
+ best_offer.additional_properties = d
+ return best_offer
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/bulk_ebay_offer_details_with_keys.py b/ebay_client/generated/inventory/models/bulk_ebay_offer_details_with_keys.py
new file mode 100644
index 0000000..853b5d5
--- /dev/null
+++ b/ebay_client/generated/inventory/models/bulk_ebay_offer_details_with_keys.py
@@ -0,0 +1,100 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.ebay_offer_details_with_keys import EbayOfferDetailsWithKeys
+
+
+
+
+
+T = TypeVar("T", bound="BulkEbayOfferDetailsWithKeys")
+
+
+
+@_attrs_define
+class BulkEbayOfferDetailsWithKeys:
+ """ This type is used by the base request of the bulkCreateOffer method, which is used to create up to
+ 25 new offers.
+
+ Attributes:
+ requests (Union[Unset, list['EbayOfferDetailsWithKeys']]): The details of each offer that is being created is
+ passed in under this container. Up to 25 offers can be created with one bulkCreateOffer call.
+ """
+
+ requests: Union[Unset, list['EbayOfferDetailsWithKeys']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.ebay_offer_details_with_keys import EbayOfferDetailsWithKeys
+ requests: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.requests, Unset):
+ requests = []
+ for requests_item_data in self.requests:
+ requests_item = requests_item_data.to_dict()
+ requests.append(requests_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if requests is not UNSET:
+ field_dict["requests"] = requests
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.ebay_offer_details_with_keys import EbayOfferDetailsWithKeys
+ d = dict(src_dict)
+ requests = []
+ _requests = d.pop("requests", UNSET)
+ for requests_item_data in (_requests or []):
+ requests_item = EbayOfferDetailsWithKeys.from_dict(requests_item_data)
+
+
+
+ requests.append(requests_item)
+
+
+ bulk_ebay_offer_details_with_keys = cls(
+ requests=requests,
+ )
+
+
+ bulk_ebay_offer_details_with_keys.additional_properties = d
+ return bulk_ebay_offer_details_with_keys
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/bulk_get_inventory_item.py b/ebay_client/generated/inventory/models/bulk_get_inventory_item.py
new file mode 100644
index 0000000..d33f17f
--- /dev/null
+++ b/ebay_client/generated/inventory/models/bulk_get_inventory_item.py
@@ -0,0 +1,99 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.get_inventory_item import GetInventoryItem
+
+
+
+
+
+T = TypeVar("T", bound="BulkGetInventoryItem")
+
+
+
+@_attrs_define
+class BulkGetInventoryItem:
+ """ This type is used by the base request of the bulkGetInventoryItem method.
+
+ Attributes:
+ requests (Union[Unset, list['GetInventoryItem']]): The seller passes in multiple SKU values under this container
+ to retrieve multiple inventory item records. Up to 25 inventory item records can be retrieved at one time.
+ """
+
+ requests: Union[Unset, list['GetInventoryItem']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.get_inventory_item import GetInventoryItem
+ requests: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.requests, Unset):
+ requests = []
+ for requests_item_data in self.requests:
+ requests_item = requests_item_data.to_dict()
+ requests.append(requests_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if requests is not UNSET:
+ field_dict["requests"] = requests
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.get_inventory_item import GetInventoryItem
+ d = dict(src_dict)
+ requests = []
+ _requests = d.pop("requests", UNSET)
+ for requests_item_data in (_requests or []):
+ requests_item = GetInventoryItem.from_dict(requests_item_data)
+
+
+
+ requests.append(requests_item)
+
+
+ bulk_get_inventory_item = cls(
+ requests=requests,
+ )
+
+
+ bulk_get_inventory_item.additional_properties = d
+ return bulk_get_inventory_item
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/bulk_get_inventory_item_response.py b/ebay_client/generated/inventory/models/bulk_get_inventory_item_response.py
new file mode 100644
index 0000000..5bbc78a
--- /dev/null
+++ b/ebay_client/generated/inventory/models/bulk_get_inventory_item_response.py
@@ -0,0 +1,100 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.get_inventory_item_response import GetInventoryItemResponse
+
+
+
+
+
+T = TypeVar("T", bound="BulkGetInventoryItemResponse")
+
+
+
+@_attrs_define
+class BulkGetInventoryItemResponse:
+ """ This type is used by the base response of the bulkGetInventoryItem method.
+
+ Attributes:
+ responses (Union[Unset, list['GetInventoryItemResponse']]): This is the base container of the
+ bulkGetInventoryItem response. The results of each attempted inventory item retrieval is
+ captured under this container.
+ """
+
+ responses: Union[Unset, list['GetInventoryItemResponse']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.get_inventory_item_response import GetInventoryItemResponse
+ responses: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.responses, Unset):
+ responses = []
+ for responses_item_data in self.responses:
+ responses_item = responses_item_data.to_dict()
+ responses.append(responses_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if responses is not UNSET:
+ field_dict["responses"] = responses
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.get_inventory_item_response import GetInventoryItemResponse
+ d = dict(src_dict)
+ responses = []
+ _responses = d.pop("responses", UNSET)
+ for responses_item_data in (_responses or []):
+ responses_item = GetInventoryItemResponse.from_dict(responses_item_data)
+
+
+
+ responses.append(responses_item)
+
+
+ bulk_get_inventory_item_response = cls(
+ responses=responses,
+ )
+
+
+ bulk_get_inventory_item_response.additional_properties = d
+ return bulk_get_inventory_item_response
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/bulk_inventory_item.py b/ebay_client/generated/inventory/models/bulk_inventory_item.py
new file mode 100644
index 0000000..9b14724
--- /dev/null
+++ b/ebay_client/generated/inventory/models/bulk_inventory_item.py
@@ -0,0 +1,100 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.inventory_item_with_sku_locale import InventoryItemWithSkuLocale
+
+
+
+
+
+T = TypeVar("T", bound="BulkInventoryItem")
+
+
+
+@_attrs_define
+class BulkInventoryItem:
+ """ The base request of the bulkCreateOrReplaceInventoryItem method.
+
+ Attributes:
+ requests (Union[Unset, list['InventoryItemWithSkuLocale']]): The details of each inventory item that is being
+ created or updated is passed in under this container. Up to 25 inventory item records can be created and/or
+ updated with one bulkCreateOrReplaceInventoryItem call.
+ """
+
+ requests: Union[Unset, list['InventoryItemWithSkuLocale']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.inventory_item_with_sku_locale import InventoryItemWithSkuLocale
+ requests: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.requests, Unset):
+ requests = []
+ for requests_item_data in self.requests:
+ requests_item = requests_item_data.to_dict()
+ requests.append(requests_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if requests is not UNSET:
+ field_dict["requests"] = requests
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.inventory_item_with_sku_locale import InventoryItemWithSkuLocale
+ d = dict(src_dict)
+ requests = []
+ _requests = d.pop("requests", UNSET)
+ for requests_item_data in (_requests or []):
+ requests_item = InventoryItemWithSkuLocale.from_dict(requests_item_data)
+
+
+
+ requests.append(requests_item)
+
+
+ bulk_inventory_item = cls(
+ requests=requests,
+ )
+
+
+ bulk_inventory_item.additional_properties = d
+ return bulk_inventory_item
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/bulk_inventory_item_response.py b/ebay_client/generated/inventory/models/bulk_inventory_item_response.py
new file mode 100644
index 0000000..2e2ebca
--- /dev/null
+++ b/ebay_client/generated/inventory/models/bulk_inventory_item_response.py
@@ -0,0 +1,100 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.inventory_item_response import InventoryItemResponse
+
+
+
+
+
+T = TypeVar("T", bound="BulkInventoryItemResponse")
+
+
+
+@_attrs_define
+class BulkInventoryItemResponse:
+ """ This type is used by the base response of the bulkCreateOrReplaceInventoryItem method.
+
+ Attributes:
+ responses (Union[Unset, list['InventoryItemResponse']]): This is the base container of the
+ bulkCreateOrReplaceInventoryItem response. The results of each attempted inventory item
+ creation/update is captured under this container.
+ """
+
+ responses: Union[Unset, list['InventoryItemResponse']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.inventory_item_response import InventoryItemResponse
+ responses: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.responses, Unset):
+ responses = []
+ for responses_item_data in self.responses:
+ responses_item = responses_item_data.to_dict()
+ responses.append(responses_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if responses is not UNSET:
+ field_dict["responses"] = responses
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.inventory_item_response import InventoryItemResponse
+ d = dict(src_dict)
+ responses = []
+ _responses = d.pop("responses", UNSET)
+ for responses_item_data in (_responses or []):
+ responses_item = InventoryItemResponse.from_dict(responses_item_data)
+
+
+
+ responses.append(responses_item)
+
+
+ bulk_inventory_item_response = cls(
+ responses=responses,
+ )
+
+
+ bulk_inventory_item_response.additional_properties = d
+ return bulk_inventory_item_response
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/bulk_migrate_listing.py b/ebay_client/generated/inventory/models/bulk_migrate_listing.py
new file mode 100644
index 0000000..8a72bd7
--- /dev/null
+++ b/ebay_client/generated/inventory/models/bulk_migrate_listing.py
@@ -0,0 +1,100 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.migrate_listing import MigrateListing
+
+
+
+
+
+T = TypeVar("T", bound="BulkMigrateListing")
+
+
+
+@_attrs_define
+class BulkMigrateListing:
+ """ This type is used by the base container of the bulkMigrateListings request payload.
+
+ Attributes:
+ requests (Union[Unset, list['MigrateListing']]): This is the base container of the
+ bulkMigrateListings request payload. One to five eBay listings will be included under this
+ container.
+ """
+
+ requests: Union[Unset, list['MigrateListing']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.migrate_listing import MigrateListing
+ requests: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.requests, Unset):
+ requests = []
+ for requests_item_data in self.requests:
+ requests_item = requests_item_data.to_dict()
+ requests.append(requests_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if requests is not UNSET:
+ field_dict["requests"] = requests
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.migrate_listing import MigrateListing
+ d = dict(src_dict)
+ requests = []
+ _requests = d.pop("requests", UNSET)
+ for requests_item_data in (_requests or []):
+ requests_item = MigrateListing.from_dict(requests_item_data)
+
+
+
+ requests.append(requests_item)
+
+
+ bulk_migrate_listing = cls(
+ requests=requests,
+ )
+
+
+ bulk_migrate_listing.additional_properties = d
+ return bulk_migrate_listing
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/bulk_migrate_listing_response.py b/ebay_client/generated/inventory/models/bulk_migrate_listing_response.py
new file mode 100644
index 0000000..0e7c758
--- /dev/null
+++ b/ebay_client/generated/inventory/models/bulk_migrate_listing_response.py
@@ -0,0 +1,100 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.migrate_listing_response import MigrateListingResponse
+
+
+
+
+
+T = TypeVar("T", bound="BulkMigrateListingResponse")
+
+
+
+@_attrs_define
+class BulkMigrateListingResponse:
+ """ This type is used by the response payload of the bulkMigrateListings call.
+
+ Attributes:
+ responses (Union[Unset, list['MigrateListingResponse']]): This is the base container of the response payload of
+ the bulkMigrateListings call. The results of each attempted listing migration is captured under
+ this container.
+ """
+
+ responses: Union[Unset, list['MigrateListingResponse']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.migrate_listing_response import MigrateListingResponse
+ responses: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.responses, Unset):
+ responses = []
+ for responses_item_data in self.responses:
+ responses_item = responses_item_data.to_dict()
+ responses.append(responses_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if responses is not UNSET:
+ field_dict["responses"] = responses
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.migrate_listing_response import MigrateListingResponse
+ d = dict(src_dict)
+ responses = []
+ _responses = d.pop("responses", UNSET)
+ for responses_item_data in (_responses or []):
+ responses_item = MigrateListingResponse.from_dict(responses_item_data)
+
+
+
+ responses.append(responses_item)
+
+
+ bulk_migrate_listing_response = cls(
+ responses=responses,
+ )
+
+
+ bulk_migrate_listing_response.additional_properties = d
+ return bulk_migrate_listing_response
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/bulk_offer.py b/ebay_client/generated/inventory/models/bulk_offer.py
new file mode 100644
index 0000000..9485e8d
--- /dev/null
+++ b/ebay_client/generated/inventory/models/bulk_offer.py
@@ -0,0 +1,100 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.offer_key_with_id import OfferKeyWithId
+
+
+
+
+
+T = TypeVar("T", bound="BulkOffer")
+
+
+
+@_attrs_define
+class BulkOffer:
+ """ This type is used by the base request of the bulkPublishOffer method, which is used to publish up
+ to 25 different offers.
+
+ Attributes:
+ requests (Union[Unset, list['OfferKeyWithId']]): This container is used to pass in an array of offers to
+ publish. Up to 25 offers can be published with one bulkPublishOffer method.
+ """
+
+ requests: Union[Unset, list['OfferKeyWithId']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.offer_key_with_id import OfferKeyWithId
+ requests: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.requests, Unset):
+ requests = []
+ for requests_item_data in self.requests:
+ requests_item = requests_item_data.to_dict()
+ requests.append(requests_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if requests is not UNSET:
+ field_dict["requests"] = requests
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.offer_key_with_id import OfferKeyWithId
+ d = dict(src_dict)
+ requests = []
+ _requests = d.pop("requests", UNSET)
+ for requests_item_data in (_requests or []):
+ requests_item = OfferKeyWithId.from_dict(requests_item_data)
+
+
+
+ requests.append(requests_item)
+
+
+ bulk_offer = cls(
+ requests=requests,
+ )
+
+
+ bulk_offer.additional_properties = d
+ return bulk_offer
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/bulk_offer_response.py b/ebay_client/generated/inventory/models/bulk_offer_response.py
new file mode 100644
index 0000000..5c64d74
--- /dev/null
+++ b/ebay_client/generated/inventory/models/bulk_offer_response.py
@@ -0,0 +1,98 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.offer_sku_response import OfferSkuResponse
+
+
+
+
+
+T = TypeVar("T", bound="BulkOfferResponse")
+
+
+
+@_attrs_define
+class BulkOfferResponse:
+ """ This type is used by the base response of the bulkCreateOffer method.
+
+ Attributes:
+ responses (Union[Unset, list['OfferSkuResponse']]):
+ """
+
+ responses: Union[Unset, list['OfferSkuResponse']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.offer_sku_response import OfferSkuResponse
+ responses: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.responses, Unset):
+ responses = []
+ for responses_item_data in self.responses:
+ responses_item = responses_item_data.to_dict()
+ responses.append(responses_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if responses is not UNSET:
+ field_dict["responses"] = responses
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.offer_sku_response import OfferSkuResponse
+ d = dict(src_dict)
+ responses = []
+ _responses = d.pop("responses", UNSET)
+ for responses_item_data in (_responses or []):
+ responses_item = OfferSkuResponse.from_dict(responses_item_data)
+
+
+
+ responses.append(responses_item)
+
+
+ bulk_offer_response = cls(
+ responses=responses,
+ )
+
+
+ bulk_offer_response.additional_properties = d
+ return bulk_offer_response
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/bulk_price_quantity.py b/ebay_client/generated/inventory/models/bulk_price_quantity.py
new file mode 100644
index 0000000..143673e
--- /dev/null
+++ b/ebay_client/generated/inventory/models/bulk_price_quantity.py
@@ -0,0 +1,103 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.price_quantity import PriceQuantity
+
+
+
+
+
+T = TypeVar("T", bound="BulkPriceQuantity")
+
+
+
+@_attrs_define
+class BulkPriceQuantity:
+ """ This type is used by the base request payload of the bulkUpdatePriceQuantity call. The
+ bulkUpdatePriceQuantity call allows the seller to update the total 'ship-to-home' quantity of one
+ or more inventory items (up to 25) and/or to update the price and/or quantity of one or more specific published
+ offers.
+
+ Attributes:
+ requests (Union[Unset, list['PriceQuantity']]): This container is used by the seller to update the total 'ship-
+ to-home' quantity of one or more inventory items (up to 25) and/or to update the price and/or quantity of one or
+ more specific published offers.
+ """
+
+ requests: Union[Unset, list['PriceQuantity']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.price_quantity import PriceQuantity
+ requests: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.requests, Unset):
+ requests = []
+ for requests_item_data in self.requests:
+ requests_item = requests_item_data.to_dict()
+ requests.append(requests_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if requests is not UNSET:
+ field_dict["requests"] = requests
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.price_quantity import PriceQuantity
+ d = dict(src_dict)
+ requests = []
+ _requests = d.pop("requests", UNSET)
+ for requests_item_data in (_requests or []):
+ requests_item = PriceQuantity.from_dict(requests_item_data)
+
+
+
+ requests.append(requests_item)
+
+
+ bulk_price_quantity = cls(
+ requests=requests,
+ )
+
+
+ bulk_price_quantity.additional_properties = d
+ return bulk_price_quantity
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/bulk_price_quantity_response.py b/ebay_client/generated/inventory/models/bulk_price_quantity_response.py
new file mode 100644
index 0000000..346ee80
--- /dev/null
+++ b/ebay_client/generated/inventory/models/bulk_price_quantity_response.py
@@ -0,0 +1,104 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.price_quantity_response import PriceQuantityResponse
+
+
+
+
+
+T = TypeVar("T", bound="BulkPriceQuantityResponse")
+
+
+
+@_attrs_define
+class BulkPriceQuantityResponse:
+ """ This type is use by the base response payload of the bulkUpdatePriceQuantity call. The
+ bulkUpdatePriceQuantity call response will return an HTTP status code, offer ID, and SKU value for
+ each offer/inventory item being updated, as well as an errors and/or warnings
+ container if any errors or warnings are triggered while trying to update those offers/inventory items.
+
+ Attributes:
+ responses (Union[Unset, list['PriceQuantityResponse']]): This container will return an HTTP status code, offer
+ ID, and SKU value for each offer/inventory item being updated, as well as an errors and/or
+ warnings container if any errors or warnings are triggered while trying to update those
+ offers/inventory items.
+ """
+
+ responses: Union[Unset, list['PriceQuantityResponse']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.price_quantity_response import PriceQuantityResponse
+ responses: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.responses, Unset):
+ responses = []
+ for responses_item_data in self.responses:
+ responses_item = responses_item_data.to_dict()
+ responses.append(responses_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if responses is not UNSET:
+ field_dict["responses"] = responses
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.price_quantity_response import PriceQuantityResponse
+ d = dict(src_dict)
+ responses = []
+ _responses = d.pop("responses", UNSET)
+ for responses_item_data in (_responses or []):
+ responses_item = PriceQuantityResponse.from_dict(responses_item_data)
+
+
+
+ responses.append(responses_item)
+
+
+ bulk_price_quantity_response = cls(
+ responses=responses,
+ )
+
+
+ bulk_price_quantity_response.additional_properties = d
+ return bulk_price_quantity_response
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/bulk_publish_response.py b/ebay_client/generated/inventory/models/bulk_publish_response.py
new file mode 100644
index 0000000..97e23d0
--- /dev/null
+++ b/ebay_client/generated/inventory/models/bulk_publish_response.py
@@ -0,0 +1,100 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.offer_response_with_listing_id import OfferResponseWithListingId
+
+
+
+
+
+T = TypeVar("T", bound="BulkPublishResponse")
+
+
+
+@_attrs_define
+class BulkPublishResponse:
+ """ This type is used by the base response of the bulkPublishOffer method.
+
+ Attributes:
+ responses (Union[Unset, list['OfferResponseWithListingId']]): A node is returned under the
+ responses container to indicate the success or failure of each offer that the seller was
+ attempting to publish.
+ """
+
+ responses: Union[Unset, list['OfferResponseWithListingId']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.offer_response_with_listing_id import OfferResponseWithListingId
+ responses: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.responses, Unset):
+ responses = []
+ for responses_item_data in self.responses:
+ responses_item = responses_item_data.to_dict()
+ responses.append(responses_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if responses is not UNSET:
+ field_dict["responses"] = responses
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.offer_response_with_listing_id import OfferResponseWithListingId
+ d = dict(src_dict)
+ responses = []
+ _responses = d.pop("responses", UNSET)
+ for responses_item_data in (_responses or []):
+ responses_item = OfferResponseWithListingId.from_dict(responses_item_data)
+
+
+
+ responses.append(responses_item)
+
+
+ bulk_publish_response = cls(
+ responses=responses,
+ )
+
+
+ bulk_publish_response.additional_properties = d
+ return bulk_publish_response
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/charity.py b/ebay_client/generated/inventory/models/charity.py
new file mode 100644
index 0000000..7e31153
--- /dev/null
+++ b/ebay_client/generated/inventory/models/charity.py
@@ -0,0 +1,105 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="Charity")
+
+
+
+@_attrs_define
+class Charity:
+ """ This type is used to identify the charitable organization associated with the listing, and the percentage of the
+ sale proceeds that the charitable organization will receive for each sale generated by the listing.
In order
+ to receive a percentage of the sales proceeds, the charitable organization must be registered with the PayPal Giving
+ Fund, which is a partner of eBay for Charity.
+
+ Attributes:
+ charity_id (Union[Unset, str]): The eBay-assigned unique identifier of the charitable organization that will
+ receive a percentage of the sales proceeds. The charitable organization must be reqistered with the PayPal
+ Giving Fund in order to receive sales proceeds through eBay listings.
This field is conditionally
+ required if a seller is planning on donating a percentage of the sale proceeds to a charitable
+ organization.
The eBay-assigned unique identifier of a charitable organization can be found using the getCharityOrgs method of the Charity API. In the getCharityOrgs response,
+ this unique identifier is shown in the charityOrgId field.
+ donation_percentage (Union[Unset, str]): This field is the percentage of the purchase price that the charitable
+ organization (identified in the charityId field) will receive for each sale that the listing
+ generates. This field is conditionally required if a seller is planning on donating a percentage of the sale
+ proceeds to a charitable organization. This numeric value can range from 10 to 100, and in any 5 (percent)
+ increments in between this range (e.g. 10, 15, 20...95,...
+ 100). The seller would pass in 10 for 10 percent, 15 for 15 percent,
+ 20 for 20 percent, and so on, all the way to 100 for 100 percent.
+ """
+
+ charity_id: Union[Unset, str] = UNSET
+ donation_percentage: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ charity_id = self.charity_id
+
+ donation_percentage = self.donation_percentage
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if charity_id is not UNSET:
+ field_dict["charityId"] = charity_id
+ if donation_percentage is not UNSET:
+ field_dict["donationPercentage"] = donation_percentage
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ charity_id = d.pop("charityId", UNSET)
+
+ donation_percentage = d.pop("donationPercentage", UNSET)
+
+ charity = cls(
+ charity_id=charity_id,
+ donation_percentage=donation_percentage,
+ )
+
+
+ charity.additional_properties = d
+ return charity
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/compatibility.py b/ebay_client/generated/inventory/models/compatibility.py
new file mode 100644
index 0000000..4218c72
--- /dev/null
+++ b/ebay_client/generated/inventory/models/compatibility.py
@@ -0,0 +1,115 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.compatible_product import CompatibleProduct
+
+
+
+
+
+T = TypeVar("T", bound="Compatibility")
+
+
+
+@_attrs_define
+class Compatibility:
+ """ This type is used by the createOrReplaceProductCompatibility call to associate compatible vehicles
+ to an inventory item. This type is also the base response of the getProductCompatibility call.
+
+ Attributes:
+ compatible_products (Union[Unset, list['CompatibleProduct']]): This container consists of an array of motor
+ vehicles (make, model, year, trim, engine) that are compatible with the motor vehicle part or accessory
+ specified by the sku value.
+ sku (Union[Unset, str]): The seller-defined SKU value of the inventory item that will be associated with the
+ compatible vehicles.
Note: This field is not applicable to the
+ createOrReplaceProductCompatibility method, as the SKU value for the inventory item is passed
+ in as part of the call URI and not in the request payload. It is always returned with the getProductCompatibility method.
+ """
+
+ compatible_products: Union[Unset, list['CompatibleProduct']] = UNSET
+ sku: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.compatible_product import CompatibleProduct
+ compatible_products: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.compatible_products, Unset):
+ compatible_products = []
+ for compatible_products_item_data in self.compatible_products:
+ compatible_products_item = compatible_products_item_data.to_dict()
+ compatible_products.append(compatible_products_item)
+
+
+
+ sku = self.sku
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if compatible_products is not UNSET:
+ field_dict["compatibleProducts"] = compatible_products
+ if sku is not UNSET:
+ field_dict["sku"] = sku
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.compatible_product import CompatibleProduct
+ d = dict(src_dict)
+ compatible_products = []
+ _compatible_products = d.pop("compatibleProducts", UNSET)
+ for compatible_products_item_data in (_compatible_products or []):
+ compatible_products_item = CompatibleProduct.from_dict(compatible_products_item_data)
+
+
+
+ compatible_products.append(compatible_products_item)
+
+
+ sku = d.pop("sku", UNSET)
+
+ compatibility = cls(
+ compatible_products=compatible_products,
+ sku=sku,
+ )
+
+
+ compatibility.additional_properties = d
+ return compatibility
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/compatible_product.py b/ebay_client/generated/inventory/models/compatible_product.py
new file mode 100644
index 0000000..f4065e9
--- /dev/null
+++ b/ebay_client/generated/inventory/models/compatible_product.py
@@ -0,0 +1,188 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.name_value_list import NameValueList
+ from ..models.product_identifier import ProductIdentifier
+ from ..models.product_family_properties import ProductFamilyProperties
+
+
+
+
+
+T = TypeVar("T", bound="CompatibleProduct")
+
+
+
+@_attrs_define
+class CompatibleProduct:
+ """ This type is used to specify/indicate the motor vehicles that are compatible with the corresponding inventory item.
+
+ Attributes:
+ compatibility_properties (Union[Unset, list['NameValueList']]): This container consists of an array of motor
+ vehicles that are compatible with the motor vehicle part or accessory specified by the SKU value in the call
+ URI. Each motor vehicle is defined through a separate set of name/value pairs. In the name
+ field, the vehicle aspect (such as 'make', 'model', 'year', 'trim', or 'engine') will be identified, and the
+ value field will be used to identify the value of each aspect.
The getCompatibilityProperties method of the Taxonomy API can be used to retrieve applicable
+ vehicle aspect names for a specified category, and the getCompatibilityPropertyValues method of the Taxonomy API can be used to retrieve possible
+ values for these same vehicle aspect names.
Below is an example of identifying one motor vehicle using
+ the compatibilityProperties container:
"compatibilityProperties" :
+ [
{
"name" :
+ "make",
"value" :
+ "Subaru"
},
{
"name" :
+ "model",
"value" :
+ "GL"
},
{
"name" :
+ "year",
"value" :
+ "1983"
},
{
"name" :
+ "trim",
"value" : "Base Wagon
+ 4-Door"
},
{
"name" :
+ "engine",
"value" : "1.8L
+ Turbocharged"
}
]
Typically, the make, model, and year of the
+ motor vehicle are always required, with the trim and engine being necessary sometimes, but it will be dependent
+ on the part or accessory, and on the vehicle class.
Note: The
+ productFamilyProperties container is deprecated and should no longer be used. The
+ compatibilityProperties container should be used instead.
+ notes (Union[Unset, str]): This field is used by the seller to input any notes pertaining to the compatible
+ vehicle list being defined. The seller might use this field to specify the placement of the part on a vehicle or
+ other applicable information.
This field will only be returned if specified by the
+ seller.
Max Length: 500
+ product_family_properties (Union[Unset, ProductFamilyProperties]): This type is used to specify the details of a
+ motor vehicle that is compatible with the inventory item specified through the SKU value in the call URI.
+ product_identifier (Union[Unset, ProductIdentifier]): This type is used to identify a motor vehicle that is
+ compatible with the corresponding inventory item (the SKU that is passed in as part of the call URI). The motor
+ vehicle can be identified through an eBay Product ID or a K-Type value. The gtin field (for
+ inputting Global Trade Item Numbers) is for future use only. If a motor vehicle is found in the eBay product
+ catalog, the motor vehicle properties (engine, make, model, trim, and year) will automatically get picked up for
+ that motor vehicle.
Note: Currently, parts compatibility is
+ only applicable for motor vehicles, but it is possible that the Product Compatibility feature is expanded to
+ other (non-vehicle) products in the future.
+ """
+
+ compatibility_properties: Union[Unset, list['NameValueList']] = UNSET
+ notes: Union[Unset, str] = UNSET
+ product_family_properties: Union[Unset, 'ProductFamilyProperties'] = UNSET
+ product_identifier: Union[Unset, 'ProductIdentifier'] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.name_value_list import NameValueList
+ from ..models.product_identifier import ProductIdentifier
+ from ..models.product_family_properties import ProductFamilyProperties
+ compatibility_properties: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.compatibility_properties, Unset):
+ compatibility_properties = []
+ for compatibility_properties_item_data in self.compatibility_properties:
+ compatibility_properties_item = compatibility_properties_item_data.to_dict()
+ compatibility_properties.append(compatibility_properties_item)
+
+
+
+ notes = self.notes
+
+ product_family_properties: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.product_family_properties, Unset):
+ product_family_properties = self.product_family_properties.to_dict()
+
+ product_identifier: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.product_identifier, Unset):
+ product_identifier = self.product_identifier.to_dict()
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if compatibility_properties is not UNSET:
+ field_dict["compatibilityProperties"] = compatibility_properties
+ if notes is not UNSET:
+ field_dict["notes"] = notes
+ if product_family_properties is not UNSET:
+ field_dict["productFamilyProperties"] = product_family_properties
+ if product_identifier is not UNSET:
+ field_dict["productIdentifier"] = product_identifier
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.name_value_list import NameValueList
+ from ..models.product_identifier import ProductIdentifier
+ from ..models.product_family_properties import ProductFamilyProperties
+ d = dict(src_dict)
+ compatibility_properties = []
+ _compatibility_properties = d.pop("compatibilityProperties", UNSET)
+ for compatibility_properties_item_data in (_compatibility_properties or []):
+ compatibility_properties_item = NameValueList.from_dict(compatibility_properties_item_data)
+
+
+
+ compatibility_properties.append(compatibility_properties_item)
+
+
+ notes = d.pop("notes", UNSET)
+
+ _product_family_properties = d.pop("productFamilyProperties", UNSET)
+ product_family_properties: Union[Unset, ProductFamilyProperties]
+ if isinstance(_product_family_properties, Unset):
+ product_family_properties = UNSET
+ else:
+ product_family_properties = ProductFamilyProperties.from_dict(_product_family_properties)
+
+
+
+
+ _product_identifier = d.pop("productIdentifier", UNSET)
+ product_identifier: Union[Unset, ProductIdentifier]
+ if isinstance(_product_identifier, Unset):
+ product_identifier = UNSET
+ else:
+ product_identifier = ProductIdentifier.from_dict(_product_identifier)
+
+
+
+
+ compatible_product = cls(
+ compatibility_properties=compatibility_properties,
+ notes=notes,
+ product_family_properties=product_family_properties,
+ product_identifier=product_identifier,
+ )
+
+
+ compatible_product.additional_properties = d
+ return compatible_product
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/condition_descriptor.py b/ebay_client/generated/inventory/models/condition_descriptor.py
new file mode 100644
index 0000000..d9f2dfd
--- /dev/null
+++ b/ebay_client/generated/inventory/models/condition_descriptor.py
@@ -0,0 +1,121 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="ConditionDescriptor")
+
+
+
+@_attrs_define
+class ConditionDescriptor:
+ """ This type is used by the seller to provide additional information about the condition of an item in a structured
+ format.
+
+ Attributes:
+ additional_info (Union[Unset, str]): This string provides additional information about a condition descriptor.
+ Open text is passed in this field.
In the case of trading cards, this field houses the optional
+ Certification Number condition descriptor for graded cards.
Max Length: 30 characters
+ name (Union[Unset, str]): This string provides the name of a condition descriptor. A numeric ID is passed in
+ this field. This numeric ID maps to the name of a condition descriptor. Condition descriptor name-value pairs
+ provide more information about an item's condition in a structured way.
To retrieve all condition
+ descriptor name numeric IDs for a category, refer to the conditionDescriptorId field returned in the getItemConditionPolicies method of Metadata API.
In the case of trading cards, this
+ field is used to provide condition descriptors for a card. For graded cards, the condition descriptors for
+ Grader and Grade are required, while the condition descriptor for Certification Number is
+ optional. For ungraded cards, only the Card Condition condition descriptor is required.
+ values (Union[Unset, list[str]]): This array provides the value(s) associated with a condition descriptor. One
+ or more numeric IDs is passed in this field. Commas are used as delimiters between successive name/value pairs.
+ These numeric IDs map to the values associated with a condition descriptor name. Condition descriptor name-value
+ pairs provide more information about an item's condition in a structured way.
To retrieve all condition
+ descriptor value numeric IDs for a category, refer to the ConditionDescriptorValueId array returned in
+ the getItemConditionPolicies method of Metadata API.
In the case of trading cards, this
+ field houses the information on the Grader and Grade descriptors of graded cards and the Card
+ Condition descriptor for ungraded cards.
+ """
+
+ additional_info: Union[Unset, str] = UNSET
+ name: Union[Unset, str] = UNSET
+ values: Union[Unset, list[str]] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ additional_info = self.additional_info
+
+ name = self.name
+
+ values: Union[Unset, list[str]] = UNSET
+ if not isinstance(self.values, Unset):
+ values = self.values
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if additional_info is not UNSET:
+ field_dict["additionalInfo"] = additional_info
+ if name is not UNSET:
+ field_dict["name"] = name
+ if values is not UNSET:
+ field_dict["values"] = values
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ additional_info = d.pop("additionalInfo", UNSET)
+
+ name = d.pop("name", UNSET)
+
+ values = cast(list[str], d.pop("values", UNSET))
+
+
+ condition_descriptor = cls(
+ additional_info=additional_info,
+ name=name,
+ values=values,
+ )
+
+
+ condition_descriptor.additional_properties = d
+ return condition_descriptor
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/country_policy.py b/ebay_client/generated/inventory/models/country_policy.py
new file mode 100644
index 0000000..d3aacd0
--- /dev/null
+++ b/ebay_client/generated/inventory/models/country_policy.py
@@ -0,0 +1,109 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="CountryPolicy")
+
+
+
+@_attrs_define
+class CountryPolicy:
+ """ This type specifies custom product compliance and/or take-back policies that apply to a specified country.
+
+ Attributes:
+ country (Union[Unset, str]): The two-letter ISO 3166-1 country code identifying the country to which the policy or policies specified in
+ the corresponding policyIds array will apply. For implementation help, refer to eBay API documentation
+ policy_ids (Union[Unset, list[str]]): An array of custom policy identifiers that apply to the country specified
+ by listingPolicies.
+ regionalTakeBackPolicies.countryPolicies.country.
Product compliance and take-back policy information
+ may be returned using the following methods:- getCustomPolicies
Set policy_types
+ to:PRODUCT_COMPLIANCE for product compliance policiesTAKE_BACK for
+ takeback policies
This returns the list of specified policies and corresponding
+ customPolicyId values a seller has created. - getCustomPolicy with
+
custom_policy_id = customPolicyId
Returns the details of the policy specified by
+ customPolicyId
For information about creating and managing custom policies, refer to the custom_policy resource in
+ the Sell Account API.
+ """
+
+ country: Union[Unset, str] = UNSET
+ policy_ids: Union[Unset, list[str]] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ country = self.country
+
+ policy_ids: Union[Unset, list[str]] = UNSET
+ if not isinstance(self.policy_ids, Unset):
+ policy_ids = self.policy_ids
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if country is not UNSET:
+ field_dict["country"] = country
+ if policy_ids is not UNSET:
+ field_dict["policyIds"] = policy_ids
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ country = d.pop("country", UNSET)
+
+ policy_ids = cast(list[str], d.pop("policyIds", UNSET))
+
+
+ country_policy = cls(
+ country=country,
+ policy_ids=policy_ids,
+ )
+
+
+ country_policy.additional_properties = d
+ return country_policy
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/dimension.py b/ebay_client/generated/inventory/models/dimension.py
new file mode 100644
index 0000000..e3b5929
--- /dev/null
+++ b/ebay_client/generated/inventory/models/dimension.py
@@ -0,0 +1,129 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="Dimension")
+
+
+
+@_attrs_define
+class Dimension:
+ """ This type is used to specify the dimensions (and the unit used to measure those dimensions) of a shipping package.
+ The dimensions container is conditionally required if the seller will be offering calculated
+ shipping rates to determine shipping cost. See the Calculated shipping help page for more information on calculated shipping.
+
+ Attributes:
+ height (Union[Unset, float]): The actual height (in the measurement unit specified in the unit
+ field) of the shipping package. All fields of the dimensions container are required if package
+ dimensions are specified.
If a shipping package measured 21.5 inches in length, 15.0 inches in width,
+ and 12.0 inches in height, the dimensions container would look as follows:
+ "dimensions": {
"length": 21.5,
"width": 15.0,
"height": 12.0,
"unit": "INCH"
}
+
+ length (Union[Unset, float]): The actual length (in the measurement unit specified in the unit
+ field) of the shipping package. All fields of the dimensions container are required if package
+ dimensions are specified.
If a shipping package measured 21.5 inches in length, 15.0 inches in width,
+ and 12.0 inches in height, the dimensions container would look as follows:
+ "dimensions": {
"length": 21.5,
"width": 15.0,
"height": 12.0,
"unit": "INCH"
}
+
+ unit (Union[Unset, str]): The unit of measurement used to specify the dimensions of a shipping package. All
+ fields of the dimensions container are required if package dimensions are specified. If the
+ English system of measurement is being used, the applicable values for dimension units are FEET and
+ INCH. If the metric system of measurement is being used, the applicable values for weight units are
+ METER and CENTIMETER. The metric system is used by most countries outside of the US.
+ For implementation help, refer to eBay API documentation
+ width (Union[Unset, float]): The actual width (in the measurement unit specified in the unit
+ field) of the shipping package. All fields of the dimensions container are required if package
+ dimensions are specified.
If a shipping package measured 21.5 inches in length, 15.0 inches in width, and
+ 12.0 inches in height, the dimensions container would look as follows:
+ "dimensions": {
"length": 21.5,
"width": 15.0,
"height": 12.0,
"unit": "INCH"
}
+
+ """
+
+ height: Union[Unset, float] = UNSET
+ length: Union[Unset, float] = UNSET
+ unit: Union[Unset, str] = UNSET
+ width: Union[Unset, float] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ height = self.height
+
+ length = self.length
+
+ unit = self.unit
+
+ width = self.width
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if height is not UNSET:
+ field_dict["height"] = height
+ if length is not UNSET:
+ field_dict["length"] = length
+ if unit is not UNSET:
+ field_dict["unit"] = unit
+ if width is not UNSET:
+ field_dict["width"] = width
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ height = d.pop("height", UNSET)
+
+ length = d.pop("length", UNSET)
+
+ unit = d.pop("unit", UNSET)
+
+ width = d.pop("width", UNSET)
+
+ dimension = cls(
+ height=height,
+ length=length,
+ unit=unit,
+ width=width,
+ )
+
+
+ dimension.additional_properties = d
+ return dimension
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/disable_inventory_location_response_200.py b/ebay_client/generated/inventory/models/disable_inventory_location_response_200.py
new file mode 100644
index 0000000..587479c
--- /dev/null
+++ b/ebay_client/generated/inventory/models/disable_inventory_location_response_200.py
@@ -0,0 +1,63 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+
+
+
+
+
+
+T = TypeVar("T", bound="DisableInventoryLocationResponse200")
+
+
+
+@_attrs_define
+class DisableInventoryLocationResponse200:
+ """
+ """
+
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ disable_inventory_location_response_200 = cls(
+ )
+
+
+ disable_inventory_location_response_200.additional_properties = d
+ return disable_inventory_location_response_200
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/document.py b/ebay_client/generated/inventory/models/document.py
new file mode 100644
index 0000000..ae87a40
--- /dev/null
+++ b/ebay_client/generated/inventory/models/document.py
@@ -0,0 +1,81 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="Document")
+
+
+
+@_attrs_define
+class Document:
+ """ This type provides an array of one or more regulatory documents associated with a listing for Regulatory Compliance.
+
+ Attributes:
+ document_id (Union[Unset, str]): The unique identifier of a regulatory document associated with the
+ listing.
This value can be found in the response of the createDocument method of the
+ Media API.
+ """
+
+ document_id: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ document_id = self.document_id
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if document_id is not UNSET:
+ field_dict["documentId"] = document_id
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ document_id = d.pop("documentId", UNSET)
+
+ document = cls(
+ document_id=document_id,
+ )
+
+
+ document.additional_properties = d
+ return document
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/ebay_offer_details_with_all.py b/ebay_client/generated/inventory/models/ebay_offer_details_with_all.py
new file mode 100644
index 0000000..ed2ffc0
--- /dev/null
+++ b/ebay_client/generated/inventory/models/ebay_offer_details_with_all.py
@@ -0,0 +1,466 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.listing_details import ListingDetails
+ from ..models.charity import Charity
+ from ..models.extended_producer_responsibility import ExtendedProducerResponsibility
+ from ..models.tax import Tax
+ from ..models.listing_policies import ListingPolicies
+ from ..models.regulatory import Regulatory
+ from ..models.pricing_summary import PricingSummary
+
+
+
+
+
+T = TypeVar("T", bound="EbayOfferDetailsWithAll")
+
+
+
+@_attrs_define
+class EbayOfferDetailsWithAll:
+ """ This type provides details of an offer, and is used by the response payloads of the getOffer and
+ the getOffers calls.
+
+ Attributes:
+ available_quantity (Union[Unset, int]): This integer value indicates the quantity of the inventory item
+ (specified by the sku value) that will be available for purchase by buyers shopping on the eBay
+ site specified in the marketplaceId field.
+ category_id (Union[Unset, str]): The unique identifier of the primary eBay category that the inventory item is
+ listed under. This field is always returned for published offers, but is only returned if set for unpublished
+ offers.
+ charity (Union[Unset, Charity]): This type is used to identify the charitable organization associated with the
+ listing, and the percentage of the sale proceeds that the charitable organization will receive for each sale
+ generated by the listing.
In order to receive a percentage of the sales proceeds, the charitable
+ organization must be registered with the PayPal Giving Fund, which is a partner of eBay for Charity.
+ extended_producer_responsibility (Union[Unset, ExtendedProducerResponsibility]): This type provides IDs for the
+ producer or importer related to the new item, packaging, added documentation, or an eco-participation fee. In
+ some markets, such as in France, this may be the importer of the item.
+ format_ (Union[Unset, str]): This enumerated value indicates the listing format of the offer. For implementation
+ help, refer to eBay API
+ documentation
+ hide_buyer_details (Union[Unset, bool]): This field is returned as true if the private listing
+ feature has been enabled for the offer. Sellers may want to use this feature when they believe that a listing's
+ potential bidders/buyers would not want their obfuscated user IDs (and feedback scores) exposed to other users.
+
This field is always returned even if not explicitly set in the offer. It defaults to
+ false, so will get returned as false if seller does not set this feature with a
+ 'Create' or 'Update' offer method.
+ include_catalog_product_details (Union[Unset, bool]): This field indicates whether or not eBay product catalog
+ details are applied to a listing. A value of true indicates the listing corresponds to the eBay
+ product associated with the provided product identifier. The product identifier is provided in
+ createOrReplaceInventoryItem.Note: Though the
+ includeCatalogProductDetails parameter is not required to be submitted in the request, the
+ parameter defaults to 'true' if omitted.
+ listing (Union[Unset, ListingDetails]): This type is used by the listing container in the
+ getOffer and getOffers calls to provide the eBay listing ID, the listing
+ status, and quantity sold for the offer. The listing container is only returned for published
+ offers, and is not returned for unpublished offers.
+ listing_description (Union[Unset, str]): The description of the eBay listing that is part of the unpublished or
+ published offer. This field is always returned for published offers, but is only returned if set for unpublished
+ offers.
Max Length: 500000 (which includes HTML markup/tags)
+ listing_duration (Union[Unset, str]): This field indicates the number of days that the listing will be
+ active.
This field is returned for both auction and fixed-price listings; however, the value returned for
+ fixed-price listings will always be GTC. The GTC (Good 'Til Cancelled) listings are automatically
+ renewed each calendar month until the seller decides to end the listing.
+ Note: If the listing duration expires for an auction offer, the listing then becomes available
+ as a fixed-price offer and will be GTC. For implementation help, refer to eBay API
+ documentation
+ listing_policies (Union[Unset, ListingPolicies]): This type is used to identify business policies including
+ payment, return, and fulfillment policies, as well as to identify custom policies. These policies are, or will
+ be, associated with the listing. Every published offer must have a payment, return, and fulfillment business
+ policy associated with it. Additionally, depending on the country/countries in which sellers are offering
+ products and/or services to consumers (e.g., residents of the European Union,) specifying additional polices may
+ be required.
This type is also used to override the shipping costs of one or more shipping service
+ options that are associated with the fulfillment policy, to enable eBay Plus eligibility for a listing, or to
+ enable the Best Offer feature on the listing.
+ listing_start_date (Union[Unset, str]): This timestamp is the date/time (in UTC format) that the seller set for
+ the scheduled listing. With the scheduled listing feature, the seller can set a time in the future that the
+ listing will become active, instead of the listing becoming active immediately after a
+ publishOffer call.
For example: 2023-05-30T19:08:00Z.
Scheduled listings do not
+ always start at the exact date/time specified by the seller, but the date/time of the timestamp returned in
+ getOffer/getOffers will be the same as the timestamp passed into a 'Create' or
+ 'Update' offer call.
This field is returned if set for an offer.
+ lot_size (Union[Unset, int]): This field is only applicable and returned if the listing is a lot listing. A lot
+ listing is a listing that has multiple quantity of the same product. An example would be a set of four identical
+ car tires. The integer value in this field is the number of identical items being sold through the lot listing.
+ marketplace_id (Union[Unset, str]): This enumeration value is the unique identifier of the eBay site on which
+ the offer is available, or will be made available. For implementation help, refer to eBay API documentation
+ merchant_location_key (Union[Unset, str]): The unique identifier of the inventory location. This identifier is
+ set up by the merchant when the inventory location is first created with the
+ createInventoryLocation call. Once this value is set for an inventory location, it can not be
+ modified. To get more information about this inventory location, the getInventoryLocation
+ method can be used, passing in this value at the end of the call URI.
This field is always returned for
+ published offers, but is only returned if set for unpublished offers.
Max length: 36
+ offer_id (Union[Unset, str]): The unique identifier of the offer. This identifier is used in many offer-related
+ calls, and it is also used in the bulkUpdatePriceQuantity call.
+ pricing_summary (Union[Unset, PricingSummary]): This type is used to specify the listing price for the product
+ and settings for the Minimum Advertised Price and Strikethrough Pricing features. The price
+ field must be supplied before an offer is published, but a seller may create an offer without supplying a price
+ initially. The Minimum Advertised Price feature is only available on the US site. Strikethrough Pricing is
+ available on the US, eBay Motors, UK, Germany, Canada (English and French), France, Italy, and Spain sites.
+ quantity_limit_per_buyer (Union[Unset, int]): This field is only applicable and set if the seller wishes to set
+ a restriction on the purchase quantity of an inventory item per seller. If this field is set by the seller for
+ the offer, then each distinct buyer may purchase up to, but not exceed the quantity in this field. So, if this
+ field's value is 5, each buyer may purchase a quantity of the inventory item between one and five,
+ and the purchases can occur in one multiple-quantity purchase, or over multiple transactions. If a buyer
+ attempts to purchase one or more of these products, and the cumulative quantity will take the buyer beyond the
+ quantity limit, that buyer will be blocked from that purchase.
+ regulatory (Union[Unset, Regulatory]): Type defining regulatory information that the seller is required to
+ disclose.
+ secondary_category_id (Union[Unset, str]): The unique identifier for a secondary category. This field is
+ applicable if the seller decides to list the item under two categories. Sellers can use the getCategorySuggestions method of the Taxonomy API to retrieve suggested category ID values.
+ A fee may be charged when adding a secondary category to a listing.
Note: You cannot list US eBay Motors vehicles in two
+ categories. However, you can list Parts & Accessories in two categories.
+ sku (Union[Unset, str]): This is the seller-defined SKU value of the product in the offer.
Max
+ Length: 50
+ status (Union[Unset, str]): The enumeration value in this field specifies the status of the offer - either
+ PUBLISHED or UNPUBLISHED. For implementation help, refer to eBay API documentation
+ store_category_names (Union[Unset, list[str]]): This container is returned if the seller chose to place the
+ inventory item into one or two eBay store categories that the seller has set up for their eBay store. The string
+ value(s) in this container will be the full path(s) to the eBay store categories, as shown below:
+ "storeCategoryNames": [
"/Fashion/Men/Shirts",
"/Fashion/Men/Accessories" ],
+ tax (Union[Unset, Tax]): This type is used to enable the use of a sales-tax table, to pass in a tax exception
+ category code, or to specify a VAT percentage.
Note: Sales-tax tables are
+ available only for the US and Canada marketplaces.
+ """
+
+ available_quantity: Union[Unset, int] = UNSET
+ category_id: Union[Unset, str] = UNSET
+ charity: Union[Unset, 'Charity'] = UNSET
+ extended_producer_responsibility: Union[Unset, 'ExtendedProducerResponsibility'] = UNSET
+ format_: Union[Unset, str] = UNSET
+ hide_buyer_details: Union[Unset, bool] = UNSET
+ include_catalog_product_details: Union[Unset, bool] = UNSET
+ listing: Union[Unset, 'ListingDetails'] = UNSET
+ listing_description: Union[Unset, str] = UNSET
+ listing_duration: Union[Unset, str] = UNSET
+ listing_policies: Union[Unset, 'ListingPolicies'] = UNSET
+ listing_start_date: Union[Unset, str] = UNSET
+ lot_size: Union[Unset, int] = UNSET
+ marketplace_id: Union[Unset, str] = UNSET
+ merchant_location_key: Union[Unset, str] = UNSET
+ offer_id: Union[Unset, str] = UNSET
+ pricing_summary: Union[Unset, 'PricingSummary'] = UNSET
+ quantity_limit_per_buyer: Union[Unset, int] = UNSET
+ regulatory: Union[Unset, 'Regulatory'] = UNSET
+ secondary_category_id: Union[Unset, str] = UNSET
+ sku: Union[Unset, str] = UNSET
+ status: Union[Unset, str] = UNSET
+ store_category_names: Union[Unset, list[str]] = UNSET
+ tax: Union[Unset, 'Tax'] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.listing_details import ListingDetails
+ from ..models.charity import Charity
+ from ..models.extended_producer_responsibility import ExtendedProducerResponsibility
+ from ..models.tax import Tax
+ from ..models.listing_policies import ListingPolicies
+ from ..models.regulatory import Regulatory
+ from ..models.pricing_summary import PricingSummary
+ available_quantity = self.available_quantity
+
+ category_id = self.category_id
+
+ charity: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.charity, Unset):
+ charity = self.charity.to_dict()
+
+ extended_producer_responsibility: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.extended_producer_responsibility, Unset):
+ extended_producer_responsibility = self.extended_producer_responsibility.to_dict()
+
+ format_ = self.format_
+
+ hide_buyer_details = self.hide_buyer_details
+
+ include_catalog_product_details = self.include_catalog_product_details
+
+ listing: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.listing, Unset):
+ listing = self.listing.to_dict()
+
+ listing_description = self.listing_description
+
+ listing_duration = self.listing_duration
+
+ listing_policies: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.listing_policies, Unset):
+ listing_policies = self.listing_policies.to_dict()
+
+ listing_start_date = self.listing_start_date
+
+ lot_size = self.lot_size
+
+ marketplace_id = self.marketplace_id
+
+ merchant_location_key = self.merchant_location_key
+
+ offer_id = self.offer_id
+
+ pricing_summary: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.pricing_summary, Unset):
+ pricing_summary = self.pricing_summary.to_dict()
+
+ quantity_limit_per_buyer = self.quantity_limit_per_buyer
+
+ regulatory: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.regulatory, Unset):
+ regulatory = self.regulatory.to_dict()
+
+ secondary_category_id = self.secondary_category_id
+
+ sku = self.sku
+
+ status = self.status
+
+ store_category_names: Union[Unset, list[str]] = UNSET
+ if not isinstance(self.store_category_names, Unset):
+ store_category_names = self.store_category_names
+
+
+
+ tax: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.tax, Unset):
+ tax = self.tax.to_dict()
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if available_quantity is not UNSET:
+ field_dict["availableQuantity"] = available_quantity
+ if category_id is not UNSET:
+ field_dict["categoryId"] = category_id
+ if charity is not UNSET:
+ field_dict["charity"] = charity
+ if extended_producer_responsibility is not UNSET:
+ field_dict["extendedProducerResponsibility"] = extended_producer_responsibility
+ if format_ is not UNSET:
+ field_dict["format"] = format_
+ if hide_buyer_details is not UNSET:
+ field_dict["hideBuyerDetails"] = hide_buyer_details
+ if include_catalog_product_details is not UNSET:
+ field_dict["includeCatalogProductDetails"] = include_catalog_product_details
+ if listing is not UNSET:
+ field_dict["listing"] = listing
+ if listing_description is not UNSET:
+ field_dict["listingDescription"] = listing_description
+ if listing_duration is not UNSET:
+ field_dict["listingDuration"] = listing_duration
+ if listing_policies is not UNSET:
+ field_dict["listingPolicies"] = listing_policies
+ if listing_start_date is not UNSET:
+ field_dict["listingStartDate"] = listing_start_date
+ if lot_size is not UNSET:
+ field_dict["lotSize"] = lot_size
+ if marketplace_id is not UNSET:
+ field_dict["marketplaceId"] = marketplace_id
+ if merchant_location_key is not UNSET:
+ field_dict["merchantLocationKey"] = merchant_location_key
+ if offer_id is not UNSET:
+ field_dict["offerId"] = offer_id
+ if pricing_summary is not UNSET:
+ field_dict["pricingSummary"] = pricing_summary
+ if quantity_limit_per_buyer is not UNSET:
+ field_dict["quantityLimitPerBuyer"] = quantity_limit_per_buyer
+ if regulatory is not UNSET:
+ field_dict["regulatory"] = regulatory
+ if secondary_category_id is not UNSET:
+ field_dict["secondaryCategoryId"] = secondary_category_id
+ if sku is not UNSET:
+ field_dict["sku"] = sku
+ if status is not UNSET:
+ field_dict["status"] = status
+ if store_category_names is not UNSET:
+ field_dict["storeCategoryNames"] = store_category_names
+ if tax is not UNSET:
+ field_dict["tax"] = tax
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.listing_details import ListingDetails
+ from ..models.charity import Charity
+ from ..models.extended_producer_responsibility import ExtendedProducerResponsibility
+ from ..models.tax import Tax
+ from ..models.listing_policies import ListingPolicies
+ from ..models.regulatory import Regulatory
+ from ..models.pricing_summary import PricingSummary
+ d = dict(src_dict)
+ available_quantity = d.pop("availableQuantity", UNSET)
+
+ category_id = d.pop("categoryId", UNSET)
+
+ _charity = d.pop("charity", UNSET)
+ charity: Union[Unset, Charity]
+ if isinstance(_charity, Unset):
+ charity = UNSET
+ else:
+ charity = Charity.from_dict(_charity)
+
+
+
+
+ _extended_producer_responsibility = d.pop("extendedProducerResponsibility", UNSET)
+ extended_producer_responsibility: Union[Unset, ExtendedProducerResponsibility]
+ if isinstance(_extended_producer_responsibility, Unset):
+ extended_producer_responsibility = UNSET
+ else:
+ extended_producer_responsibility = ExtendedProducerResponsibility.from_dict(_extended_producer_responsibility)
+
+
+
+
+ format_ = d.pop("format", UNSET)
+
+ hide_buyer_details = d.pop("hideBuyerDetails", UNSET)
+
+ include_catalog_product_details = d.pop("includeCatalogProductDetails", UNSET)
+
+ _listing = d.pop("listing", UNSET)
+ listing: Union[Unset, ListingDetails]
+ if isinstance(_listing, Unset):
+ listing = UNSET
+ else:
+ listing = ListingDetails.from_dict(_listing)
+
+
+
+
+ listing_description = d.pop("listingDescription", UNSET)
+
+ listing_duration = d.pop("listingDuration", UNSET)
+
+ _listing_policies = d.pop("listingPolicies", UNSET)
+ listing_policies: Union[Unset, ListingPolicies]
+ if isinstance(_listing_policies, Unset):
+ listing_policies = UNSET
+ else:
+ listing_policies = ListingPolicies.from_dict(_listing_policies)
+
+
+
+
+ listing_start_date = d.pop("listingStartDate", UNSET)
+
+ lot_size = d.pop("lotSize", UNSET)
+
+ marketplace_id = d.pop("marketplaceId", UNSET)
+
+ merchant_location_key = d.pop("merchantLocationKey", UNSET)
+
+ offer_id = d.pop("offerId", UNSET)
+
+ _pricing_summary = d.pop("pricingSummary", UNSET)
+ pricing_summary: Union[Unset, PricingSummary]
+ if isinstance(_pricing_summary, Unset):
+ pricing_summary = UNSET
+ else:
+ pricing_summary = PricingSummary.from_dict(_pricing_summary)
+
+
+
+
+ quantity_limit_per_buyer = d.pop("quantityLimitPerBuyer", UNSET)
+
+ _regulatory = d.pop("regulatory", UNSET)
+ regulatory: Union[Unset, Regulatory]
+ if isinstance(_regulatory, Unset):
+ regulatory = UNSET
+ else:
+ regulatory = Regulatory.from_dict(_regulatory)
+
+
+
+
+ secondary_category_id = d.pop("secondaryCategoryId", UNSET)
+
+ sku = d.pop("sku", UNSET)
+
+ status = d.pop("status", UNSET)
+
+ store_category_names = cast(list[str], d.pop("storeCategoryNames", UNSET))
+
+
+ _tax = d.pop("tax", UNSET)
+ tax: Union[Unset, Tax]
+ if isinstance(_tax, Unset):
+ tax = UNSET
+ else:
+ tax = Tax.from_dict(_tax)
+
+
+
+
+ ebay_offer_details_with_all = cls(
+ available_quantity=available_quantity,
+ category_id=category_id,
+ charity=charity,
+ extended_producer_responsibility=extended_producer_responsibility,
+ format_=format_,
+ hide_buyer_details=hide_buyer_details,
+ include_catalog_product_details=include_catalog_product_details,
+ listing=listing,
+ listing_description=listing_description,
+ listing_duration=listing_duration,
+ listing_policies=listing_policies,
+ listing_start_date=listing_start_date,
+ lot_size=lot_size,
+ marketplace_id=marketplace_id,
+ merchant_location_key=merchant_location_key,
+ offer_id=offer_id,
+ pricing_summary=pricing_summary,
+ quantity_limit_per_buyer=quantity_limit_per_buyer,
+ regulatory=regulatory,
+ secondary_category_id=secondary_category_id,
+ sku=sku,
+ status=status,
+ store_category_names=store_category_names,
+ tax=tax,
+ )
+
+
+ ebay_offer_details_with_all.additional_properties = d
+ return ebay_offer_details_with_all
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/ebay_offer_details_with_id.py b/ebay_client/generated/inventory/models/ebay_offer_details_with_id.py
new file mode 100644
index 0000000..6562e16
--- /dev/null
+++ b/ebay_client/generated/inventory/models/ebay_offer_details_with_id.py
@@ -0,0 +1,440 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.charity import Charity
+ from ..models.extended_producer_responsibility import ExtendedProducerResponsibility
+ from ..models.tax import Tax
+ from ..models.regulatory import Regulatory
+ from ..models.pricing_summary import PricingSummary
+ from ..models.listing_policies import ListingPolicies
+
+
+
+
+
+T = TypeVar("T", bound="EbayOfferDetailsWithId")
+
+
+
+@_attrs_define
+class EbayOfferDetailsWithId:
+ """ updateOffer
+ call. Every field that is currently set with the unpublished/published offer must also be passed into the
+ updateOffer call, even those fields whose values are not changing. Note that for published offers,
+ a successful updateOffer call will actually update the active eBay listing with whatever changes
+ were made.
+
+ Attributes:
+ available_quantity (Union[Unset, int]): This integer value sets the quantity of the inventory item that will be
+ available through the offer. Quantity must be set to 1 or more in order for the inventory item to
+ be purchasable. This value should not be more than the quantity that is specified for the inventory item record.
+ For auction listings, this value must be 1.
If this field exists for the current
+ unpublished or published offer, it should be provided again in the updateOffer call, even if
+ the value is not changing. If this particular field is omitted in an updateOffer call, the
+ general available quantity set for the inventory item record may be used instead, and this may not be accurate
+ if the inventory item is being sold across multiple marketplaces.
+ category_id (Union[Unset, str]): The unique identifier of the eBay category that the inventory item is/will be
+ listed under. This field is not immediately required for an unpublished offer, but will be required before
+ publishing the offer. Sellers can use the getCategorySuggestions method of the Taxonomy API to retrieve suggested category ID values.
+ The seller passes in a query string like "iPhone 6", and category ID values for suggested categories
+ are returned in the response.
If this field exists for the current unpublished offer, it should be
+ provided again in the updateOffer call, even if the eBay category is not changing. For a
+ published offer (aka active eBay listing), this field must be provided or an error may occur. The eBay category
+ of an active eBay listing cannot be changed once the listing has one or more sales, or if the listing is
+ scheduled to end in less than 12 hours.
Important!Publish offer note: This field
+ is required before an offer can be published to create an active listing.
+ charity (Union[Unset, Charity]): This type is used to identify the charitable organization associated with the
+ listing, and the percentage of the sale proceeds that the charitable organization will receive for each sale
+ generated by the listing.
In order to receive a percentage of the sales proceeds, the charitable
+ organization must be registered with the PayPal Giving Fund, which is a partner of eBay for Charity.
+ extended_producer_responsibility (Union[Unset, ExtendedProducerResponsibility]): This type provides IDs for the
+ producer or importer related to the new item, packaging, added documentation, or an eco-participation fee. In
+ some markets, such as in France, this may be the importer of the item.
+ hide_buyer_details (Union[Unset, bool]): This field is included and set to true if the seller
+ wishes to update a published or unpublished offer with the private listing feature. Alternatively, the seller
+ could also remove the private listing feature (if already set for a published or unpublished offer) by including
+ this field and setting it to false.
Sellers may want to use this option when they believe
+ that a listing's potential bidders/buyers would not want their obfuscated user IDs (and feedback scores) exposed
+ to other users.
+ include_catalog_product_details (Union[Unset, bool]): This field indicates whether or not eBay product catalog
+ details are applied to a listing. A value of true indicates the listing corresponds to the eBay
+ product associated with the provided product identifier. The product identifier is provided in
+ createOrReplaceInventoryItem.Note: Though the
+ includeCatalogProductDetails parameter is not required to be submitted in the request, the
+ parameter defaults to 'true' if omitted.
+ listing_description (Union[Unset, str]): The text in this field is (published offers), or will become
+ (unpublished offers) the description of the eBay listing. This field is not immediately required for an
+ unpublished offer, but will be required before publishing the offer. Note that if the
+ listingDescription field was omitted in the createOffer call for the offer,
+ the offer entity should have picked up the text provided in the product.description field of
+ the inventory item record, or if the inventory item is part of a group, the offer entity should have picked up
+ the text provided in the description field of the inventory item group record.
HTML tags
+ and markup can be used in listing descriptions, but each character counts toward the max length
+ limit.
Note: To ensure that their short listing description is
+ optimized when viewed on mobile devices, sellers should strongly consider using eBay's View Item
+ description summary feature when listing their items. Keep in mind that the 'short' listing description is
+ what prospective buyers first see when they view the listing on a mobile device. The 'full' listing description
+ is also available to mobile users when they click on the short listing description, but the full description is
+ not automatically optimized for viewing in mobile devices, and many users won't even drill down to the full
+ description.
Using HTML div and span tag attributes, this feature allows sellers to customize and fully
+ control the short listing description that is displayed to prospective buyers when viewing the listing on a
+ mobile device. The short listing description on mobile devices is limited to 800 characters, and whenever the
+ full listing description (provided in this field, in UI, or seller tool) exceeds this limit, eBay uses a special
+ algorithm to derive the best possible short listing description within the 800-character limit. However, due to
+ some short listing description content being removed, it is definitely not ideal for the seller, and could lead
+ to a bad buyer experience and possibly to a Significantly not as described (SNAD) case, since the buyer may not
+ get complete details on the item when viewing the short listing description. See the eBay help page for more
+ details on using the HTML div and span tags.
If this field exists for the current unpublished
+ offer, it should be provided again in the updateOffer call, even if the text is not changing.
+ For a published offer (aka active eBay listing), this field must be provided or an error may
+ occur.
Max length: 500000 (which includes HTML markup/tags)
+ listing_duration (Union[Unset, str]): This field indicates the number of days that the listing will be active.
+ For fixed-price listings, this value must be set to GTC, but auction listings support different
+ listing durations.
The GTC (Good 'Til Cancelled) listings are automatically renewed each calendar month
+ until the seller decides to end the listing.
Note: If the
+ listing duration expires for an auction offer without a winning bidder, the listing then becomes available as a
+ fixed-price offer and listing duration will be GTC.
Important!Publish offer note: This field
+ is required before an offer can be published to create an active listing.
For
+ implementation help, refer to eBay API documentation
+ listing_policies (Union[Unset, ListingPolicies]): This type is used to identify business policies including
+ payment, return, and fulfillment policies, as well as to identify custom policies. These policies are, or will
+ be, associated with the listing. Every published offer must have a payment, return, and fulfillment business
+ policy associated with it. Additionally, depending on the country/countries in which sellers are offering
+ products and/or services to consumers (e.g., residents of the European Union,) specifying additional polices may
+ be required.
This type is also used to override the shipping costs of one or more shipping service
+ options that are associated with the fulfillment policy, to enable eBay Plus eligibility for a listing, or to
+ enable the Best Offer feature on the listing.
+ listing_start_date (Union[Unset, str]): This field can be used with an unpublished offer if the seller wants to
+ specify a time in the future that the listing will become active on eBay. The timestamp supplied in this field
+ should be in UTC format, and it should be far enough in the future so that the seller will have enough time to
+ publish the listing with the publishOffer method.
For example:
+ 2023-05-30T19:08:00Z.
This field is optional, and it doesn't apply to offers where the corresponding
+ listing is already active. If this field is not provided, the listing starts immediately after a successful
+ publishOffer method.
+ lot_size (Union[Unset, int]): This field is only applicable if the listing is a lot listing. A lot listing is a
+ listing that has multiple quantity of the same item, such as four identical tires being sold as a single offer,
+ or it can be a mixed lot of similar items, such as used clothing items or an assortment of baseball cards.
+ Whether the lot listing involved identical items or a mixed lot, the integer value passed into this field is the
+ total number of items in the lot. Lots can be used for auction and fixed-price listings.
+ merchant_location_key (Union[Unset, str]): The unique identifier of a merchant's inventory location (where the
+ inventory item in the offer is located).
To get more information about inventory locations, the getInventoryLocations method can be used.br>
Note: This
+ field is not initially required upon first creating an offer, but will become required before an offer can be
+ published.
Max length: 36
+ pricing_summary (Union[Unset, PricingSummary]): This type is used to specify the listing price for the product
+ and settings for the Minimum Advertised Price and Strikethrough Pricing features. The price
+ field must be supplied before an offer is published, but a seller may create an offer without supplying a price
+ initially. The Minimum Advertised Price feature is only available on the US site. Strikethrough Pricing is
+ available on the US, eBay Motors, UK, Germany, Canada (English and French), France, Italy, and Spain sites.
+ quantity_limit_per_buyer (Union[Unset, int]): This field is only applicable and set if the seller wishes to set
+ a restriction on the purchase quantity per seller. If this field is set by the seller for the offer, then each
+ distinct buyer may purchase up to, but not exceeding the quantity specified for this field. So, if this field's
+ value is 5, each buyer may purchase between one to five of these products, and the purchases can
+ occur in one multiple-quantity purchase, or over multiple transactions. If a buyer attempts to purchase one or
+ more of these products, and the cumulative quantity will take the buyer beyond the quantity limit, that buyer
+ will be blocked from that purchase.
If this field currently exists for an unpublished or published offer,
+ it should be provided again in an updateOffer call, even if the value is not changing.
+ regulatory (Union[Unset, Regulatory]): Type defining regulatory information that the seller is required to
+ disclose.
+ secondary_category_id (Union[Unset, str]): The unique identifier for a secondary category. This field is
+ applicable if the seller decides to list the item under two categories. Sellers can use the getCategorySuggestions method of the Taxonomy API to retrieve suggested category ID values.
+ A fee may be charged when adding a secondary category to a listing.
Note: You cannot list US eBay Motors vehicles in two
+ categories. However, you can list Parts & Accessories in two categories.
+ store_category_names (Union[Unset, list[str]]): This container is used if the seller would like to place the
+ inventory item into one or two store categories that the seller has set up for their eBay store. The string
+ value(s) passed in to this container will be the full path(s) to the store categories, as shown below:
+ "storeCategoryNames": [
"/Fashion/Men/Shirts",
"/Fashion/Men/Accessories" ],
If
+ this field currently exists for an unpublished or published offer, it should be provided again in an
+ updateOffer call, even if the eBay categories are not changing.
+ tax (Union[Unset, Tax]): This type is used to enable the use of a sales-tax table, to pass in a tax exception
+ category code, or to specify a VAT percentage.
Note: Sales-tax tables are
+ available only for the US and Canada marketplaces.
+ """
+
+ available_quantity: Union[Unset, int] = UNSET
+ category_id: Union[Unset, str] = UNSET
+ charity: Union[Unset, 'Charity'] = UNSET
+ extended_producer_responsibility: Union[Unset, 'ExtendedProducerResponsibility'] = UNSET
+ hide_buyer_details: Union[Unset, bool] = UNSET
+ include_catalog_product_details: Union[Unset, bool] = UNSET
+ listing_description: Union[Unset, str] = UNSET
+ listing_duration: Union[Unset, str] = UNSET
+ listing_policies: Union[Unset, 'ListingPolicies'] = UNSET
+ listing_start_date: Union[Unset, str] = UNSET
+ lot_size: Union[Unset, int] = UNSET
+ merchant_location_key: Union[Unset, str] = UNSET
+ pricing_summary: Union[Unset, 'PricingSummary'] = UNSET
+ quantity_limit_per_buyer: Union[Unset, int] = UNSET
+ regulatory: Union[Unset, 'Regulatory'] = UNSET
+ secondary_category_id: Union[Unset, str] = UNSET
+ store_category_names: Union[Unset, list[str]] = UNSET
+ tax: Union[Unset, 'Tax'] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.charity import Charity
+ from ..models.extended_producer_responsibility import ExtendedProducerResponsibility
+ from ..models.tax import Tax
+ from ..models.regulatory import Regulatory
+ from ..models.pricing_summary import PricingSummary
+ from ..models.listing_policies import ListingPolicies
+ available_quantity = self.available_quantity
+
+ category_id = self.category_id
+
+ charity: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.charity, Unset):
+ charity = self.charity.to_dict()
+
+ extended_producer_responsibility: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.extended_producer_responsibility, Unset):
+ extended_producer_responsibility = self.extended_producer_responsibility.to_dict()
+
+ hide_buyer_details = self.hide_buyer_details
+
+ include_catalog_product_details = self.include_catalog_product_details
+
+ listing_description = self.listing_description
+
+ listing_duration = self.listing_duration
+
+ listing_policies: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.listing_policies, Unset):
+ listing_policies = self.listing_policies.to_dict()
+
+ listing_start_date = self.listing_start_date
+
+ lot_size = self.lot_size
+
+ merchant_location_key = self.merchant_location_key
+
+ pricing_summary: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.pricing_summary, Unset):
+ pricing_summary = self.pricing_summary.to_dict()
+
+ quantity_limit_per_buyer = self.quantity_limit_per_buyer
+
+ regulatory: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.regulatory, Unset):
+ regulatory = self.regulatory.to_dict()
+
+ secondary_category_id = self.secondary_category_id
+
+ store_category_names: Union[Unset, list[str]] = UNSET
+ if not isinstance(self.store_category_names, Unset):
+ store_category_names = self.store_category_names
+
+
+
+ tax: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.tax, Unset):
+ tax = self.tax.to_dict()
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if available_quantity is not UNSET:
+ field_dict["availableQuantity"] = available_quantity
+ if category_id is not UNSET:
+ field_dict["categoryId"] = category_id
+ if charity is not UNSET:
+ field_dict["charity"] = charity
+ if extended_producer_responsibility is not UNSET:
+ field_dict["extendedProducerResponsibility"] = extended_producer_responsibility
+ if hide_buyer_details is not UNSET:
+ field_dict["hideBuyerDetails"] = hide_buyer_details
+ if include_catalog_product_details is not UNSET:
+ field_dict["includeCatalogProductDetails"] = include_catalog_product_details
+ if listing_description is not UNSET:
+ field_dict["listingDescription"] = listing_description
+ if listing_duration is not UNSET:
+ field_dict["listingDuration"] = listing_duration
+ if listing_policies is not UNSET:
+ field_dict["listingPolicies"] = listing_policies
+ if listing_start_date is not UNSET:
+ field_dict["listingStartDate"] = listing_start_date
+ if lot_size is not UNSET:
+ field_dict["lotSize"] = lot_size
+ if merchant_location_key is not UNSET:
+ field_dict["merchantLocationKey"] = merchant_location_key
+ if pricing_summary is not UNSET:
+ field_dict["pricingSummary"] = pricing_summary
+ if quantity_limit_per_buyer is not UNSET:
+ field_dict["quantityLimitPerBuyer"] = quantity_limit_per_buyer
+ if regulatory is not UNSET:
+ field_dict["regulatory"] = regulatory
+ if secondary_category_id is not UNSET:
+ field_dict["secondaryCategoryId"] = secondary_category_id
+ if store_category_names is not UNSET:
+ field_dict["storeCategoryNames"] = store_category_names
+ if tax is not UNSET:
+ field_dict["tax"] = tax
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.charity import Charity
+ from ..models.extended_producer_responsibility import ExtendedProducerResponsibility
+ from ..models.tax import Tax
+ from ..models.regulatory import Regulatory
+ from ..models.pricing_summary import PricingSummary
+ from ..models.listing_policies import ListingPolicies
+ d = dict(src_dict)
+ available_quantity = d.pop("availableQuantity", UNSET)
+
+ category_id = d.pop("categoryId", UNSET)
+
+ _charity = d.pop("charity", UNSET)
+ charity: Union[Unset, Charity]
+ if isinstance(_charity, Unset):
+ charity = UNSET
+ else:
+ charity = Charity.from_dict(_charity)
+
+
+
+
+ _extended_producer_responsibility = d.pop("extendedProducerResponsibility", UNSET)
+ extended_producer_responsibility: Union[Unset, ExtendedProducerResponsibility]
+ if isinstance(_extended_producer_responsibility, Unset):
+ extended_producer_responsibility = UNSET
+ else:
+ extended_producer_responsibility = ExtendedProducerResponsibility.from_dict(_extended_producer_responsibility)
+
+
+
+
+ hide_buyer_details = d.pop("hideBuyerDetails", UNSET)
+
+ include_catalog_product_details = d.pop("includeCatalogProductDetails", UNSET)
+
+ listing_description = d.pop("listingDescription", UNSET)
+
+ listing_duration = d.pop("listingDuration", UNSET)
+
+ _listing_policies = d.pop("listingPolicies", UNSET)
+ listing_policies: Union[Unset, ListingPolicies]
+ if isinstance(_listing_policies, Unset):
+ listing_policies = UNSET
+ else:
+ listing_policies = ListingPolicies.from_dict(_listing_policies)
+
+
+
+
+ listing_start_date = d.pop("listingStartDate", UNSET)
+
+ lot_size = d.pop("lotSize", UNSET)
+
+ merchant_location_key = d.pop("merchantLocationKey", UNSET)
+
+ _pricing_summary = d.pop("pricingSummary", UNSET)
+ pricing_summary: Union[Unset, PricingSummary]
+ if isinstance(_pricing_summary, Unset):
+ pricing_summary = UNSET
+ else:
+ pricing_summary = PricingSummary.from_dict(_pricing_summary)
+
+
+
+
+ quantity_limit_per_buyer = d.pop("quantityLimitPerBuyer", UNSET)
+
+ _regulatory = d.pop("regulatory", UNSET)
+ regulatory: Union[Unset, Regulatory]
+ if isinstance(_regulatory, Unset):
+ regulatory = UNSET
+ else:
+ regulatory = Regulatory.from_dict(_regulatory)
+
+
+
+
+ secondary_category_id = d.pop("secondaryCategoryId", UNSET)
+
+ store_category_names = cast(list[str], d.pop("storeCategoryNames", UNSET))
+
+
+ _tax = d.pop("tax", UNSET)
+ tax: Union[Unset, Tax]
+ if isinstance(_tax, Unset):
+ tax = UNSET
+ else:
+ tax = Tax.from_dict(_tax)
+
+
+
+
+ ebay_offer_details_with_id = cls(
+ available_quantity=available_quantity,
+ category_id=category_id,
+ charity=charity,
+ extended_producer_responsibility=extended_producer_responsibility,
+ hide_buyer_details=hide_buyer_details,
+ include_catalog_product_details=include_catalog_product_details,
+ listing_description=listing_description,
+ listing_duration=listing_duration,
+ listing_policies=listing_policies,
+ listing_start_date=listing_start_date,
+ lot_size=lot_size,
+ merchant_location_key=merchant_location_key,
+ pricing_summary=pricing_summary,
+ quantity_limit_per_buyer=quantity_limit_per_buyer,
+ regulatory=regulatory,
+ secondary_category_id=secondary_category_id,
+ store_category_names=store_category_names,
+ tax=tax,
+ )
+
+
+ ebay_offer_details_with_id.additional_properties = d
+ return ebay_offer_details_with_id
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/ebay_offer_details_with_keys.py b/ebay_client/generated/inventory/models/ebay_offer_details_with_keys.py
new file mode 100644
index 0000000..da6c483
--- /dev/null
+++ b/ebay_client/generated/inventory/models/ebay_offer_details_with_keys.py
@@ -0,0 +1,475 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.charity import Charity
+ from ..models.extended_producer_responsibility import ExtendedProducerResponsibility
+ from ..models.tax import Tax
+ from ..models.regulatory import Regulatory
+ from ..models.pricing_summary import PricingSummary
+ from ..models.listing_policies import ListingPolicies
+
+
+
+
+
+T = TypeVar("T", bound="EbayOfferDetailsWithKeys")
+
+
+
+@_attrs_define
+class EbayOfferDetailsWithKeys:
+ """ This type provides details of an offer, and is used by the base request payload of the createOffer
+ and bulkCreateOffer methods.
+
+ Attributes:
+ available_quantity (Union[Unset, int]): This integer value sets the quantity of the inventory item (specified by
+ the sku value) that will be available for purchase by buyers shopping on the eBay site
+ specified in the marketplaceId field. Quantity must be set to 1 or more in order
+ for the inventory item to be purchasable, but this field is not necessarily required, even for published offers,
+ if the general quantity of the inventory item has already been set in the inventory item record.
For
+ auction listings, this value must be 1.
Note: The
+ availableQuantity field if set here overrides the quantity field set in the inventory item. See
+ the note in Offer
+ fields for details.
+ category_id (Union[Unset, str]): The unique identifier of the eBay category that the product will be listed
+ under. This field is not immediately required upon creating an offer, but will be required before publishing the
+ offer.
Sellers can use the getCategorySuggestions method of the Taxonomy API to retrieve suggested category ID values.
+ The seller passes in a query string like "iPhone 6", and category ID values for suggested categories
+ are returned in the response.
Important!Publish offer note: This field is required before an
+ offer can be published to create an active listing.
Note: When listing in categoryID 173651 (Auto Performance Tuning Devices &
+ Software), use of catalog products is required. For more information, see Tuning devices and
+ software.
+ charity (Union[Unset, Charity]): This type is used to identify the charitable organization associated with the
+ listing, and the percentage of the sale proceeds that the charitable organization will receive for each sale
+ generated by the listing.
In order to receive a percentage of the sales proceeds, the charitable
+ organization must be registered with the PayPal Giving Fund, which is a partner of eBay for Charity.
+ extended_producer_responsibility (Union[Unset, ExtendedProducerResponsibility]): This type provides IDs for the
+ producer or importer related to the new item, packaging, added documentation, or an eco-participation fee. In
+ some markets, such as in France, this may be the importer of the item.
+ format_ (Union[Unset, str]): This enumerated value indicates the listing format of the offer.
Supported
+ values are FIXED_PRICE and AUCTION. For implementation help, refer to eBay API documentation
+ hide_buyer_details (Union[Unset, bool]): This field is included and set to true if the seller
+ wishes to create a private listing.
Sellers may want to use this option when they believe that a
+ listing's potential bidders/buyers would not want their obfuscated user IDs (and feedback scores) exposed to
+ other users.
+ include_catalog_product_details (Union[Unset, bool]): This field indicates whether or not eBay product catalog
+ details are applied to a listing. A value of true indicates the listing corresponds to the eBay
+ product associated with the provided product identifier. The product identifier is provided in
+ createOrReplaceInventoryItem.
Default: trueNote: Though the includeCatalogProductDetails parameter is
+ not required to be submitted in the request, the parameter defaults to true if omitted.
+ listing_description (Union[Unset, str]): The text in this field is (published offers), or will become
+ (unpublished offers) the description of the eBay listing. This field is not immediately required for an
+ unpublished offer, but will be required before publishing the offer. Note that if the
+ listingDescription field was omitted in the createOffer call for the offer,
+ the offer entity should have picked up the text provided in the product.description field of
+ the inventory item record, or if the inventory item is part of a group, the offer entity should have picked up
+ the text provided in the description field of the inventory item group record.
HTML tags
+ and markup can be used in listing descriptions, but each character counts toward the max length
+ limit.
Note: To ensure that their short listing description is
+ optimized when viewed on mobile devices, sellers should strongly consider using eBay's View Item
+ description summary feature when listing their items. Keep in mind that the 'short' listing description is
+ what prospective buyers first see when they view the listing on a mobile device. The 'full' listing description
+ is also available to mobile users when they click on the short listing description, but the full description is
+ not automatically optimized for viewing in mobile devices, and many users won't even drill down to the full
+ description.
Using HTML div and span tag attributes, this feature allows sellers to customize and fully
+ control the short listing description that is displayed to prospective buyers when viewing the listing on a
+ mobile device. The short listing description on mobile devices is limited to 800 characters, and whenever the
+ full listing description (provided in this field, in UI, or seller tool) exceeds this limit, eBay uses a special
+ algorithm to derive the best possible short listing description within the 800-character limit. However, due to
+ some short listing description content being removed, it is definitely not ideal for the seller, and could lead
+ to a bad buyer experience and possibly to a Significantly not as described (SNAD) case, since the buyer may not
+ get complete details on the item when viewing the short listing description. See the eBay help page for more
+ details on using the HTML div and span tags.
Max length: 500000 (which includes
+ HTML markup/tags)
+ listing_duration (Union[Unset, str]): This field indicates the number of days that the listing will be active.
+ For fixed-price listings, this value must be set to GTC, but auction listings support different
+ listing durations.
The GTC (Good 'Til Cancelled) listings are automatically renewed each calendar month
+ until the seller decides to end the listing.
Note: If the
+ listing duration expires for an auction offer without a winning bidder, the listing then becomes available as a
+ fixed-price offer and listing duration will be GTC.
Important!Publish offer note: This field
+ is required before an offer can be published to create an active listing.
For
+ implementation help, refer to eBay API documentation
+ listing_policies (Union[Unset, ListingPolicies]): This type is used to identify business policies including
+ payment, return, and fulfillment policies, as well as to identify custom policies. These policies are, or will
+ be, associated with the listing. Every published offer must have a payment, return, and fulfillment business
+ policy associated with it. Additionally, depending on the country/countries in which sellers are offering
+ products and/or services to consumers (e.g., residents of the European Union,) specifying additional polices may
+ be required.
This type is also used to override the shipping costs of one or more shipping service
+ options that are associated with the fulfillment policy, to enable eBay Plus eligibility for a listing, or to
+ enable the Best Offer feature on the listing.
+ listing_start_date (Union[Unset, str]): This field can be used if the seller wants to specify a time in the
+ future that the listing will become active on eBay. The timestamp supplied in this field should be in UTC
+ format, and it should be far enough in the future so that the seller will have enough time to publish the
+ listing with the publishOffer method.
For example: 2023-05-30T19:08:00Z.
This
+ field is optional. If this field is not provided, the listing starts immediately after a successful
+ publishOffer method.
+ lot_size (Union[Unset, int]): This field is only applicable if the listing is a lot listing. A lot listing is a
+ listing that has multiple quantity of the same item, such as four identical tires being sold as a single offer,
+ or it can be a mixed lot of similar items, such as used clothing items or an assortment of baseball cards.
+ Whether the lot listing involved identical items or a mixed lot, the integer value passed into this field is the
+ total number of items in the lot. Lots can be used for auction and fixed-price listings.
+ marketplace_id (Union[Unset, str]): This enumeration value is the unique identifier of the eBay site for which
+ the offer will be made available. See MarketplaceEnum for the list of supported enumeration
+ values. This field is required. For implementation help, refer to eBay API documentation
+ merchant_location_key (Union[Unset, str]): The unique identifier of a merchant's inventory location (where the
+ inventory item in the offer is located).
To get more information about inventory locations, the getInventoryLocations method can be used.
Note: This
+ field is not initially required upon first creating an offer, but will become required before an offer can be
+ published.
Important!Publish offer note: This field is required before an
+ offer can be published to create an active listing.
Max length: 36
+ pricing_summary (Union[Unset, PricingSummary]): This type is used to specify the listing price for the product
+ and settings for the Minimum Advertised Price and Strikethrough Pricing features. The price
+ field must be supplied before an offer is published, but a seller may create an offer without supplying a price
+ initially. The Minimum Advertised Price feature is only available on the US site. Strikethrough Pricing is
+ available on the US, eBay Motors, UK, Germany, Canada (English and French), France, Italy, and Spain sites.
+ quantity_limit_per_buyer (Union[Unset, int]): This field is only applicable and set if the seller wishes to set
+ a restriction on the purchase quantity per seller. If this field is set by the seller for the offer, then each
+ distinct buyer may purchase up to, but not exceed the quantity specified for this field. So, if this field's
+ value is 5, each buyer may purchase between one to five of these products, and the purchases can
+ occur in one multiple-quantity purchase, or over multiple transactions. If a buyer attempts to purchase one or
+ more of these products, and the cumulative quantity will take the buyer beyond the quantity limit, that buyer
+ will be blocked from that purchase.
+ regulatory (Union[Unset, Regulatory]): Type defining regulatory information that the seller is required to
+ disclose.
+ secondary_category_id (Union[Unset, str]): The unique identifier for a secondary category. This field is
+ applicable if the seller decides to list the item under two categories. Sellers can use the getCategorySuggestions method of the Taxonomy API to retrieve suggested category ID values.
+ A fee may be charged when adding a secondary category to a listing.
Note: You cannot list US eBay Motors vehicles in two
+ categories. However, you can list Parts & Accessories in two categories.Note: When listing in categoryID 173651 (Auto Performance Tuning Devices &
+ Software), use of catalog products is required. For more information, see Tuning devices and
+ software.
+ sku (Union[Unset, str]): The seller-defined SKU value of the product that will be listed on the eBay site
+ (specified in the marketplaceId field). Only one offer (in unpublished or published state) may
+ exist for each sku/marketplaceId/format combination. This
+ field is required.
Use the getInventoryItems
+ method to retrieve SKU values.
Max Length: 50
+ store_category_names (Union[Unset, list[str]]): This container is used if the seller would like to place the
+ inventory item into one or two eBay store categories that the seller has set up for their eBay store. The string
+ value(s) passed in to this container will be the full path(s) to the eBay store categories, as shown below:
+ "storeCategoryNames": [
"/Fashion/Men/Shirts",
"/Fashion/Men/Accessories" ],
+ tax (Union[Unset, Tax]): This type is used to enable the use of a sales-tax table, to pass in a tax exception
+ category code, or to specify a VAT percentage.
Note: Sales-tax tables are
+ available only for the US and Canada marketplaces.
+ """
+
+ available_quantity: Union[Unset, int] = UNSET
+ category_id: Union[Unset, str] = UNSET
+ charity: Union[Unset, 'Charity'] = UNSET
+ extended_producer_responsibility: Union[Unset, 'ExtendedProducerResponsibility'] = UNSET
+ format_: Union[Unset, str] = UNSET
+ hide_buyer_details: Union[Unset, bool] = UNSET
+ include_catalog_product_details: Union[Unset, bool] = UNSET
+ listing_description: Union[Unset, str] = UNSET
+ listing_duration: Union[Unset, str] = UNSET
+ listing_policies: Union[Unset, 'ListingPolicies'] = UNSET
+ listing_start_date: Union[Unset, str] = UNSET
+ lot_size: Union[Unset, int] = UNSET
+ marketplace_id: Union[Unset, str] = UNSET
+ merchant_location_key: Union[Unset, str] = UNSET
+ pricing_summary: Union[Unset, 'PricingSummary'] = UNSET
+ quantity_limit_per_buyer: Union[Unset, int] = UNSET
+ regulatory: Union[Unset, 'Regulatory'] = UNSET
+ secondary_category_id: Union[Unset, str] = UNSET
+ sku: Union[Unset, str] = UNSET
+ store_category_names: Union[Unset, list[str]] = UNSET
+ tax: Union[Unset, 'Tax'] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.charity import Charity
+ from ..models.extended_producer_responsibility import ExtendedProducerResponsibility
+ from ..models.tax import Tax
+ from ..models.regulatory import Regulatory
+ from ..models.pricing_summary import PricingSummary
+ from ..models.listing_policies import ListingPolicies
+ available_quantity = self.available_quantity
+
+ category_id = self.category_id
+
+ charity: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.charity, Unset):
+ charity = self.charity.to_dict()
+
+ extended_producer_responsibility: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.extended_producer_responsibility, Unset):
+ extended_producer_responsibility = self.extended_producer_responsibility.to_dict()
+
+ format_ = self.format_
+
+ hide_buyer_details = self.hide_buyer_details
+
+ include_catalog_product_details = self.include_catalog_product_details
+
+ listing_description = self.listing_description
+
+ listing_duration = self.listing_duration
+
+ listing_policies: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.listing_policies, Unset):
+ listing_policies = self.listing_policies.to_dict()
+
+ listing_start_date = self.listing_start_date
+
+ lot_size = self.lot_size
+
+ marketplace_id = self.marketplace_id
+
+ merchant_location_key = self.merchant_location_key
+
+ pricing_summary: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.pricing_summary, Unset):
+ pricing_summary = self.pricing_summary.to_dict()
+
+ quantity_limit_per_buyer = self.quantity_limit_per_buyer
+
+ regulatory: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.regulatory, Unset):
+ regulatory = self.regulatory.to_dict()
+
+ secondary_category_id = self.secondary_category_id
+
+ sku = self.sku
+
+ store_category_names: Union[Unset, list[str]] = UNSET
+ if not isinstance(self.store_category_names, Unset):
+ store_category_names = self.store_category_names
+
+
+
+ tax: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.tax, Unset):
+ tax = self.tax.to_dict()
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if available_quantity is not UNSET:
+ field_dict["availableQuantity"] = available_quantity
+ if category_id is not UNSET:
+ field_dict["categoryId"] = category_id
+ if charity is not UNSET:
+ field_dict["charity"] = charity
+ if extended_producer_responsibility is not UNSET:
+ field_dict["extendedProducerResponsibility"] = extended_producer_responsibility
+ if format_ is not UNSET:
+ field_dict["format"] = format_
+ if hide_buyer_details is not UNSET:
+ field_dict["hideBuyerDetails"] = hide_buyer_details
+ if include_catalog_product_details is not UNSET:
+ field_dict["includeCatalogProductDetails"] = include_catalog_product_details
+ if listing_description is not UNSET:
+ field_dict["listingDescription"] = listing_description
+ if listing_duration is not UNSET:
+ field_dict["listingDuration"] = listing_duration
+ if listing_policies is not UNSET:
+ field_dict["listingPolicies"] = listing_policies
+ if listing_start_date is not UNSET:
+ field_dict["listingStartDate"] = listing_start_date
+ if lot_size is not UNSET:
+ field_dict["lotSize"] = lot_size
+ if marketplace_id is not UNSET:
+ field_dict["marketplaceId"] = marketplace_id
+ if merchant_location_key is not UNSET:
+ field_dict["merchantLocationKey"] = merchant_location_key
+ if pricing_summary is not UNSET:
+ field_dict["pricingSummary"] = pricing_summary
+ if quantity_limit_per_buyer is not UNSET:
+ field_dict["quantityLimitPerBuyer"] = quantity_limit_per_buyer
+ if regulatory is not UNSET:
+ field_dict["regulatory"] = regulatory
+ if secondary_category_id is not UNSET:
+ field_dict["secondaryCategoryId"] = secondary_category_id
+ if sku is not UNSET:
+ field_dict["sku"] = sku
+ if store_category_names is not UNSET:
+ field_dict["storeCategoryNames"] = store_category_names
+ if tax is not UNSET:
+ field_dict["tax"] = tax
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.charity import Charity
+ from ..models.extended_producer_responsibility import ExtendedProducerResponsibility
+ from ..models.tax import Tax
+ from ..models.regulatory import Regulatory
+ from ..models.pricing_summary import PricingSummary
+ from ..models.listing_policies import ListingPolicies
+ d = dict(src_dict)
+ available_quantity = d.pop("availableQuantity", UNSET)
+
+ category_id = d.pop("categoryId", UNSET)
+
+ _charity = d.pop("charity", UNSET)
+ charity: Union[Unset, Charity]
+ if isinstance(_charity, Unset):
+ charity = UNSET
+ else:
+ charity = Charity.from_dict(_charity)
+
+
+
+
+ _extended_producer_responsibility = d.pop("extendedProducerResponsibility", UNSET)
+ extended_producer_responsibility: Union[Unset, ExtendedProducerResponsibility]
+ if isinstance(_extended_producer_responsibility, Unset):
+ extended_producer_responsibility = UNSET
+ else:
+ extended_producer_responsibility = ExtendedProducerResponsibility.from_dict(_extended_producer_responsibility)
+
+
+
+
+ format_ = d.pop("format", UNSET)
+
+ hide_buyer_details = d.pop("hideBuyerDetails", UNSET)
+
+ include_catalog_product_details = d.pop("includeCatalogProductDetails", UNSET)
+
+ listing_description = d.pop("listingDescription", UNSET)
+
+ listing_duration = d.pop("listingDuration", UNSET)
+
+ _listing_policies = d.pop("listingPolicies", UNSET)
+ listing_policies: Union[Unset, ListingPolicies]
+ if isinstance(_listing_policies, Unset):
+ listing_policies = UNSET
+ else:
+ listing_policies = ListingPolicies.from_dict(_listing_policies)
+
+
+
+
+ listing_start_date = d.pop("listingStartDate", UNSET)
+
+ lot_size = d.pop("lotSize", UNSET)
+
+ marketplace_id = d.pop("marketplaceId", UNSET)
+
+ merchant_location_key = d.pop("merchantLocationKey", UNSET)
+
+ _pricing_summary = d.pop("pricingSummary", UNSET)
+ pricing_summary: Union[Unset, PricingSummary]
+ if isinstance(_pricing_summary, Unset):
+ pricing_summary = UNSET
+ else:
+ pricing_summary = PricingSummary.from_dict(_pricing_summary)
+
+
+
+
+ quantity_limit_per_buyer = d.pop("quantityLimitPerBuyer", UNSET)
+
+ _regulatory = d.pop("regulatory", UNSET)
+ regulatory: Union[Unset, Regulatory]
+ if isinstance(_regulatory, Unset):
+ regulatory = UNSET
+ else:
+ regulatory = Regulatory.from_dict(_regulatory)
+
+
+
+
+ secondary_category_id = d.pop("secondaryCategoryId", UNSET)
+
+ sku = d.pop("sku", UNSET)
+
+ store_category_names = cast(list[str], d.pop("storeCategoryNames", UNSET))
+
+
+ _tax = d.pop("tax", UNSET)
+ tax: Union[Unset, Tax]
+ if isinstance(_tax, Unset):
+ tax = UNSET
+ else:
+ tax = Tax.from_dict(_tax)
+
+
+
+
+ ebay_offer_details_with_keys = cls(
+ available_quantity=available_quantity,
+ category_id=category_id,
+ charity=charity,
+ extended_producer_responsibility=extended_producer_responsibility,
+ format_=format_,
+ hide_buyer_details=hide_buyer_details,
+ include_catalog_product_details=include_catalog_product_details,
+ listing_description=listing_description,
+ listing_duration=listing_duration,
+ listing_policies=listing_policies,
+ listing_start_date=listing_start_date,
+ lot_size=lot_size,
+ marketplace_id=marketplace_id,
+ merchant_location_key=merchant_location_key,
+ pricing_summary=pricing_summary,
+ quantity_limit_per_buyer=quantity_limit_per_buyer,
+ regulatory=regulatory,
+ secondary_category_id=secondary_category_id,
+ sku=sku,
+ store_category_names=store_category_names,
+ tax=tax,
+ )
+
+
+ ebay_offer_details_with_keys.additional_properties = d
+ return ebay_offer_details_with_keys
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/enable_inventory_location_response_200.py b/ebay_client/generated/inventory/models/enable_inventory_location_response_200.py
new file mode 100644
index 0000000..9afe6a2
--- /dev/null
+++ b/ebay_client/generated/inventory/models/enable_inventory_location_response_200.py
@@ -0,0 +1,63 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+
+
+
+
+
+
+T = TypeVar("T", bound="EnableInventoryLocationResponse200")
+
+
+
+@_attrs_define
+class EnableInventoryLocationResponse200:
+ """
+ """
+
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ enable_inventory_location_response_200 = cls(
+ )
+
+
+ enable_inventory_location_response_200.additional_properties = d
+ return enable_inventory_location_response_200
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/energy_efficiency_label.py b/ebay_client/generated/inventory/models/energy_efficiency_label.py
new file mode 100644
index 0000000..197be93
--- /dev/null
+++ b/ebay_client/generated/inventory/models/energy_efficiency_label.py
@@ -0,0 +1,108 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="EnergyEfficiencyLabel")
+
+
+
+@_attrs_define
+class EnergyEfficiencyLabel:
+ """ This type provides information about the energy efficiency for certain durable goods.
Important!
+ When providing energy efficiency information on an appliance or smartphones and tablets listing, the energy
+ efficiency rating and range of the item must be specified through the the aspects field when creating the inventory item record. Use the getItemAspectsForCategory method of the Taxonomy API to retrieve applicable rating and range
+ values for a specified category.
+
+ Attributes:
+ image_description (Union[Unset, str]): A brief verbal summary of the information included on the Energy
+ Efficiency Label for an item.
For example, On a scale of A to G the rating is E.
+ image_url (Union[Unset, str]): The URL to the Energy Efficiency Label image that is applicable to an item.
+ product_information_sheet (Union[Unset, str]): The URL to the Product Information Sheet that provides complete
+ manufacturer-provided efficiency information about an item.
+ """
+
+ image_description: Union[Unset, str] = UNSET
+ image_url: Union[Unset, str] = UNSET
+ product_information_sheet: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ image_description = self.image_description
+
+ image_url = self.image_url
+
+ product_information_sheet = self.product_information_sheet
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if image_description is not UNSET:
+ field_dict["imageDescription"] = image_description
+ if image_url is not UNSET:
+ field_dict["imageURL"] = image_url
+ if product_information_sheet is not UNSET:
+ field_dict["productInformationSheet"] = product_information_sheet
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ image_description = d.pop("imageDescription", UNSET)
+
+ image_url = d.pop("imageURL", UNSET)
+
+ product_information_sheet = d.pop("productInformationSheet", UNSET)
+
+ energy_efficiency_label = cls(
+ image_description=image_description,
+ image_url=image_url,
+ product_information_sheet=product_information_sheet,
+ )
+
+
+ energy_efficiency_label.additional_properties = d
+ return energy_efficiency_label
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/error.py b/ebay_client/generated/inventory/models/error.py
new file mode 100644
index 0000000..847ac0a
--- /dev/null
+++ b/ebay_client/generated/inventory/models/error.py
@@ -0,0 +1,187 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.error_parameter import ErrorParameter
+
+
+
+
+
+T = TypeVar("T", bound="Error")
+
+
+
+@_attrs_define
+class Error:
+ """ This type is used to express detailed information on errors and warnings that may occur with a call request.
+
+ Attributes:
+ category (Union[Unset, str]): This string value indicates the error category. There are three categories of
+ errors: request errors, application errors, and system errors.
+ domain (Union[Unset, str]): The name of the domain in which the error or warning occurred.
+ error_id (Union[Unset, int]): A unique code that identifies the particular error or warning that occurred. Your
+ application can use error codes as identifiers in your customized error-handling algorithms.
+ input_ref_ids (Union[Unset, list[str]]): An array of one or more reference IDs which identify the specific
+ request element(s) most closely associated to the error or warning, if any.
+ long_message (Union[Unset, str]): A detailed description of the condition that caused the error or warning, and
+ information on what to do to correct the problem.
+ message (Union[Unset, str]): A description of the condition that caused the error or warning.
+ output_ref_ids (Union[Unset, list[str]]): An array of one or more reference IDs which identify the specific
+ response element(s) most closely associated to the error or warning, if any.
+ parameters (Union[Unset, list['ErrorParameter']]): Various warning and error messages return one or more
+ variables that contain contextual information about the error or waring. This is often the field or value that
+ triggered the error or warning.
+ subdomain (Union[Unset, str]): The name of the subdomain in which the error or warning occurred.
+ """
+
+ category: Union[Unset, str] = UNSET
+ domain: Union[Unset, str] = UNSET
+ error_id: Union[Unset, int] = UNSET
+ input_ref_ids: Union[Unset, list[str]] = UNSET
+ long_message: Union[Unset, str] = UNSET
+ message: Union[Unset, str] = UNSET
+ output_ref_ids: Union[Unset, list[str]] = UNSET
+ parameters: Union[Unset, list['ErrorParameter']] = UNSET
+ subdomain: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.error_parameter import ErrorParameter
+ category = self.category
+
+ domain = self.domain
+
+ error_id = self.error_id
+
+ input_ref_ids: Union[Unset, list[str]] = UNSET
+ if not isinstance(self.input_ref_ids, Unset):
+ input_ref_ids = self.input_ref_ids
+
+
+
+ long_message = self.long_message
+
+ message = self.message
+
+ output_ref_ids: Union[Unset, list[str]] = UNSET
+ if not isinstance(self.output_ref_ids, Unset):
+ output_ref_ids = self.output_ref_ids
+
+
+
+ parameters: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.parameters, Unset):
+ parameters = []
+ for parameters_item_data in self.parameters:
+ parameters_item = parameters_item_data.to_dict()
+ parameters.append(parameters_item)
+
+
+
+ subdomain = self.subdomain
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if category is not UNSET:
+ field_dict["category"] = category
+ if domain is not UNSET:
+ field_dict["domain"] = domain
+ if error_id is not UNSET:
+ field_dict["errorId"] = error_id
+ if input_ref_ids is not UNSET:
+ field_dict["inputRefIds"] = input_ref_ids
+ if long_message is not UNSET:
+ field_dict["longMessage"] = long_message
+ if message is not UNSET:
+ field_dict["message"] = message
+ if output_ref_ids is not UNSET:
+ field_dict["outputRefIds"] = output_ref_ids
+ if parameters is not UNSET:
+ field_dict["parameters"] = parameters
+ if subdomain is not UNSET:
+ field_dict["subdomain"] = subdomain
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.error_parameter import ErrorParameter
+ d = dict(src_dict)
+ category = d.pop("category", UNSET)
+
+ domain = d.pop("domain", UNSET)
+
+ error_id = d.pop("errorId", UNSET)
+
+ input_ref_ids = cast(list[str], d.pop("inputRefIds", UNSET))
+
+
+ long_message = d.pop("longMessage", UNSET)
+
+ message = d.pop("message", UNSET)
+
+ output_ref_ids = cast(list[str], d.pop("outputRefIds", UNSET))
+
+
+ parameters = []
+ _parameters = d.pop("parameters", UNSET)
+ for parameters_item_data in (_parameters or []):
+ parameters_item = ErrorParameter.from_dict(parameters_item_data)
+
+
+
+ parameters.append(parameters_item)
+
+
+ subdomain = d.pop("subdomain", UNSET)
+
+ error = cls(
+ category=category,
+ domain=domain,
+ error_id=error_id,
+ input_ref_ids=input_ref_ids,
+ long_message=long_message,
+ message=message,
+ output_ref_ids=output_ref_ids,
+ parameters=parameters,
+ subdomain=subdomain,
+ )
+
+
+ error.additional_properties = d
+ return error
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/error_parameter.py b/ebay_client/generated/inventory/models/error_parameter.py
new file mode 100644
index 0000000..3c18f5c
--- /dev/null
+++ b/ebay_client/generated/inventory/models/error_parameter.py
@@ -0,0 +1,89 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="ErrorParameter")
+
+
+
+@_attrs_define
+class ErrorParameter:
+ """ This type is used to indicate the parameter field/value that caused an issue with the call request.
+
+ Attributes:
+ name (Union[Unset, str]): This type contains the name and value of an input parameter that contributed to a
+ specific error or warning condition.
+ value (Union[Unset, str]): This is the actual value that was passed in for the element specified in the
+ name field.
+ """
+
+ name: Union[Unset, str] = UNSET
+ value: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ name = self.name
+
+ value = self.value
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if name is not UNSET:
+ field_dict["name"] = name
+ if value is not UNSET:
+ field_dict["value"] = value
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ name = d.pop("name", UNSET)
+
+ value = d.pop("value", UNSET)
+
+ error_parameter = cls(
+ name=name,
+ value=value,
+ )
+
+
+ error_parameter.additional_properties = d
+ return error_parameter
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/extended_producer_responsibility.py b/ebay_client/generated/inventory/models/extended_producer_responsibility.py
new file mode 100644
index 0000000..1e9575c
--- /dev/null
+++ b/ebay_client/generated/inventory/models/extended_producer_responsibility.py
@@ -0,0 +1,159 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.amount import Amount
+
+
+
+
+
+T = TypeVar("T", bound="ExtendedProducerResponsibility")
+
+
+
+@_attrs_define
+class ExtendedProducerResponsibility:
+ """ This type provides IDs for the producer or importer related to the new item, packaging, added documentation, or an
+ eco-participation fee. In some markets, such as in France, this may be the importer of the item.
+
+ Attributes:
+ eco_participation_fee (Union[Unset, Amount]): This type is used to express a dollar value and the applicable
+ currency.
+ producer_product_id (Union[Unset, str]): Note: THIS FIELD IS DEPRECATED AND NO
+ LONGER SUPPORTED. For sellers selling on the eBay France Marketplace, Extended Producer Responsibility ID
+ fields are no longer set at the listing level. Instead, sellers must provide these IDs for each applicable
+ category in their My eBay accounts. The URL will be based on the seller's home/registration site, and will use
+ this pattern: https://accountsettings./epr-fr. Sellers based in the US will use https://accountsettings.ebay.com/epr-fr,
+ sellers based in France will use https://accountsettings.ebay.fr/epr-fr, and so on.
+ product_documentation_id (Union[Unset, str]): Note: THIS FIELD IS DEPRECATED
+ AND NO LONGER SUPPORTED. For sellers selling on the eBay France Marketplace, Extended Producer
+ Responsibility ID fields are no longer set at the listing level. Instead, sellers must provide these IDs for
+ each applicable category in their My eBay accounts. The URL will be based on the seller's home/registration
+ site, and will use this pattern: https://accountsettings./epr-fr. Sellers based in the US will use https://accountsettings.ebay.com/epr-fr,
+ sellers based in France will use https://accountsettings.ebay.fr/epr-fr, and so on.
+ product_package_id (Union[Unset, str]): Note: THIS FIELD IS DEPRECATED AND NO
+ LONGER SUPPORTED. For sellers selling on the eBay France Marketplace, Extended Producer Responsibility ID
+ fields are no longer set at the listing level. Instead, sellers must provide these IDs for each applicable
+ category in their My eBay accounts. The URL will be based on the seller's home/registration site, and will use
+ this pattern: https://accountsettings./epr-fr. Sellers based in the US will use https://accountsettings.ebay.com/epr-fr,
+ sellers based in France will use https://accountsettings.ebay.fr/epr-fr, and so on.
+ shipment_package_id (Union[Unset, str]): Note: THIS FIELD IS DEPRECATED AND NO
+ LONGER SUPPORTED. For sellers selling on the eBay France Marketplace, Extended Producer Responsibility ID
+ fields are no longer set at the listing level. Instead, sellers must provide these IDs for each applicable
+ category in their My eBay accounts. The URL will be based on the seller's home/registration site, and will use
+ this pattern: https://accountsettings./epr-fr. Sellers based in the US will use https://accountsettings.ebay.com/epr-fr,
+ sellers based in France will use https://accountsettings.ebay.fr/epr-fr, and so on.
+ """
+
+ eco_participation_fee: Union[Unset, 'Amount'] = UNSET
+ producer_product_id: Union[Unset, str] = UNSET
+ product_documentation_id: Union[Unset, str] = UNSET
+ product_package_id: Union[Unset, str] = UNSET
+ shipment_package_id: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.amount import Amount
+ eco_participation_fee: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.eco_participation_fee, Unset):
+ eco_participation_fee = self.eco_participation_fee.to_dict()
+
+ producer_product_id = self.producer_product_id
+
+ product_documentation_id = self.product_documentation_id
+
+ product_package_id = self.product_package_id
+
+ shipment_package_id = self.shipment_package_id
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if eco_participation_fee is not UNSET:
+ field_dict["ecoParticipationFee"] = eco_participation_fee
+ if producer_product_id is not UNSET:
+ field_dict["producerProductId"] = producer_product_id
+ if product_documentation_id is not UNSET:
+ field_dict["productDocumentationId"] = product_documentation_id
+ if product_package_id is not UNSET:
+ field_dict["productPackageId"] = product_package_id
+ if shipment_package_id is not UNSET:
+ field_dict["shipmentPackageId"] = shipment_package_id
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.amount import Amount
+ d = dict(src_dict)
+ _eco_participation_fee = d.pop("ecoParticipationFee", UNSET)
+ eco_participation_fee: Union[Unset, Amount]
+ if isinstance(_eco_participation_fee, Unset):
+ eco_participation_fee = UNSET
+ else:
+ eco_participation_fee = Amount.from_dict(_eco_participation_fee)
+
+
+
+
+ producer_product_id = d.pop("producerProductId", UNSET)
+
+ product_documentation_id = d.pop("productDocumentationId", UNSET)
+
+ product_package_id = d.pop("productPackageId", UNSET)
+
+ shipment_package_id = d.pop("shipmentPackageId", UNSET)
+
+ extended_producer_responsibility = cls(
+ eco_participation_fee=eco_participation_fee,
+ producer_product_id=producer_product_id,
+ product_documentation_id=product_documentation_id,
+ product_package_id=product_package_id,
+ shipment_package_id=shipment_package_id,
+ )
+
+
+ extended_producer_responsibility.additional_properties = d
+ return extended_producer_responsibility
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/fee.py b/ebay_client/generated/inventory/models/fee.py
new file mode 100644
index 0000000..5c908d3
--- /dev/null
+++ b/ebay_client/generated/inventory/models/fee.py
@@ -0,0 +1,129 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.amount import Amount
+
+
+
+
+
+T = TypeVar("T", bound="Fee")
+
+
+
+@_attrs_define
+class Fee:
+ """ This type is used to express expected listing fees that the seller may incur for one or more unpublished offers, as
+ well as any eBay-related promotional discounts being applied toward a specific fee. These fees are the expected
+ cumulative fees per eBay marketplace (which is indicated in the marketplaceId field).
+
+ Attributes:
+ amount (Union[Unset, Amount]): This type is used to express a dollar value and the applicable currency.
+ fee_type (Union[Unset, str]): The value returned in this field indicates the type of listing fee that the seller
+ may incur if one or more unpublished offers (offers are specified in the call request) are published on the
+ marketplace specified in the marketplaceId field. Applicable listing fees will often include
+ things such as InsertionFee or SubtitleFee, but many fee types will get returned even
+ when they are 0.0.
See the Standard selling fees help page for more information on listing fees.
+ promotional_discount (Union[Unset, Amount]): This type is used to express a dollar value and the applicable
+ currency.
+ """
+
+ amount: Union[Unset, 'Amount'] = UNSET
+ fee_type: Union[Unset, str] = UNSET
+ promotional_discount: Union[Unset, 'Amount'] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.amount import Amount
+ amount: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.amount, Unset):
+ amount = self.amount.to_dict()
+
+ fee_type = self.fee_type
+
+ promotional_discount: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.promotional_discount, Unset):
+ promotional_discount = self.promotional_discount.to_dict()
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if amount is not UNSET:
+ field_dict["amount"] = amount
+ if fee_type is not UNSET:
+ field_dict["feeType"] = fee_type
+ if promotional_discount is not UNSET:
+ field_dict["promotionalDiscount"] = promotional_discount
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.amount import Amount
+ d = dict(src_dict)
+ _amount = d.pop("amount", UNSET)
+ amount: Union[Unset, Amount]
+ if isinstance(_amount, Unset):
+ amount = UNSET
+ else:
+ amount = Amount.from_dict(_amount)
+
+
+
+
+ fee_type = d.pop("feeType", UNSET)
+
+ _promotional_discount = d.pop("promotionalDiscount", UNSET)
+ promotional_discount: Union[Unset, Amount]
+ if isinstance(_promotional_discount, Unset):
+ promotional_discount = UNSET
+ else:
+ promotional_discount = Amount.from_dict(_promotional_discount)
+
+
+
+
+ fee = cls(
+ amount=amount,
+ fee_type=fee_type,
+ promotional_discount=promotional_discount,
+ )
+
+
+ fee.additional_properties = d
+ return fee
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/fee_summary.py b/ebay_client/generated/inventory/models/fee_summary.py
new file mode 100644
index 0000000..2b05866
--- /dev/null
+++ b/ebay_client/generated/inventory/models/fee_summary.py
@@ -0,0 +1,141 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.fee import Fee
+ from ..models.error import Error
+
+
+
+
+
+T = TypeVar("T", bound="FeeSummary")
+
+
+
+@_attrs_define
+class FeeSummary:
+ """ This type is used to display the expected listing fees for each unpublished offer specified in the request of the
+ getListingFees call.
+
+ Attributes:
+ fees (Union[Unset, list['Fee']]): This container is an array of listing fees that can be expected to be applied
+ to an offer on the specified eBay marketplace (marketplaceId value). Many fee types will get
+ returned even when they are 0.0.
See the Standard selling fees help page for more information on listing fees.
+ marketplace_id (Union[Unset, str]): This is the unique identifier of the eBay site for which listing fees for
+ the offer are applicable. For implementation help, refer to eBay API documentation
+ warnings (Union[Unset, list['Error']]): This container will contain an array of errors and/or warnings when a
+ call is made, and errors and/or warnings occur.
+ """
+
+ fees: Union[Unset, list['Fee']] = UNSET
+ marketplace_id: Union[Unset, str] = UNSET
+ warnings: Union[Unset, list['Error']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.fee import Fee
+ from ..models.error import Error
+ fees: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.fees, Unset):
+ fees = []
+ for fees_item_data in self.fees:
+ fees_item = fees_item_data.to_dict()
+ fees.append(fees_item)
+
+
+
+ marketplace_id = self.marketplace_id
+
+ warnings: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.warnings, Unset):
+ warnings = []
+ for warnings_item_data in self.warnings:
+ warnings_item = warnings_item_data.to_dict()
+ warnings.append(warnings_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if fees is not UNSET:
+ field_dict["fees"] = fees
+ if marketplace_id is not UNSET:
+ field_dict["marketplaceId"] = marketplace_id
+ if warnings is not UNSET:
+ field_dict["warnings"] = warnings
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.fee import Fee
+ from ..models.error import Error
+ d = dict(src_dict)
+ fees = []
+ _fees = d.pop("fees", UNSET)
+ for fees_item_data in (_fees or []):
+ fees_item = Fee.from_dict(fees_item_data)
+
+
+
+ fees.append(fees_item)
+
+
+ marketplace_id = d.pop("marketplaceId", UNSET)
+
+ warnings = []
+ _warnings = d.pop("warnings", UNSET)
+ for warnings_item_data in (_warnings or []):
+ warnings_item = Error.from_dict(warnings_item_data)
+
+
+
+ warnings.append(warnings_item)
+
+
+ fee_summary = cls(
+ fees=fees,
+ marketplace_id=marketplace_id,
+ warnings=warnings,
+ )
+
+
+ fee_summary.additional_properties = d
+ return fee_summary
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/fees_summary_response.py b/ebay_client/generated/inventory/models/fees_summary_response.py
new file mode 100644
index 0000000..cd21593
--- /dev/null
+++ b/ebay_client/generated/inventory/models/fees_summary_response.py
@@ -0,0 +1,100 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.fee_summary import FeeSummary
+
+
+
+
+
+T = TypeVar("T", bound="FeesSummaryResponse")
+
+
+
+@_attrs_define
+class FeesSummaryResponse:
+ """ This type is used by the base response payload for the getListingFees call.
+
+ Attributes:
+ fee_summaries (Union[Unset, list['FeeSummary']]): This container consists of an array of one or more listing
+ fees that the seller can expect to pay for unpublished offers specified in the call request. Many fee types will
+ get returned even when they are 0.0.
+ """
+
+ fee_summaries: Union[Unset, list['FeeSummary']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.fee_summary import FeeSummary
+ fee_summaries: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.fee_summaries, Unset):
+ fee_summaries = []
+ for fee_summaries_item_data in self.fee_summaries:
+ fee_summaries_item = fee_summaries_item_data.to_dict()
+ fee_summaries.append(fee_summaries_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if fee_summaries is not UNSET:
+ field_dict["feeSummaries"] = fee_summaries
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.fee_summary import FeeSummary
+ d = dict(src_dict)
+ fee_summaries = []
+ _fee_summaries = d.pop("feeSummaries", UNSET)
+ for fee_summaries_item_data in (_fee_summaries or []):
+ fee_summaries_item = FeeSummary.from_dict(fee_summaries_item_data)
+
+
+
+ fee_summaries.append(fee_summaries_item)
+
+
+ fees_summary_response = cls(
+ fee_summaries=fee_summaries,
+ )
+
+
+ fees_summary_response.additional_properties = d
+ return fees_summary_response
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/format_allocation.py b/ebay_client/generated/inventory/models/format_allocation.py
new file mode 100644
index 0000000..9383531
--- /dev/null
+++ b/ebay_client/generated/inventory/models/format_allocation.py
@@ -0,0 +1,90 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="FormatAllocation")
+
+
+
+@_attrs_define
+class FormatAllocation:
+ """ This type is used to indicate the quantities of the inventory items that are reserved for the different listing
+ formats of the SKU offers.
+
+ Attributes:
+ auction (Union[Unset, int]): This integer value indicates the quantity of the inventory item that is reserved
+ for the published auction format offers of the SKU.
+ fixed_price (Union[Unset, int]): This integer value indicates the quantity of the inventory item that is
+ available for the fixed-price offers of the SKU.
+ """
+
+ auction: Union[Unset, int] = UNSET
+ fixed_price: Union[Unset, int] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ auction = self.auction
+
+ fixed_price = self.fixed_price
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if auction is not UNSET:
+ field_dict["auction"] = auction
+ if fixed_price is not UNSET:
+ field_dict["fixedPrice"] = fixed_price
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ auction = d.pop("auction", UNSET)
+
+ fixed_price = d.pop("fixedPrice", UNSET)
+
+ format_allocation = cls(
+ auction=auction,
+ fixed_price=fixed_price,
+ )
+
+
+ format_allocation.additional_properties = d
+ return format_allocation
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/fulfillment_center_specifications.py b/ebay_client/generated/inventory/models/fulfillment_center_specifications.py
new file mode 100644
index 0000000..24c6c7b
--- /dev/null
+++ b/ebay_client/generated/inventory/models/fulfillment_center_specifications.py
@@ -0,0 +1,96 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.same_day_shipping_cut_off_times import SameDayShippingCutOffTimes
+
+
+
+
+
+T = TypeVar("T", bound="FulfillmentCenterSpecifications")
+
+
+
+@_attrs_define
+class FulfillmentCenterSpecifications:
+ """ This type is used to provide shipping specification details, such as the weekly cut-off schedule for order handling
+ and cut-off override(s), for a fulfillment center location.
+
+ Attributes:
+ same_day_shipping_cut_off_times (Union[Unset, SameDayShippingCutOffTimes]): This type is used by the
+ createInventoryLocation call to specify cut-off time(s) for an inventory location, as well as any
+ overrides for these times.
+ """
+
+ same_day_shipping_cut_off_times: Union[Unset, 'SameDayShippingCutOffTimes'] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.same_day_shipping_cut_off_times import SameDayShippingCutOffTimes
+ same_day_shipping_cut_off_times: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.same_day_shipping_cut_off_times, Unset):
+ same_day_shipping_cut_off_times = self.same_day_shipping_cut_off_times.to_dict()
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if same_day_shipping_cut_off_times is not UNSET:
+ field_dict["sameDayShippingCutOffTimes"] = same_day_shipping_cut_off_times
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.same_day_shipping_cut_off_times import SameDayShippingCutOffTimes
+ d = dict(src_dict)
+ _same_day_shipping_cut_off_times = d.pop("sameDayShippingCutOffTimes", UNSET)
+ same_day_shipping_cut_off_times: Union[Unset, SameDayShippingCutOffTimes]
+ if isinstance(_same_day_shipping_cut_off_times, Unset):
+ same_day_shipping_cut_off_times = UNSET
+ else:
+ same_day_shipping_cut_off_times = SameDayShippingCutOffTimes.from_dict(_same_day_shipping_cut_off_times)
+
+
+
+
+ fulfillment_center_specifications = cls(
+ same_day_shipping_cut_off_times=same_day_shipping_cut_off_times,
+ )
+
+
+ fulfillment_center_specifications.additional_properties = d
+ return fulfillment_center_specifications
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/geo_coordinates.py b/ebay_client/generated/inventory/models/geo_coordinates.py
new file mode 100644
index 0000000..249c223
--- /dev/null
+++ b/ebay_client/generated/inventory/models/geo_coordinates.py
@@ -0,0 +1,92 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="GeoCoordinates")
+
+
+
+@_attrs_define
+class GeoCoordinates:
+ """ This type is used to express the Global Positioning System (GPS) latitude and longitude coordinates of an inventory
+ location.
+
+ Attributes:
+ latitude (Union[Unset, float]): The latitude (North-South) component of the geographic coordinate. This field is
+ required if a geoCoordinates container is used.
This field is returned if geographical
+ coordinates are set for the location.
Example: 33.089805
+ longitude (Union[Unset, float]): The longitude (East-West) component of the geographic coordinate. This field is
+ required if a geoCoordinates container is used.
This field is returned if geographical
+ coordinates are set for the location.
Example: -88.709822
+ """
+
+ latitude: Union[Unset, float] = UNSET
+ longitude: Union[Unset, float] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ latitude = self.latitude
+
+ longitude = self.longitude
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if latitude is not UNSET:
+ field_dict["latitude"] = latitude
+ if longitude is not UNSET:
+ field_dict["longitude"] = longitude
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ latitude = d.pop("latitude", UNSET)
+
+ longitude = d.pop("longitude", UNSET)
+
+ geo_coordinates = cls(
+ latitude=latitude,
+ longitude=longitude,
+ )
+
+
+ geo_coordinates.additional_properties = d
+ return geo_coordinates
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/get_inventory_item.py b/ebay_client/generated/inventory/models/get_inventory_item.py
new file mode 100644
index 0000000..7fbb408
--- /dev/null
+++ b/ebay_client/generated/inventory/models/get_inventory_item.py
@@ -0,0 +1,82 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="GetInventoryItem")
+
+
+
+@_attrs_define
+class GetInventoryItem:
+ """ The seller-defined Stock-Keeping Unit (SKU) of each inventory item that the user wants to retrieve is passed in the
+ request of the bulkGetInventoryItem method.
+
+ Attributes:
+ sku (Union[Unset, str]): An array of SKU values are passed in under the sku container to
+ retrieve up to 25 inventory item records.
Use the getInventoryItems
+ method to retrieve SKU values.
+ """
+
+ sku: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ sku = self.sku
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if sku is not UNSET:
+ field_dict["sku"] = sku
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ sku = d.pop("sku", UNSET)
+
+ get_inventory_item = cls(
+ sku=sku,
+ )
+
+
+ get_inventory_item.additional_properties = d
+ return get_inventory_item
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/get_inventory_item_response.py b/ebay_client/generated/inventory/models/get_inventory_item_response.py
new file mode 100644
index 0000000..7dc3164
--- /dev/null
+++ b/ebay_client/generated/inventory/models/get_inventory_item_response.py
@@ -0,0 +1,169 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.error import Error
+ from ..models.inventory_item_with_sku_locale_group_keys import InventoryItemWithSkuLocaleGroupKeys
+
+
+
+
+
+T = TypeVar("T", bound="GetInventoryItemResponse")
+
+
+
+@_attrs_define
+class GetInventoryItemResponse:
+ """ This type is used by the response of the bulkGetInventoryItem method to give the status of each
+ inventory item record that the user tried to retrieve.
+
+ Attributes:
+ errors (Union[Unset, list['Error']]): This container will be returned if there were one or more errors
+ associated with retrieving the inventory item record.
+ inventory_item (Union[Unset, InventoryItemWithSkuLocaleGroupKeys]): This type is used to provide details about
+ each retrieved inventory item record.
+ sku (Union[Unset, str]): The seller-defined Stock-Keeping Unit (SKU) of the inventory item. The seller should
+ have a unique SKU value for every product that they sell.
+ status_code (Union[Unset, int]): The HTTP status code returned in this field indicates the success or failure of
+ retrieving the inventory item record for the inventory item specified in the sku field. See the
+ HTTP status codes table to see which each status code indicates.
+ warnings (Union[Unset, list['Error']]): This container will be returned if there were one or more warnings
+ associated with retrieving the inventory item record.
+ """
+
+ errors: Union[Unset, list['Error']] = UNSET
+ inventory_item: Union[Unset, 'InventoryItemWithSkuLocaleGroupKeys'] = UNSET
+ sku: Union[Unset, str] = UNSET
+ status_code: Union[Unset, int] = UNSET
+ warnings: Union[Unset, list['Error']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.error import Error
+ from ..models.inventory_item_with_sku_locale_group_keys import InventoryItemWithSkuLocaleGroupKeys
+ errors: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.errors, Unset):
+ errors = []
+ for errors_item_data in self.errors:
+ errors_item = errors_item_data.to_dict()
+ errors.append(errors_item)
+
+
+
+ inventory_item: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.inventory_item, Unset):
+ inventory_item = self.inventory_item.to_dict()
+
+ sku = self.sku
+
+ status_code = self.status_code
+
+ warnings: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.warnings, Unset):
+ warnings = []
+ for warnings_item_data in self.warnings:
+ warnings_item = warnings_item_data.to_dict()
+ warnings.append(warnings_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if errors is not UNSET:
+ field_dict["errors"] = errors
+ if inventory_item is not UNSET:
+ field_dict["inventoryItem"] = inventory_item
+ if sku is not UNSET:
+ field_dict["sku"] = sku
+ if status_code is not UNSET:
+ field_dict["statusCode"] = status_code
+ if warnings is not UNSET:
+ field_dict["warnings"] = warnings
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.error import Error
+ from ..models.inventory_item_with_sku_locale_group_keys import InventoryItemWithSkuLocaleGroupKeys
+ d = dict(src_dict)
+ errors = []
+ _errors = d.pop("errors", UNSET)
+ for errors_item_data in (_errors or []):
+ errors_item = Error.from_dict(errors_item_data)
+
+
+
+ errors.append(errors_item)
+
+
+ _inventory_item = d.pop("inventoryItem", UNSET)
+ inventory_item: Union[Unset, InventoryItemWithSkuLocaleGroupKeys]
+ if isinstance(_inventory_item, Unset):
+ inventory_item = UNSET
+ else:
+ inventory_item = InventoryItemWithSkuLocaleGroupKeys.from_dict(_inventory_item)
+
+
+
+
+ sku = d.pop("sku", UNSET)
+
+ status_code = d.pop("statusCode", UNSET)
+
+ warnings = []
+ _warnings = d.pop("warnings", UNSET)
+ for warnings_item_data in (_warnings or []):
+ warnings_item = Error.from_dict(warnings_item_data)
+
+
+
+ warnings.append(warnings_item)
+
+
+ get_inventory_item_response = cls(
+ errors=errors,
+ inventory_item=inventory_item,
+ sku=sku,
+ status_code=status_code,
+ warnings=warnings,
+ )
+
+
+ get_inventory_item_response.additional_properties = d
+ return get_inventory_item_response
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/hazmat.py b/ebay_client/generated/inventory/models/hazmat.py
new file mode 100644
index 0000000..266d441
--- /dev/null
+++ b/ebay_client/generated/inventory/models/hazmat.py
@@ -0,0 +1,145 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="Hazmat")
+
+
+
+@_attrs_define
+class Hazmat:
+ """ This container is used by the seller to provide hazardous material information for the listing.
The
+ statements element is required to complete the hazmat section of a listing.
The following elements are
+ optional:- pictograms
- signalWord
- component
+
+ Attributes:
+ component (Union[Unset, str]): This field is used by the seller to provide component information for the
+ listing. For example, component information can provide the specific material of Hazmat concern.
Max
+ length: 120
+ pictograms (Union[Unset, list[str]]): An array of comma-separated string values listing applicable pictogram
+ code(s) for Hazard Pictogram(s).
If your product contains hazardous substances or mixtures, please select
+ the values corresponding to the hazard pictograms that are stated on your product's Safety Data Sheet. The
+ selected hazard information will be displayed on your listing.
Note: Use
+ the getHazardousMaterialsLabels method in the Metadata API to find supported values for a
+ specific marketplace/site. Refer to Pictogram sample values for additional
+ information.
+ signal_word (Union[Unset, str]): This field sets the signal word for hazardous materials in the
+ listing.
If your product contains hazardous substances or mixtures, please select a value corresponding
+ to the signal word that is stated on your product's Safety Data Sheet. The selected hazard information will be
+ displayed on your listing.
Note: Use the getHazardousMaterialsLabels method in the Metadata API to find supported values for a specific marketplace/site. Refer to Signal word
+ information for additional information.
+ statements (Union[Unset, list[str]]): An array of comma-separated string values specifying applicable statement
+ code(s) for hazard statement(s) for the listing.
If your product contains hazardous substances or
+ mixtures, please select the values corresponding to the hazard statements that are stated on your product's
+ Safety Data Sheet. The selected hazard information will be displayed on your listing.
Note: Use the getHazardousMaterialsLabels method in the Metadata API to find supported values for a
+ specific marketplace/site. Refer to Hazard statement sample values for additional
+ information.
This field is required if hazardous material information is provided for the listing.
+ """
+
+ component: Union[Unset, str] = UNSET
+ pictograms: Union[Unset, list[str]] = UNSET
+ signal_word: Union[Unset, str] = UNSET
+ statements: Union[Unset, list[str]] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ component = self.component
+
+ pictograms: Union[Unset, list[str]] = UNSET
+ if not isinstance(self.pictograms, Unset):
+ pictograms = self.pictograms
+
+
+
+ signal_word = self.signal_word
+
+ statements: Union[Unset, list[str]] = UNSET
+ if not isinstance(self.statements, Unset):
+ statements = self.statements
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if component is not UNSET:
+ field_dict["component"] = component
+ if pictograms is not UNSET:
+ field_dict["pictograms"] = pictograms
+ if signal_word is not UNSET:
+ field_dict["signalWord"] = signal_word
+ if statements is not UNSET:
+ field_dict["statements"] = statements
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ component = d.pop("component", UNSET)
+
+ pictograms = cast(list[str], d.pop("pictograms", UNSET))
+
+
+ signal_word = d.pop("signalWord", UNSET)
+
+ statements = cast(list[str], d.pop("statements", UNSET))
+
+
+ hazmat = cls(
+ component=component,
+ pictograms=pictograms,
+ signal_word=signal_word,
+ statements=statements,
+ )
+
+
+ hazmat.additional_properties = d
+ return hazmat
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/interval.py b/ebay_client/generated/inventory/models/interval.py
new file mode 100644
index 0000000..292de1e
--- /dev/null
+++ b/ebay_client/generated/inventory/models/interval.py
@@ -0,0 +1,96 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="Interval")
+
+
+
+@_attrs_define
+class Interval:
+ """ This type is used by the intervals container to define the opening and closing times of a store
+ location's working day. Local time (in Military format) is used, with the following format: hh:mm:ss.
+
+ Attributes:
+ close (Union[Unset, str]): The close value is actually the time that the store location closes.
+ Local time (in Military format) is used. So, if a store closed at 8 PM local time, the close
+ time would look like the following: 20:00:00. This field is conditionally required if the
+ intervals container is used to specify working hours or special hours for a store.
This
+ field is returned if set for the store location.
+ open_ (Union[Unset, str]): The open value is actually the time that the store opens. Local time
+ (in Military format) is used. So, if a store opens at 9 AM local time, the open time would look
+ like the following: 09:00:00. This field is conditionally required if the
+ intervals container is used to specify working hours or special hours for a store.
This
+ field is returned if set for the store location.
+ """
+
+ close: Union[Unset, str] = UNSET
+ open_: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ close = self.close
+
+ open_ = self.open_
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if close is not UNSET:
+ field_dict["close"] = close
+ if open_ is not UNSET:
+ field_dict["open"] = open_
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ close = d.pop("close", UNSET)
+
+ open_ = d.pop("open", UNSET)
+
+ interval = cls(
+ close=close,
+ open_=open_,
+ )
+
+
+ interval.additional_properties = d
+ return interval
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/inventory_item.py b/ebay_client/generated/inventory/models/inventory_item.py
new file mode 100644
index 0000000..44406d5
--- /dev/null
+++ b/ebay_client/generated/inventory/models/inventory_item.py
@@ -0,0 +1,234 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.product import Product
+ from ..models.availability import Availability
+ from ..models.package_weight_and_size import PackageWeightAndSize
+ from ..models.condition_descriptor import ConditionDescriptor
+
+
+
+
+
+T = TypeVar("T", bound="InventoryItem")
+
+
+
+@_attrs_define
+class InventoryItem:
+ """ This type is used to provide detailed information about an inventory item.
+
+ Attributes:
+ availability (Union[Unset, Availability]): This type is used to specify the quantity of the inventory item that
+ is available for purchase if the item will be shipped to the buyer, and the quantity of the inventory item that
+ is available for In-Store Pickup at one or more of the merchant's physical stores. In-Store Pickup is only
+ available to large merchants selling on the US, UK, Germany, and Australia sites.
+ condition (Union[Unset, str]): This enumeration value indicates the condition of the item. Supported item
+ condition values will vary by eBay site and category. To see which item condition values that a particular eBay
+ category supports, use the getItemConditionPolicies method of the Metadata API. This method returns
+ condition ID values that map to the enumeration values defined in the ConditionEnum type. The Item condition ID and name values topic
+ in the Selling Integration Guide has a table that maps condition ID values to
+ ConditionEnum values. The getItemConditionPolicies call reference page has
+ more information.
A condition value is optional up until the seller is ready to publish
+ an offer with the SKU, at which time it becomes required for most eBay categories.
Important!Publish offer note: This field is required before an
+ offer can be published to create an active listing.
For implementation help, refer to eBay API documentation
+ condition_description (Union[Unset, str]): This string field is used by the seller to more clearly describe the
+ condition of a used inventory item, or an inventory item whose condition value is not
+ NEW, LIKE_NEW, NEW_OTHER, or NEW_WITH_DEFECTS.
The
+ conditionDescription field is available for all eBay categories. If the
+ conditionDescription field is used with an item in one of the new conditions (mentioned in
+ previous paragraph), eBay will simply ignore this field if included, and eBay will return a warning message to
+ the user.
This field should only be used to further clarify the condition of the used item. It should
+ not be used for branding, promotions, shipping, returns, payment or other information unrelated to the condition
+ of the used item. Make sure that the condition value, condition description, listing
+ description, and the item's pictures do not contradict one another.
This field is not always required,
+ but is required if an inventory item is being updated and a condition description already exists for that
+ inventory item.
This field is returned in the getInventoryItem and
+ getInventoryItems calls if a condition description was provided for a used inventory
+ item.
Max Length: 1000.
+ condition_descriptors (Union[Unset, list['ConditionDescriptor']]): This container is used by the seller to
+ provide additional information about the condition of an item in a structured format. Condition descriptors are
+ name-value attributes that can be either closed set or open text inputs.
For trading card listings in
+ Non-Sport Trading Card Singles (183050), CCG Individual Cards (183454), and Sports Trading Card
+ Singles (261328) categories, sellers must use either LIKE_NEW (2750) or
+ USED_VERY_GOOD (4000) item condition to specify the card as Graded or Ungraded,
+ respectively. Use of either of these conditions requires the seller to use this array to provide one or more
+ applicable Condition Descriptor name-value pairs.
To retrieve all condition descriptor numeric IDs for a
+ category, use the getItemConditionPolicies method of the Metadata API.
+ package_weight_and_size (Union[Unset, PackageWeightAndSize]): This type is used to indicate the package type,
+ weight, and dimensions of the shipping package. Package weight and dimensions are required when calculated
+ shipping rates are used, and weight alone is required when flat-rate shipping is used, but with a weight
+ surcharge. See the Calculated shipping help page for more information on calculated shipping.
+ product (Union[Unset, Product]): This type is used to define the product details, such as a title, a product
+ description, product aspects/item specifics, and links to images for the product. Optionally, in a
+ createOrReplaceInventoryItem call, a seller can pass in an eBay Product Identifier (ePID) or a
+ Global Trade Item Number (GTIN) value, such as an EAN, an ISBN, a UPC, to identify a product to be matched with
+ a product in the eBay Catalog. The information in this type is also returned in the
+ getInventoryItem, getInventoryItems, and bulkGetInventoryItem
+ calls if defined.
+ """
+
+ availability: Union[Unset, 'Availability'] = UNSET
+ condition: Union[Unset, str] = UNSET
+ condition_description: Union[Unset, str] = UNSET
+ condition_descriptors: Union[Unset, list['ConditionDescriptor']] = UNSET
+ package_weight_and_size: Union[Unset, 'PackageWeightAndSize'] = UNSET
+ product: Union[Unset, 'Product'] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.product import Product
+ from ..models.availability import Availability
+ from ..models.package_weight_and_size import PackageWeightAndSize
+ from ..models.condition_descriptor import ConditionDescriptor
+ availability: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.availability, Unset):
+ availability = self.availability.to_dict()
+
+ condition = self.condition
+
+ condition_description = self.condition_description
+
+ condition_descriptors: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.condition_descriptors, Unset):
+ condition_descriptors = []
+ for condition_descriptors_item_data in self.condition_descriptors:
+ condition_descriptors_item = condition_descriptors_item_data.to_dict()
+ condition_descriptors.append(condition_descriptors_item)
+
+
+
+ package_weight_and_size: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.package_weight_and_size, Unset):
+ package_weight_and_size = self.package_weight_and_size.to_dict()
+
+ product: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.product, Unset):
+ product = self.product.to_dict()
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if availability is not UNSET:
+ field_dict["availability"] = availability
+ if condition is not UNSET:
+ field_dict["condition"] = condition
+ if condition_description is not UNSET:
+ field_dict["conditionDescription"] = condition_description
+ if condition_descriptors is not UNSET:
+ field_dict["conditionDescriptors"] = condition_descriptors
+ if package_weight_and_size is not UNSET:
+ field_dict["packageWeightAndSize"] = package_weight_and_size
+ if product is not UNSET:
+ field_dict["product"] = product
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.product import Product
+ from ..models.availability import Availability
+ from ..models.package_weight_and_size import PackageWeightAndSize
+ from ..models.condition_descriptor import ConditionDescriptor
+ d = dict(src_dict)
+ _availability = d.pop("availability", UNSET)
+ availability: Union[Unset, Availability]
+ if isinstance(_availability, Unset):
+ availability = UNSET
+ else:
+ availability = Availability.from_dict(_availability)
+
+
+
+
+ condition = d.pop("condition", UNSET)
+
+ condition_description = d.pop("conditionDescription", UNSET)
+
+ condition_descriptors = []
+ _condition_descriptors = d.pop("conditionDescriptors", UNSET)
+ for condition_descriptors_item_data in (_condition_descriptors or []):
+ condition_descriptors_item = ConditionDescriptor.from_dict(condition_descriptors_item_data)
+
+
+
+ condition_descriptors.append(condition_descriptors_item)
+
+
+ _package_weight_and_size = d.pop("packageWeightAndSize", UNSET)
+ package_weight_and_size: Union[Unset, PackageWeightAndSize]
+ if isinstance(_package_weight_and_size, Unset):
+ package_weight_and_size = UNSET
+ else:
+ package_weight_and_size = PackageWeightAndSize.from_dict(_package_weight_and_size)
+
+
+
+
+ _product = d.pop("product", UNSET)
+ product: Union[Unset, Product]
+ if isinstance(_product, Unset):
+ product = UNSET
+ else:
+ product = Product.from_dict(_product)
+
+
+
+
+ inventory_item = cls(
+ availability=availability,
+ condition=condition,
+ condition_description=condition_description,
+ condition_descriptors=condition_descriptors,
+ package_weight_and_size=package_weight_and_size,
+ product=product,
+ )
+
+
+ inventory_item.additional_properties = d
+ return inventory_item
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/inventory_item_group.py b/ebay_client/generated/inventory/models/inventory_item_group.py
new file mode 100644
index 0000000..fdd8c99
--- /dev/null
+++ b/ebay_client/generated/inventory/models/inventory_item_group.py
@@ -0,0 +1,301 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.varies_by import VariesBy
+
+
+
+
+
+T = TypeVar("T", bound="InventoryItemGroup")
+
+
+
+@_attrs_define
+class InventoryItemGroup:
+ """ This type is used by the base request payload of the createOrReplaceInventoryItemGroup call and the
+ base response payload of the getInventoryItemGroup call.
+
+ Attributes:
+ aspects (Union[Unset, str]): This is a collection of item specifics (aka product aspects) name-value pairs that
+ are shared by all product variations within the inventory item group. Common aspects for the inventory item
+ group are not immediately required upon creating an inventory item group, but these aspects will be required
+ before the first offer of the group is published. Common aspects for a men's t-shirt might be pattern and sleeve
+ length.
Important! Effective from December 28th, 2024, sellers offering
+ certain rechargeable devices in EU and Northern Ireland markets must comply with the Common Charger Directive
+ (CCD) and list appropriate charger-related aspects and values on their listings. See Common Charger Directive for more
+ information.
Below is an example of the proper JSON syntax to use when manually inputting item
+ specifics. Note that one item specific name, such as 'Features', can have more than one value. If an item
+ specific name has more than one value, each value is delimited with a comma.
"aspects": {
+ "pattern": ["solid"],
"sleeves": ["short"]
}
This container is always returned if one or
+ more offers associated with the inventory item group have been published, and is only returned if set for an
+ inventory item group if that group has yet to have any offers published.
Important!Publish offer note: This field
+ is required before an offer can be published to create an active listing.
+ description (Union[Unset, str]): The description of the inventory item group. This description should fully
+ describe the product and the variations of the product that are available in the inventory item group, since
+ this description will ultimately become the listing description once the first offer of the group is published.
+ This field is not initially required when first creating an inventory item group, but will be required before
+ the first offer of the group is published.
Note: Since this
+ description will ultimately become the listing description in a multiple-variation listing, the seller should
+ omit the listingDescription field when creating the offers for each variation. If they include
+ the listingDescription field for the individual offer(s) in an item group, the text in that
+ field for a published offer will overwrite the text provided in this description field for the
+ inventory item group.
HTML tags and markup can be used in this field, but each character counts
+ toward the max length limit.
Note: To ensure that their short
+ listing description is optimized when viewed on mobile devices, sellers should strongly consider using eBay's View Item
+ description summary feature when listing their items. Keep in mind that the 'short' listing description is
+ what prospective buyers first see when they view the listing on a mobile device. The 'full' listing description
+ is also available to mobile users when they click on the short listing description, but the full description is
+ not automatically optimized for viewing in mobile devices, and many users won't even drill down to the full
+ description.
Using HTML div and span tag attributes, this feature allows sellers to customize and fully
+ control the short listing description that is displayed to prospective buyers when viewing the listing on a
+ mobile device. The short listing description on mobile devices is limited to 800 characters, and whenever the
+ full listing description (provided in this field, in UI, or seller tool) exceeds this limit, eBay uses a special
+ algorithm to derive the best possible short listing description within the 800-character limit. However, due to
+ some short listing description content being removed, it is definitely not ideal for the seller, and could lead
+ to a bad buyer experience and possibly to a Significantly not as described (SNAD) case, since the buyer may not
+ get complete details on the item when viewing the short listing description. See the eBay help page for more
+ details on using the HTML div and span tags.
This field is always returned if one or more offers
+ associated with the inventory item group have been published, and is only returned if set for an inventory item
+ group if that group has yet to have any offers published.
Important!Publish offer note: This field
+ is required before an offer can be published to create an active listing.
Max
+ Length: 500000 (which includes HTML markup/tags)
+ image_urls (Union[Unset, list[str]]): An array of one or more links to images for the inventory item group. URLs
+ must use the "HTTPS" protocol. Images can be self-hosted by the seller, or sellers can use the UploadSiteHostedPictures call of the Trading API to upload images to an eBay Picture Server.
+ If successful, the response of the UploadSiteHostedPictures call will contain a full URL to the image on an eBay Picture
+ Server. This is the URL that will be passed in through the imageUrls array.
Note: Before any offer can be published, at least one image must exist for
+ the offer. Links to images can either be passed in through this imageUrls container, or they
+ can be passed in through the product.imageUrls container when creating each inventory item in
+ the group. If the variesBy.aspectsImageVariesBy field is used to specify the main product
+ aspect where the variations vary, the links to the images must be passed in through this
+ imageUrls container, and there should be a picture for each variation. So, if the
+ variesBy.aspectsImageVariesBy field is set to Color, a link should be included to
+ an image demonstrating each available color in the group.
In almost any category at no cost,
+ sellers can include up to 24 pictures in one listing. For inventory items that are a part of an inventory item
+ group/multiple-variation listings, a maximum of 12 pictures may be used per inventory item in the group. Motor
+ vehicle listings are an exception. The number of included pictures in motor vehicle listings depend on the
+ selected vehicle package (see Fees for selling vehicles on eBay Motors).
This container will always
+ be returned for an inventory item group that has at least one published offer since a published offer will
+ always have at least one picture, but this container will only be returned if defined for inventory item groups
+ that have yet to have any published offers.
+ inventory_item_group_key (Union[Unset, str]): This is the unique identifier of the inventory item group. This
+ identifier is created by the seller when an inventory item group is created.
Note: This field is only applicable to the getInventoryItemGroup call
+ and not to the createOrReplaceInventoryItemGroup call. In the
+ createOrReplaceInventoryItemGroup call, the inventoryItemGroupKey value is
+ passed into the end of the call URI instead.
+ subtitle (Union[Unset, str]): A subtitle is an optional listing feature that allows the seller to provide more
+ information about the product, possibly including keywords that may assist with search results. An additional
+ listing fee will be charged to the seller if a subtitle is used. For more information on using listing subtitles
+ on the US site, see the Adding a
+ subtitle to your listings help page.
Note: Since this
+ subtitle will ultimately become the subtitle in a multiple-variation listing, the seller should not include the
+ subtitle field when creating the inventory items that are members of the group. If they do
+ include the subtitle field in an inventory item record, the text in that field will overwrite
+ the text provided in this subtitle field for each inventory item in the group that is
+ published.
This field will only be returned if set for an inventory item.
Max
+ Length: 55
+ title (Union[Unset, str]): The title of the inventory item group. This title will ultimately become the listing
+ title once the first offer of the group is published. This field is not initially required when first creating
+ an inventory item group, but will be required before the first offer of the group is published.
Note: Since this title will ultimately become the listing title in a
+ multiple-variation listing, the seller should omit the title field when creating the inventory
+ items that are members of the group. If they do include the title field in an inventory item
+ record, the text in that field will overwrite the text provided in this title field for each
+ inventory item in the group that is published.
This field is always returned if one or more offers
+ associated with the inventory item group have been published, and is only returned if set for an inventory item
+ group if that group has yet to have any offers published.
Important!Publish offer note: This field
+ is required before an offer can be published to create an active listing.
Max
+ Length: 80
+ variant_sk_us (Union[Unset, list[str]]): This required container is used to assign individual inventory items to
+ the inventory item group. Multiple SKU values are passed in to this container. If updating an existing inventory
+ item group, the seller should make sure that all member SKU values are passed in, as long as the seller wants
+ that SKU to remain in the group.
It is also possible to add or remove SKUs with a
+ createOrReplaceInventoryItemGroup call. If the seller wants to remove a SKU from the group,
+ that seller will just omit that SKU value from this container to remove that inventory item/SKU from the
+ inventory item group and any published, multiple-variation listing. However, a variation cannot be removed from
+ the group if that variation has one or more sales for that listing. A workaround for this is to set that
+ variation's quantity to 0 and it will be 'grayed out' in the View Item page.
This container
+ is always returned.
+ varies_by (Union[Unset, VariesBy]): This type is used to specify the product aspect(s) where individual items of
+ the group vary, as well as a list of the available variations of those aspects.
+ video_ids (Union[Unset, list[str]]): An array of one or more videoId values for the inventory item group.
+ A video ID is a unique identifier that is automatically created by eBay when a seller successfully uploads a
+ video to eBay using the uploadVideo method of the Media API.
For information on supported marketplaces and platforms, as well as other
+ requirements and limitations of video support, please refer to Managing videos.
Note: Only one video per listing is supported.
+ """
+
+ aspects: Union[Unset, str] = UNSET
+ description: Union[Unset, str] = UNSET
+ image_urls: Union[Unset, list[str]] = UNSET
+ inventory_item_group_key: Union[Unset, str] = UNSET
+ subtitle: Union[Unset, str] = UNSET
+ title: Union[Unset, str] = UNSET
+ variant_sk_us: Union[Unset, list[str]] = UNSET
+ varies_by: Union[Unset, 'VariesBy'] = UNSET
+ video_ids: Union[Unset, list[str]] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.varies_by import VariesBy
+ aspects = self.aspects
+
+ description = self.description
+
+ image_urls: Union[Unset, list[str]] = UNSET
+ if not isinstance(self.image_urls, Unset):
+ image_urls = self.image_urls
+
+
+
+ inventory_item_group_key = self.inventory_item_group_key
+
+ subtitle = self.subtitle
+
+ title = self.title
+
+ variant_sk_us: Union[Unset, list[str]] = UNSET
+ if not isinstance(self.variant_sk_us, Unset):
+ variant_sk_us = self.variant_sk_us
+
+
+
+ varies_by: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.varies_by, Unset):
+ varies_by = self.varies_by.to_dict()
+
+ video_ids: Union[Unset, list[str]] = UNSET
+ if not isinstance(self.video_ids, Unset):
+ video_ids = self.video_ids
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if aspects is not UNSET:
+ field_dict["aspects"] = aspects
+ if description is not UNSET:
+ field_dict["description"] = description
+ if image_urls is not UNSET:
+ field_dict["imageUrls"] = image_urls
+ if inventory_item_group_key is not UNSET:
+ field_dict["inventoryItemGroupKey"] = inventory_item_group_key
+ if subtitle is not UNSET:
+ field_dict["subtitle"] = subtitle
+ if title is not UNSET:
+ field_dict["title"] = title
+ if variant_sk_us is not UNSET:
+ field_dict["variantSKUs"] = variant_sk_us
+ if varies_by is not UNSET:
+ field_dict["variesBy"] = varies_by
+ if video_ids is not UNSET:
+ field_dict["videoIds"] = video_ids
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.varies_by import VariesBy
+ d = dict(src_dict)
+ aspects = d.pop("aspects", UNSET)
+
+ description = d.pop("description", UNSET)
+
+ image_urls = cast(list[str], d.pop("imageUrls", UNSET))
+
+
+ inventory_item_group_key = d.pop("inventoryItemGroupKey", UNSET)
+
+ subtitle = d.pop("subtitle", UNSET)
+
+ title = d.pop("title", UNSET)
+
+ variant_sk_us = cast(list[str], d.pop("variantSKUs", UNSET))
+
+
+ _varies_by = d.pop("variesBy", UNSET)
+ varies_by: Union[Unset, VariesBy]
+ if isinstance(_varies_by, Unset):
+ varies_by = UNSET
+ else:
+ varies_by = VariesBy.from_dict(_varies_by)
+
+
+
+
+ video_ids = cast(list[str], d.pop("videoIds", UNSET))
+
+
+ inventory_item_group = cls(
+ aspects=aspects,
+ description=description,
+ image_urls=image_urls,
+ inventory_item_group_key=inventory_item_group_key,
+ subtitle=subtitle,
+ title=title,
+ variant_sk_us=variant_sk_us,
+ varies_by=varies_by,
+ video_ids=video_ids,
+ )
+
+
+ inventory_item_group.additional_properties = d
+ return inventory_item_group
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/inventory_item_listing.py b/ebay_client/generated/inventory/models/inventory_item_listing.py
new file mode 100644
index 0000000..df71cc5
--- /dev/null
+++ b/ebay_client/generated/inventory/models/inventory_item_listing.py
@@ -0,0 +1,94 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="InventoryItemListing")
+
+
+
+@_attrs_define
+class InventoryItemListing:
+ """ This type is used by the inventoryItems container that is returned in the response of the
+ bulkMigrateListing call. Up to five sku/offerId pairs may be
+ returned under the inventoryItems container, dependent on how many eBay listings the seller is
+ attempting to migrate to the inventory model.
+
+ Attributes:
+ offer_id (Union[Unset, str]): Upon a successful migration of a listing, eBay auto-generates this unique
+ identifier, and this offer ID value will be used to retrieve and manage the newly-created offer object. This
+ value will only be generated and returned if the eBay listing is migrated successfully.
+ sku (Union[Unset, str]): This is the seller-defined SKU value associated with the item(s) in a listing. This
+ same SKU value will be used to retrieve and manage the newly-created inventory item object if the listing
+ migration is successful. This SKU value will get returned even if the migration is not successful.
+ """
+
+ offer_id: Union[Unset, str] = UNSET
+ sku: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ offer_id = self.offer_id
+
+ sku = self.sku
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if offer_id is not UNSET:
+ field_dict["offerId"] = offer_id
+ if sku is not UNSET:
+ field_dict["sku"] = sku
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ offer_id = d.pop("offerId", UNSET)
+
+ sku = d.pop("sku", UNSET)
+
+ inventory_item_listing = cls(
+ offer_id=offer_id,
+ sku=sku,
+ )
+
+
+ inventory_item_listing.additional_properties = d
+ return inventory_item_listing
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/inventory_item_response.py b/ebay_client/generated/inventory/models/inventory_item_response.py
new file mode 100644
index 0000000..98dd045
--- /dev/null
+++ b/ebay_client/generated/inventory/models/inventory_item_response.py
@@ -0,0 +1,158 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.error import Error
+
+
+
+
+
+T = TypeVar("T", bound="InventoryItemResponse")
+
+
+
+@_attrs_define
+class InventoryItemResponse:
+ """ This type is used by the response of the bulkCreateOrReplaceInventoryItem method to indicate the
+ success or failure of creating and/or updating each inventory item record. The sku value in this
+ type identifies each inventory item record.
+
+ Attributes:
+ errors (Union[Unset, list['Error']]): This container will be returned if there were one or more errors
+ associated with the creation or update to the inventory item record.
+ locale (Union[Unset, str]): This field returns the natural language that was provided in the field values of the
+ request payload (i.e., en_AU, en_GB or de_DE). For implementation help, refer to eBay API documentation
+ sku (Union[Unset, str]): The seller-defined Stock-Keeping Unit (SKU) of the inventory item. The seller should
+ have a unique SKU value for every product that they sell.
+ status_code (Union[Unset, int]): The HTTP status code returned in this field indicates the success or failure of
+ creating or updating the inventory item record for the inventory item indicated in the sku
+ field. See the HTTP status codes table to see which each status code indicates.
+ warnings (Union[Unset, list['Error']]): This container will be returned if there were one or more warnings
+ associated with the creation or update to the inventory item record.
+ """
+
+ errors: Union[Unset, list['Error']] = UNSET
+ locale: Union[Unset, str] = UNSET
+ sku: Union[Unset, str] = UNSET
+ status_code: Union[Unset, int] = UNSET
+ warnings: Union[Unset, list['Error']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.error import Error
+ errors: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.errors, Unset):
+ errors = []
+ for errors_item_data in self.errors:
+ errors_item = errors_item_data.to_dict()
+ errors.append(errors_item)
+
+
+
+ locale = self.locale
+
+ sku = self.sku
+
+ status_code = self.status_code
+
+ warnings: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.warnings, Unset):
+ warnings = []
+ for warnings_item_data in self.warnings:
+ warnings_item = warnings_item_data.to_dict()
+ warnings.append(warnings_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if errors is not UNSET:
+ field_dict["errors"] = errors
+ if locale is not UNSET:
+ field_dict["locale"] = locale
+ if sku is not UNSET:
+ field_dict["sku"] = sku
+ if status_code is not UNSET:
+ field_dict["statusCode"] = status_code
+ if warnings is not UNSET:
+ field_dict["warnings"] = warnings
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.error import Error
+ d = dict(src_dict)
+ errors = []
+ _errors = d.pop("errors", UNSET)
+ for errors_item_data in (_errors or []):
+ errors_item = Error.from_dict(errors_item_data)
+
+
+
+ errors.append(errors_item)
+
+
+ locale = d.pop("locale", UNSET)
+
+ sku = d.pop("sku", UNSET)
+
+ status_code = d.pop("statusCode", UNSET)
+
+ warnings = []
+ _warnings = d.pop("warnings", UNSET)
+ for warnings_item_data in (_warnings or []):
+ warnings_item = Error.from_dict(warnings_item_data)
+
+
+
+ warnings.append(warnings_item)
+
+
+ inventory_item_response = cls(
+ errors=errors,
+ locale=locale,
+ sku=sku,
+ status_code=status_code,
+ warnings=warnings,
+ )
+
+
+ inventory_item_response.additional_properties = d
+ return inventory_item_response
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/inventory_item_with_sku_locale.py b/ebay_client/generated/inventory/models/inventory_item_with_sku_locale.py
new file mode 100644
index 0000000..50ec2ce
--- /dev/null
+++ b/ebay_client/generated/inventory/models/inventory_item_with_sku_locale.py
@@ -0,0 +1,259 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.product import Product
+ from ..models.availability import Availability
+ from ..models.package_weight_and_size import PackageWeightAndSize
+ from ..models.condition_descriptor import ConditionDescriptor
+
+
+
+
+
+T = TypeVar("T", bound="InventoryItemWithSkuLocale")
+
+
+
+@_attrs_define
+class InventoryItemWithSkuLocale:
+ """ This type is used to define/modify each inventory item record that is being created and/or updated with the
+ bulkCreateOrReplaceInventoryItem method. Up to 25 inventory item records can be created and/or
+ updated with one call.
+
+ Attributes:
+ availability (Union[Unset, Availability]): This type is used to specify the quantity of the inventory item that
+ is available for purchase if the item will be shipped to the buyer, and the quantity of the inventory item that
+ is available for In-Store Pickup at one or more of the merchant's physical stores. In-Store Pickup is only
+ available to large merchants selling on the US, UK, Germany, and Australia sites.
+ condition (Union[Unset, str]): This enumeration value indicates the condition of the item. Supported item
+ condition values will vary by eBay site and category. To see which item condition values that a particular eBay
+ category supports, use the getItemConditionPolicies method of the Metadata API. This method returns
+ condition ID values that map to the enumeration values defined in the ConditionEnum type. The Item condition ID and name values topic
+ in the Selling Integration Guide has a table that maps condition ID values to
+ ConditionEnum values. The getItemConditionPolicies call reference page has
+ more information.
A condition value is optional up until the seller is ready to publish
+ an offer with the SKU, at which time it becomes required for most eBay categories.
Important!Publish offer note: This field is required before an
+ offer can be published to create an active listing.
For implementation help, refer to eBay API documentation
+ condition_description (Union[Unset, str]): This string field is used by the seller to more clearly describe the
+ condition of a used inventory item, or an inventory item whose condition value is not
+ NEW, LIKE_NEW, NEW_OTHER, or NEW_WITH_DEFECTS.
The
+ conditionDescription field is available for all eBay categories. If the
+ conditionDescription field is used with an item in one of the new conditions (mentioned in
+ previous paragraph), eBay will simply ignore this field if included, and eBay will return a warning message to
+ the user.
This field should only be used to further clarify the condition of the used item. It should
+ not be used for branding, promotions, shipping, returns, payment or other information unrelated to the condition
+ of the used item. Make sure that the condition value, condition description, listing
+ description, and the item's pictures do not contradict one another.
This field is not always required,
+ but is required if an inventory item is being updated and a condition description already exists for that
+ inventory item.
This field is returned in the getInventoryItem,
+ bulkGetInventoryItem, and getInventoryItems calls if a condition description
+ was provided for a used inventory item.
Max Length: 1000
+ condition_descriptors (Union[Unset, list['ConditionDescriptor']]): This container is used by the seller to
+ provide additional information about the condition of an item in a structured format. Condition descriptors are
+ name-value attributes that can be either closed set or open text inputs.
For trading card listings in
+ Non-Sport Trading Card Singles (183050), CCG Individual Cards (183454), and Sports Trading Card
+ Singles (261328) categories, sellers must use either LIKE_NEW (2750) or
+ USED_VERY_GOOD (4000) item condition to specify the card as Graded or Ungraded,
+ respectively. Use of either of these conditions requires the seller to use this array to provide one or more
+ applicable Condition Descriptor name-value pairs.
To retrieve all condition descriptor numeric IDs for a
+ category, use the getItemConditionPolicies method of the Metadata API.
+ locale (Union[Unset, str]): This request parameter sets the natural language that was provided in the field
+ values of the request payload (i.e., en_AU, en_GB or de_DE). For implementation help, refer to eBay API documentation
+ package_weight_and_size (Union[Unset, PackageWeightAndSize]): This type is used to indicate the package type,
+ weight, and dimensions of the shipping package. Package weight and dimensions are required when calculated
+ shipping rates are used, and weight alone is required when flat-rate shipping is used, but with a weight
+ surcharge. See the Calculated shipping help page for more information on calculated shipping.
+ product (Union[Unset, Product]): This type is used to define the product details, such as a title, a product
+ description, product aspects/item specifics, and links to images for the product. Optionally, in a
+ createOrReplaceInventoryItem call, a seller can pass in an eBay Product Identifier (ePID) or a
+ Global Trade Item Number (GTIN) value, such as an EAN, an ISBN, a UPC, to identify a product to be matched with
+ a product in the eBay Catalog. The information in this type is also returned in the
+ getInventoryItem, getInventoryItems, and bulkGetInventoryItem
+ calls if defined.
+ sku (Union[Unset, str]): This is the seller-defined SKU value of the product that will be listed on the eBay
+ site (specified in the marketplaceId field). Only one offer (in unpublished or published state)
+ may exist for each sku/marketplaceId/format combination. This
+ field is required.
Max Length: 50
+ """
+
+ availability: Union[Unset, 'Availability'] = UNSET
+ condition: Union[Unset, str] = UNSET
+ condition_description: Union[Unset, str] = UNSET
+ condition_descriptors: Union[Unset, list['ConditionDescriptor']] = UNSET
+ locale: Union[Unset, str] = UNSET
+ package_weight_and_size: Union[Unset, 'PackageWeightAndSize'] = UNSET
+ product: Union[Unset, 'Product'] = UNSET
+ sku: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.product import Product
+ from ..models.availability import Availability
+ from ..models.package_weight_and_size import PackageWeightAndSize
+ from ..models.condition_descriptor import ConditionDescriptor
+ availability: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.availability, Unset):
+ availability = self.availability.to_dict()
+
+ condition = self.condition
+
+ condition_description = self.condition_description
+
+ condition_descriptors: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.condition_descriptors, Unset):
+ condition_descriptors = []
+ for condition_descriptors_item_data in self.condition_descriptors:
+ condition_descriptors_item = condition_descriptors_item_data.to_dict()
+ condition_descriptors.append(condition_descriptors_item)
+
+
+
+ locale = self.locale
+
+ package_weight_and_size: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.package_weight_and_size, Unset):
+ package_weight_and_size = self.package_weight_and_size.to_dict()
+
+ product: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.product, Unset):
+ product = self.product.to_dict()
+
+ sku = self.sku
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if availability is not UNSET:
+ field_dict["availability"] = availability
+ if condition is not UNSET:
+ field_dict["condition"] = condition
+ if condition_description is not UNSET:
+ field_dict["conditionDescription"] = condition_description
+ if condition_descriptors is not UNSET:
+ field_dict["conditionDescriptors"] = condition_descriptors
+ if locale is not UNSET:
+ field_dict["locale"] = locale
+ if package_weight_and_size is not UNSET:
+ field_dict["packageWeightAndSize"] = package_weight_and_size
+ if product is not UNSET:
+ field_dict["product"] = product
+ if sku is not UNSET:
+ field_dict["sku"] = sku
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.product import Product
+ from ..models.availability import Availability
+ from ..models.package_weight_and_size import PackageWeightAndSize
+ from ..models.condition_descriptor import ConditionDescriptor
+ d = dict(src_dict)
+ _availability = d.pop("availability", UNSET)
+ availability: Union[Unset, Availability]
+ if isinstance(_availability, Unset):
+ availability = UNSET
+ else:
+ availability = Availability.from_dict(_availability)
+
+
+
+
+ condition = d.pop("condition", UNSET)
+
+ condition_description = d.pop("conditionDescription", UNSET)
+
+ condition_descriptors = []
+ _condition_descriptors = d.pop("conditionDescriptors", UNSET)
+ for condition_descriptors_item_data in (_condition_descriptors or []):
+ condition_descriptors_item = ConditionDescriptor.from_dict(condition_descriptors_item_data)
+
+
+
+ condition_descriptors.append(condition_descriptors_item)
+
+
+ locale = d.pop("locale", UNSET)
+
+ _package_weight_and_size = d.pop("packageWeightAndSize", UNSET)
+ package_weight_and_size: Union[Unset, PackageWeightAndSize]
+ if isinstance(_package_weight_and_size, Unset):
+ package_weight_and_size = UNSET
+ else:
+ package_weight_and_size = PackageWeightAndSize.from_dict(_package_weight_and_size)
+
+
+
+
+ _product = d.pop("product", UNSET)
+ product: Union[Unset, Product]
+ if isinstance(_product, Unset):
+ product = UNSET
+ else:
+ product = Product.from_dict(_product)
+
+
+
+
+ sku = d.pop("sku", UNSET)
+
+ inventory_item_with_sku_locale = cls(
+ availability=availability,
+ condition=condition,
+ condition_description=condition_description,
+ condition_descriptors=condition_descriptors,
+ locale=locale,
+ package_weight_and_size=package_weight_and_size,
+ product=product,
+ sku=sku,
+ )
+
+
+ inventory_item_with_sku_locale.additional_properties = d
+ return inventory_item_with_sku_locale
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/inventory_item_with_sku_locale_group_keys.py b/ebay_client/generated/inventory/models/inventory_item_with_sku_locale_group_keys.py
new file mode 100644
index 0000000..c531eb6
--- /dev/null
+++ b/ebay_client/generated/inventory/models/inventory_item_with_sku_locale_group_keys.py
@@ -0,0 +1,255 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.product import Product
+ from ..models.availability_with_all import AvailabilityWithAll
+ from ..models.package_weight_and_size import PackageWeightAndSize
+ from ..models.condition_descriptor import ConditionDescriptor
+
+
+
+
+
+T = TypeVar("T", bound="InventoryItemWithSkuLocaleGroupKeys")
+
+
+
+@_attrs_define
+class InventoryItemWithSkuLocaleGroupKeys:
+ """ This type is used to provide details about each retrieved inventory item record.
+
+ Attributes:
+ availability (Union[Unset, AvailabilityWithAll]): This type is used to specify the quantity of the inventory
+ items that are available for purchase if the items will be shipped to the buyer, and the quantity of the
+ inventory items that are available for In-Store Pickup at one or more of the merchant's physical
+ stores.
In-Store Pickup is only available to large merchants selling on the US, UK, Germany, and
+ Australia sites.
+ condition (Union[Unset, str]): This enumeration value indicates the condition of the item. Supported item
+ condition values will vary by eBay site and category.
Since the condition of an inventory item must be
+ specified before being published in an offer, this field is always returned in the 'Get' calls for SKUs that are
+ part of a published offer. If a SKU is not part of a published offer, this field will only be returned if set
+ for the inventory item. For implementation help, refer to eBay API documentation
+ condition_description (Union[Unset, str]): This string field is used by the seller to more clearly describe the
+ condition of used items, or items that are not 'Brand New', 'New with tags', or 'New in box'. The
+ ConditionDescription field is available for all categories. If the ConditionDescription field is used with an
+ item in a new condition (Condition IDs 1000-1499), eBay will simply ignore this field if included, and eBay will
+ return a warning message to the user. This field should only be used to further clarify the condition of the
+ used item. It should not be used for branding, promotions, shipping, returns, payment or other information
+ unrelated to the condition of the item. Make sure that the condition value, condition description, listing
+ description, and the item's pictures do not contradict one another.Max length: 1000.
+ condition_descriptors (Union[Unset, list['ConditionDescriptor']]): This container is used by the seller to
+ provide additional information about the condition of an item in a structured format. Descriptors are name-value
+ attributes that can be either closed set or open text.
For trading card listings in Non-Sport Trading
+ Card Singles (183050), CCG Individual Cards (183454), and Sports Trading Card Singles (261328)
+ categories, sellers must use either LIKE_NEW (2750) or USED_VERY_GOOD (4000) item
+ condition to specify the card as Graded or Ungraded, respectively. Use of either of these
+ conditions requires the seller to use this array to provide one or more applicable Condition Descriptor name-
+ value pairs.
For more information on the numeric IDs and their text equivalents, use the getItemConditionPolicies method of the Metadata API.
+ inventory_item_group_keys (Union[Unset, list[str]]): This array is returned if the inventory item is associated
+ with any inventory item group(s). The value(s) returned in this array are the unique identifier(s) of the
+ inventory item's variation in a multiple-variation listing. This array is not returned if the inventory item is
+ not associated with any inventory item groups.
+ locale (Union[Unset, str]): This field returns the natural language that was provided in the field values of the
+ request payload (i.e., en_AU, en_GB or de_DE). For implementation help, refer to eBay API documentation
+ package_weight_and_size (Union[Unset, PackageWeightAndSize]): This type is used to indicate the package type,
+ weight, and dimensions of the shipping package. Package weight and dimensions are required when calculated
+ shipping rates are used, and weight alone is required when flat-rate shipping is used, but with a weight
+ surcharge. See the Calculated shipping help page for more information on calculated shipping.
+ product (Union[Unset, Product]): This type is used to define the product details, such as a title, a product
+ description, product aspects/item specifics, and links to images for the product. Optionally, in a
+ createOrReplaceInventoryItem call, a seller can pass in an eBay Product Identifier (ePID) or a
+ Global Trade Item Number (GTIN) value, such as an EAN, an ISBN, a UPC, to identify a product to be matched with
+ a product in the eBay Catalog. The information in this type is also returned in the
+ getInventoryItem, getInventoryItems, and bulkGetInventoryItem
+ calls if defined.
+ sku (Union[Unset, str]): The seller-defined Stock-Keeping Unit (SKU) of the inventory item. The seller should
+ have a unique SKU value for every product that they sell.
+ """
+
+ availability: Union[Unset, 'AvailabilityWithAll'] = UNSET
+ condition: Union[Unset, str] = UNSET
+ condition_description: Union[Unset, str] = UNSET
+ condition_descriptors: Union[Unset, list['ConditionDescriptor']] = UNSET
+ inventory_item_group_keys: Union[Unset, list[str]] = UNSET
+ locale: Union[Unset, str] = UNSET
+ package_weight_and_size: Union[Unset, 'PackageWeightAndSize'] = UNSET
+ product: Union[Unset, 'Product'] = UNSET
+ sku: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.product import Product
+ from ..models.availability_with_all import AvailabilityWithAll
+ from ..models.package_weight_and_size import PackageWeightAndSize
+ from ..models.condition_descriptor import ConditionDescriptor
+ availability: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.availability, Unset):
+ availability = self.availability.to_dict()
+
+ condition = self.condition
+
+ condition_description = self.condition_description
+
+ condition_descriptors: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.condition_descriptors, Unset):
+ condition_descriptors = []
+ for condition_descriptors_item_data in self.condition_descriptors:
+ condition_descriptors_item = condition_descriptors_item_data.to_dict()
+ condition_descriptors.append(condition_descriptors_item)
+
+
+
+ inventory_item_group_keys: Union[Unset, list[str]] = UNSET
+ if not isinstance(self.inventory_item_group_keys, Unset):
+ inventory_item_group_keys = self.inventory_item_group_keys
+
+
+
+ locale = self.locale
+
+ package_weight_and_size: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.package_weight_and_size, Unset):
+ package_weight_and_size = self.package_weight_and_size.to_dict()
+
+ product: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.product, Unset):
+ product = self.product.to_dict()
+
+ sku = self.sku
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if availability is not UNSET:
+ field_dict["availability"] = availability
+ if condition is not UNSET:
+ field_dict["condition"] = condition
+ if condition_description is not UNSET:
+ field_dict["conditionDescription"] = condition_description
+ if condition_descriptors is not UNSET:
+ field_dict["conditionDescriptors"] = condition_descriptors
+ if inventory_item_group_keys is not UNSET:
+ field_dict["inventoryItemGroupKeys"] = inventory_item_group_keys
+ if locale is not UNSET:
+ field_dict["locale"] = locale
+ if package_weight_and_size is not UNSET:
+ field_dict["packageWeightAndSize"] = package_weight_and_size
+ if product is not UNSET:
+ field_dict["product"] = product
+ if sku is not UNSET:
+ field_dict["sku"] = sku
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.product import Product
+ from ..models.availability_with_all import AvailabilityWithAll
+ from ..models.package_weight_and_size import PackageWeightAndSize
+ from ..models.condition_descriptor import ConditionDescriptor
+ d = dict(src_dict)
+ _availability = d.pop("availability", UNSET)
+ availability: Union[Unset, AvailabilityWithAll]
+ if isinstance(_availability, Unset):
+ availability = UNSET
+ else:
+ availability = AvailabilityWithAll.from_dict(_availability)
+
+
+
+
+ condition = d.pop("condition", UNSET)
+
+ condition_description = d.pop("conditionDescription", UNSET)
+
+ condition_descriptors = []
+ _condition_descriptors = d.pop("conditionDescriptors", UNSET)
+ for condition_descriptors_item_data in (_condition_descriptors or []):
+ condition_descriptors_item = ConditionDescriptor.from_dict(condition_descriptors_item_data)
+
+
+
+ condition_descriptors.append(condition_descriptors_item)
+
+
+ inventory_item_group_keys = cast(list[str], d.pop("inventoryItemGroupKeys", UNSET))
+
+
+ locale = d.pop("locale", UNSET)
+
+ _package_weight_and_size = d.pop("packageWeightAndSize", UNSET)
+ package_weight_and_size: Union[Unset, PackageWeightAndSize]
+ if isinstance(_package_weight_and_size, Unset):
+ package_weight_and_size = UNSET
+ else:
+ package_weight_and_size = PackageWeightAndSize.from_dict(_package_weight_and_size)
+
+
+
+
+ _product = d.pop("product", UNSET)
+ product: Union[Unset, Product]
+ if isinstance(_product, Unset):
+ product = UNSET
+ else:
+ product = Product.from_dict(_product)
+
+
+
+
+ sku = d.pop("sku", UNSET)
+
+ inventory_item_with_sku_locale_group_keys = cls(
+ availability=availability,
+ condition=condition,
+ condition_description=condition_description,
+ condition_descriptors=condition_descriptors,
+ inventory_item_group_keys=inventory_item_group_keys,
+ locale=locale,
+ package_weight_and_size=package_weight_and_size,
+ product=product,
+ sku=sku,
+ )
+
+
+ inventory_item_with_sku_locale_group_keys.additional_properties = d
+ return inventory_item_with_sku_locale_group_keys
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/inventory_item_with_sku_locale_groupid.py b/ebay_client/generated/inventory/models/inventory_item_with_sku_locale_groupid.py
new file mode 100644
index 0000000..8db64ae
--- /dev/null
+++ b/ebay_client/generated/inventory/models/inventory_item_with_sku_locale_groupid.py
@@ -0,0 +1,270 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.product import Product
+ from ..models.availability_with_all import AvailabilityWithAll
+ from ..models.package_weight_and_size import PackageWeightAndSize
+ from ..models.condition_descriptor import ConditionDescriptor
+
+
+
+
+
+T = TypeVar("T", bound="InventoryItemWithSkuLocaleGroupid")
+
+
+
+@_attrs_define
+class InventoryItemWithSkuLocaleGroupid:
+ """
+ Attributes:
+ availability (Union[Unset, AvailabilityWithAll]): This type is used to specify the quantity of the inventory
+ items that are available for purchase if the items will be shipped to the buyer, and the quantity of the
+ inventory items that are available for In-Store Pickup at one or more of the merchant's physical
+ stores.
In-Store Pickup is only available to large merchants selling on the US, UK, Germany, and
+ Australia sites.
+ condition (Union[Unset, str]): This enumeration value indicates the condition of the item. Supported item
+ condition values will vary by eBay site and category.
Since the condition of an inventory item must be
+ specified before being published in an offer, this field is always returned in the 'Get' calls for SKUs that are
+ part of a published offer. If a SKU is not part of a published offer, this field will only be returned if set
+ for the inventory item. For implementation help, refer to eBay API documentation
+ condition_description (Union[Unset, str]): This string field is used by the seller to more clearly describe the
+ condition of used items, or items that are not 'Brand New', 'New with tags', or 'New in box'. The
+ ConditionDescription field is available for all categories. If the ConditionDescription field is used with an
+ item in a new condition (Condition IDs 1000-1499), eBay will simply ignore this field if included, and eBay will
+ return a warning message to the user. This field should only be used to further clarify the condition of the
+ used item. It should not be used for branding, promotions, shipping, returns, payment or other information
+ unrelated to the condition of the item. Make sure that the condition value, condition description, listing
+ description, and the item's pictures do not contradict one another.
Max length: 1000
+ condition_descriptors (Union[Unset, list['ConditionDescriptor']]): This container is used by the seller to
+ provide additional information about the condition of an item in a structured format. Descriptors are name-value
+ attributes that can be either closed set or open text.
For trading card listings in Non-Sport Trading
+ Card Singles (183050), CCG Individual Cards (183454), and Sports Trading Card Singles (261328)
+ categories, sellers must use either LIKE_NEW (2750) or USED_VERY_GOOD (4000) item
+ condition to specify the card as Graded or Ungraded, respectively. Use of either of these
+ conditions requires the seller to use this array to provide one or more applicable Condition Descriptor name-
+ value pairs.
For more information on the numeric IDs and their text equivalents, use the getItemConditionPolicies method of the Metadata API.
+ group_ids (Union[Unset, list[str]]): This array is returned if the inventory item is associated with any
+ inventory item group(s). The value(s) returned in this array are the unique identifier(s) of the inventory item
+ group(s). This array is not returned if the inventory item is not associated with any inventory item groups.
+ inventory_item_group_keys (Union[Unset, list[str]]): This array is returned if the inventory item is associated
+ with any inventory item group(s). The value(s) returned in this array are the unique identifier(s) of the
+ inventory item's variation in a multiple-variation listing. This array is not returned if the inventory item is
+ not associated with any inventory item groups.
+ locale (Union[Unset, str]): This field returns the natural language that was provided in the field values of the
+ request payload (i.e., en_AU, en_GB or de_DE). For implementation help, refer to eBay API documentation
+ package_weight_and_size (Union[Unset, PackageWeightAndSize]): This type is used to indicate the package type,
+ weight, and dimensions of the shipping package. Package weight and dimensions are required when calculated
+ shipping rates are used, and weight alone is required when flat-rate shipping is used, but with a weight
+ surcharge. See the Calculated shipping help page for more information on calculated shipping.
+ product (Union[Unset, Product]): This type is used to define the product details, such as a title, a product
+ description, product aspects/item specifics, and links to images for the product. Optionally, in a
+ createOrReplaceInventoryItem call, a seller can pass in an eBay Product Identifier (ePID) or a
+ Global Trade Item Number (GTIN) value, such as an EAN, an ISBN, a UPC, to identify a product to be matched with
+ a product in the eBay Catalog. The information in this type is also returned in the
+ getInventoryItem, getInventoryItems, and bulkGetInventoryItem
+ calls if defined.
+ sku (Union[Unset, str]): The seller-defined Stock-Keeping Unit (SKU) of the inventory item. The seller should
+ have a unique SKU value for every product that they sell.
+ """
+
+ availability: Union[Unset, 'AvailabilityWithAll'] = UNSET
+ condition: Union[Unset, str] = UNSET
+ condition_description: Union[Unset, str] = UNSET
+ condition_descriptors: Union[Unset, list['ConditionDescriptor']] = UNSET
+ group_ids: Union[Unset, list[str]] = UNSET
+ inventory_item_group_keys: Union[Unset, list[str]] = UNSET
+ locale: Union[Unset, str] = UNSET
+ package_weight_and_size: Union[Unset, 'PackageWeightAndSize'] = UNSET
+ product: Union[Unset, 'Product'] = UNSET
+ sku: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.product import Product
+ from ..models.availability_with_all import AvailabilityWithAll
+ from ..models.package_weight_and_size import PackageWeightAndSize
+ from ..models.condition_descriptor import ConditionDescriptor
+ availability: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.availability, Unset):
+ availability = self.availability.to_dict()
+
+ condition = self.condition
+
+ condition_description = self.condition_description
+
+ condition_descriptors: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.condition_descriptors, Unset):
+ condition_descriptors = []
+ for condition_descriptors_item_data in self.condition_descriptors:
+ condition_descriptors_item = condition_descriptors_item_data.to_dict()
+ condition_descriptors.append(condition_descriptors_item)
+
+
+
+ group_ids: Union[Unset, list[str]] = UNSET
+ if not isinstance(self.group_ids, Unset):
+ group_ids = self.group_ids
+
+
+
+ inventory_item_group_keys: Union[Unset, list[str]] = UNSET
+ if not isinstance(self.inventory_item_group_keys, Unset):
+ inventory_item_group_keys = self.inventory_item_group_keys
+
+
+
+ locale = self.locale
+
+ package_weight_and_size: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.package_weight_and_size, Unset):
+ package_weight_and_size = self.package_weight_and_size.to_dict()
+
+ product: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.product, Unset):
+ product = self.product.to_dict()
+
+ sku = self.sku
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if availability is not UNSET:
+ field_dict["availability"] = availability
+ if condition is not UNSET:
+ field_dict["condition"] = condition
+ if condition_description is not UNSET:
+ field_dict["conditionDescription"] = condition_description
+ if condition_descriptors is not UNSET:
+ field_dict["conditionDescriptors"] = condition_descriptors
+ if group_ids is not UNSET:
+ field_dict["groupIds"] = group_ids
+ if inventory_item_group_keys is not UNSET:
+ field_dict["inventoryItemGroupKeys"] = inventory_item_group_keys
+ if locale is not UNSET:
+ field_dict["locale"] = locale
+ if package_weight_and_size is not UNSET:
+ field_dict["packageWeightAndSize"] = package_weight_and_size
+ if product is not UNSET:
+ field_dict["product"] = product
+ if sku is not UNSET:
+ field_dict["sku"] = sku
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.product import Product
+ from ..models.availability_with_all import AvailabilityWithAll
+ from ..models.package_weight_and_size import PackageWeightAndSize
+ from ..models.condition_descriptor import ConditionDescriptor
+ d = dict(src_dict)
+ _availability = d.pop("availability", UNSET)
+ availability: Union[Unset, AvailabilityWithAll]
+ if isinstance(_availability, Unset):
+ availability = UNSET
+ else:
+ availability = AvailabilityWithAll.from_dict(_availability)
+
+
+
+
+ condition = d.pop("condition", UNSET)
+
+ condition_description = d.pop("conditionDescription", UNSET)
+
+ condition_descriptors = []
+ _condition_descriptors = d.pop("conditionDescriptors", UNSET)
+ for condition_descriptors_item_data in (_condition_descriptors or []):
+ condition_descriptors_item = ConditionDescriptor.from_dict(condition_descriptors_item_data)
+
+
+
+ condition_descriptors.append(condition_descriptors_item)
+
+
+ group_ids = cast(list[str], d.pop("groupIds", UNSET))
+
+
+ inventory_item_group_keys = cast(list[str], d.pop("inventoryItemGroupKeys", UNSET))
+
+
+ locale = d.pop("locale", UNSET)
+
+ _package_weight_and_size = d.pop("packageWeightAndSize", UNSET)
+ package_weight_and_size: Union[Unset, PackageWeightAndSize]
+ if isinstance(_package_weight_and_size, Unset):
+ package_weight_and_size = UNSET
+ else:
+ package_weight_and_size = PackageWeightAndSize.from_dict(_package_weight_and_size)
+
+
+
+
+ _product = d.pop("product", UNSET)
+ product: Union[Unset, Product]
+ if isinstance(_product, Unset):
+ product = UNSET
+ else:
+ product = Product.from_dict(_product)
+
+
+
+
+ sku = d.pop("sku", UNSET)
+
+ inventory_item_with_sku_locale_groupid = cls(
+ availability=availability,
+ condition=condition,
+ condition_description=condition_description,
+ condition_descriptors=condition_descriptors,
+ group_ids=group_ids,
+ inventory_item_group_keys=inventory_item_group_keys,
+ locale=locale,
+ package_weight_and_size=package_weight_and_size,
+ product=product,
+ sku=sku,
+ )
+
+
+ inventory_item_with_sku_locale_groupid.additional_properties = d
+ return inventory_item_with_sku_locale_groupid
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/inventory_items.py b/ebay_client/generated/inventory/models/inventory_items.py
new file mode 100644
index 0000000..d3f31d5
--- /dev/null
+++ b/ebay_client/generated/inventory/models/inventory_items.py
@@ -0,0 +1,160 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.inventory_item_with_sku_locale_groupid import InventoryItemWithSkuLocaleGroupid
+
+
+
+
+
+T = TypeVar("T", bound="InventoryItems")
+
+
+
+@_attrs_define
+class InventoryItems:
+ """ This type is used by the base response payload of getInventoryItems call.
+
+ Attributes:
+ href (Union[Unset, str]): This is the URL to the current page of inventory items.
+ inventory_items (Union[Unset, list['InventoryItemWithSkuLocaleGroupid']]): This container is an array of one or
+ more inventory items, with detailed information on each inventory item.
+ limit (Union[Unset, int]): This integer value is the number of inventory items that will be displayed on each
+ results page.
+ next_ (Union[Unset, str]): This is the URL to the next page of inventory items. This field will only be returned
+ if there are additional inventory items to view.
+ prev (Union[Unset, str]): This is the URL to the previous page of inventory items. This field will only be
+ returned if there are previous inventory items to view.
+ size (Union[Unset, int]): This integer value indicates the total number of pages of results that are available.
+ This number will depend on the total number of inventory items available for viewing, and on the
+ limit value.
+ total (Union[Unset, int]): This integer value is the total number of inventory items that exist for the seller's
+ account. Based on this number and on the limit value, the seller may have to toggle through
+ multiple pages to view all inventory items.
+ """
+
+ href: Union[Unset, str] = UNSET
+ inventory_items: Union[Unset, list['InventoryItemWithSkuLocaleGroupid']] = UNSET
+ limit: Union[Unset, int] = UNSET
+ next_: Union[Unset, str] = UNSET
+ prev: Union[Unset, str] = UNSET
+ size: Union[Unset, int] = UNSET
+ total: Union[Unset, int] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.inventory_item_with_sku_locale_groupid import InventoryItemWithSkuLocaleGroupid
+ href = self.href
+
+ inventory_items: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.inventory_items, Unset):
+ inventory_items = []
+ for inventory_items_item_data in self.inventory_items:
+ inventory_items_item = inventory_items_item_data.to_dict()
+ inventory_items.append(inventory_items_item)
+
+
+
+ limit = self.limit
+
+ next_ = self.next_
+
+ prev = self.prev
+
+ size = self.size
+
+ total = self.total
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if href is not UNSET:
+ field_dict["href"] = href
+ if inventory_items is not UNSET:
+ field_dict["inventoryItems"] = inventory_items
+ if limit is not UNSET:
+ field_dict["limit"] = limit
+ if next_ is not UNSET:
+ field_dict["next"] = next_
+ if prev is not UNSET:
+ field_dict["prev"] = prev
+ if size is not UNSET:
+ field_dict["size"] = size
+ if total is not UNSET:
+ field_dict["total"] = total
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.inventory_item_with_sku_locale_groupid import InventoryItemWithSkuLocaleGroupid
+ d = dict(src_dict)
+ href = d.pop("href", UNSET)
+
+ inventory_items = []
+ _inventory_items = d.pop("inventoryItems", UNSET)
+ for inventory_items_item_data in (_inventory_items or []):
+ inventory_items_item = InventoryItemWithSkuLocaleGroupid.from_dict(inventory_items_item_data)
+
+
+
+ inventory_items.append(inventory_items_item)
+
+
+ limit = d.pop("limit", UNSET)
+
+ next_ = d.pop("next", UNSET)
+
+ prev = d.pop("prev", UNSET)
+
+ size = d.pop("size", UNSET)
+
+ total = d.pop("total", UNSET)
+
+ inventory_items = cls(
+ href=href,
+ inventory_items=inventory_items,
+ limit=limit,
+ next_=next_,
+ prev=prev,
+ size=size,
+ total=total,
+ )
+
+
+ inventory_items.additional_properties = d
+ return inventory_items
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/inventory_location.py b/ebay_client/generated/inventory/models/inventory_location.py
new file mode 100644
index 0000000..1522b90
--- /dev/null
+++ b/ebay_client/generated/inventory/models/inventory_location.py
@@ -0,0 +1,276 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.location_details import LocationDetails
+ from ..models.fulfillment_center_specifications import FulfillmentCenterSpecifications
+ from ..models.special_hours import SpecialHours
+ from ..models.operating_hours import OperatingHours
+
+
+
+
+
+T = TypeVar("T", bound="InventoryLocation")
+
+
+
+@_attrs_define
+class InventoryLocation:
+ """ This type is used by the updateInventoryLocation call to update operating hours, special hours,
+ phone number, and other minor details of an inventory location.
+
+ Attributes:
+ location (Union[Unset, LocationDetails]): This type is used by the createInventoryLocation call to
+ provide an full or partial address of an inventory location.
+ location_additional_information (Union[Unset, str]): This text field is used by the merchant to provide/update
+ additional information about an inventory location. Whatever text is passed in this field will replace the
+ current text string defined for this field. If the text will not change, the same text should be passed in once
+ again.
Max length: 256
+ location_instructions (Union[Unset, str]): This text field is generally used by the merchant to provide/update
+ special pickup instructions for a store inventory location. Although this field is optional, it is recommended
+ that merchants provide this field to create a pleasant and easy pickup experience for In-Store Pickup and Click
+ and Collect orders. If this field is not included in the call request payload, eBay will use the default pickup
+ instructions contained in the merchant's profile (if available). Whatever text is passed in this field will
+ replace the current text string defined for this field. If the text will not change, the same text should be
+ passed in once again.
Max length: 1000
+ location_types (Union[Unset, list[str]]): This container is used to update the location type(s) associated with
+ an inventory location.
+ location_web_url (Union[Unset, str]): This text field is used by the merchant to provide/update the Website
+ address (URL) associated with the inventory location. The URL that is passed in this field will replace any
+ other URL that may be defined for this field.
Max length: 512
+ name (Union[Unset, str]): This text field is used by the merchant to update the name of the inventory location.
+ This name should be a human-friendly name as it will be in In-Store Pickup and Click and Collect listings. A
+ name is not required for warehouse locations. For store locations, this field is not immediately required, but
+ will be required before an offer enabled with the In-Store Pickup or Click and Collect capability can be
+ published. So, if the seller omitted this field in the createInventoryLocation call, it is
+ required for an updateInventoryLocation call. The name that is passed in this field will
+ replace any other name that may be defined for this field.
+ operating_hours (Union[Unset, list['OperatingHours']]): This container is used to provide/update the regular
+ operating hours for a store location during the days of the week. A dayOfWeekEnum field and an
+ intervals container will be needed for each day of the week that the location is open. Note
+ that if operating hours are already set for a location for a specific day of the week, whatever is set through
+ an updateInventoryLocation call will override those existing hours.
+ phone (Union[Unset, str]): This text field is used by the merchant to provide/update the phone number for the
+ inventory location. The phone number that is passed in this field will replace any other phone number that may
+ be defined for this field.
Max length: 36
+ special_hours (Union[Unset, list['SpecialHours']]): This container is used to provide/update the special
+ operating hours for a store location on a specific date, such as a holiday. The special hours specified for the
+ specific date will override the normal operating hours for that particular day of the week. If special hours
+ have already been set up for an inventory location, specifying special hours through an
+ updateInventoryLocation call will only add to the list, unless the date(s) used are the same
+ special date(s) already set up, in which case, the special hours set up through the
+ updateInventoryLocation call will override the existing special hours.
+ time_zone_id (Union[Unset, str]): This field is used to provide/update the time zone of the inventory location
+ being created. This value should be in Olson format (for example America/Vancouver). For supported
+ values, see Java Supported Zone Ids and Offsets.
Note: If specified, this time zone will be used for all hour related fields. If this
+ field is not specified, the time zone will be calculated from the provided address fields.
+ fulfillment_center_specifications (Union[Unset, FulfillmentCenterSpecifications]): This type is used to provide
+ shipping specification details, such as the weekly cut-off schedule for order handling and cut-off override(s),
+ for a fulfillment center location.
+ """
+
+ location: Union[Unset, 'LocationDetails'] = UNSET
+ location_additional_information: Union[Unset, str] = UNSET
+ location_instructions: Union[Unset, str] = UNSET
+ location_types: Union[Unset, list[str]] = UNSET
+ location_web_url: Union[Unset, str] = UNSET
+ name: Union[Unset, str] = UNSET
+ operating_hours: Union[Unset, list['OperatingHours']] = UNSET
+ phone: Union[Unset, str] = UNSET
+ special_hours: Union[Unset, list['SpecialHours']] = UNSET
+ time_zone_id: Union[Unset, str] = UNSET
+ fulfillment_center_specifications: Union[Unset, 'FulfillmentCenterSpecifications'] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.location_details import LocationDetails
+ from ..models.fulfillment_center_specifications import FulfillmentCenterSpecifications
+ from ..models.special_hours import SpecialHours
+ from ..models.operating_hours import OperatingHours
+ location: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.location, Unset):
+ location = self.location.to_dict()
+
+ location_additional_information = self.location_additional_information
+
+ location_instructions = self.location_instructions
+
+ location_types: Union[Unset, list[str]] = UNSET
+ if not isinstance(self.location_types, Unset):
+ location_types = self.location_types
+
+
+
+ location_web_url = self.location_web_url
+
+ name = self.name
+
+ operating_hours: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.operating_hours, Unset):
+ operating_hours = []
+ for operating_hours_item_data in self.operating_hours:
+ operating_hours_item = operating_hours_item_data.to_dict()
+ operating_hours.append(operating_hours_item)
+
+
+
+ phone = self.phone
+
+ special_hours: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.special_hours, Unset):
+ special_hours = []
+ for special_hours_item_data in self.special_hours:
+ special_hours_item = special_hours_item_data.to_dict()
+ special_hours.append(special_hours_item)
+
+
+
+ time_zone_id = self.time_zone_id
+
+ fulfillment_center_specifications: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.fulfillment_center_specifications, Unset):
+ fulfillment_center_specifications = self.fulfillment_center_specifications.to_dict()
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if location is not UNSET:
+ field_dict["location"] = location
+ if location_additional_information is not UNSET:
+ field_dict["locationAdditionalInformation"] = location_additional_information
+ if location_instructions is not UNSET:
+ field_dict["locationInstructions"] = location_instructions
+ if location_types is not UNSET:
+ field_dict["locationTypes"] = location_types
+ if location_web_url is not UNSET:
+ field_dict["locationWebUrl"] = location_web_url
+ if name is not UNSET:
+ field_dict["name"] = name
+ if operating_hours is not UNSET:
+ field_dict["operatingHours"] = operating_hours
+ if phone is not UNSET:
+ field_dict["phone"] = phone
+ if special_hours is not UNSET:
+ field_dict["specialHours"] = special_hours
+ if time_zone_id is not UNSET:
+ field_dict["timeZoneId"] = time_zone_id
+ if fulfillment_center_specifications is not UNSET:
+ field_dict["fulfillmentCenterSpecifications"] = fulfillment_center_specifications
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.location_details import LocationDetails
+ from ..models.fulfillment_center_specifications import FulfillmentCenterSpecifications
+ from ..models.special_hours import SpecialHours
+ from ..models.operating_hours import OperatingHours
+ d = dict(src_dict)
+ _location = d.pop("location", UNSET)
+ location: Union[Unset, LocationDetails]
+ if isinstance(_location, Unset):
+ location = UNSET
+ else:
+ location = LocationDetails.from_dict(_location)
+
+
+
+
+ location_additional_information = d.pop("locationAdditionalInformation", UNSET)
+
+ location_instructions = d.pop("locationInstructions", UNSET)
+
+ location_types = cast(list[str], d.pop("locationTypes", UNSET))
+
+
+ location_web_url = d.pop("locationWebUrl", UNSET)
+
+ name = d.pop("name", UNSET)
+
+ operating_hours = []
+ _operating_hours = d.pop("operatingHours", UNSET)
+ for operating_hours_item_data in (_operating_hours or []):
+ operating_hours_item = OperatingHours.from_dict(operating_hours_item_data)
+
+
+
+ operating_hours.append(operating_hours_item)
+
+
+ phone = d.pop("phone", UNSET)
+
+ special_hours = []
+ _special_hours = d.pop("specialHours", UNSET)
+ for special_hours_item_data in (_special_hours or []):
+ special_hours_item = SpecialHours.from_dict(special_hours_item_data)
+
+
+
+ special_hours.append(special_hours_item)
+
+
+ time_zone_id = d.pop("timeZoneId", UNSET)
+
+ _fulfillment_center_specifications = d.pop("fulfillmentCenterSpecifications", UNSET)
+ fulfillment_center_specifications: Union[Unset, FulfillmentCenterSpecifications]
+ if isinstance(_fulfillment_center_specifications, Unset):
+ fulfillment_center_specifications = UNSET
+ else:
+ fulfillment_center_specifications = FulfillmentCenterSpecifications.from_dict(_fulfillment_center_specifications)
+
+
+
+
+ inventory_location = cls(
+ location=location,
+ location_additional_information=location_additional_information,
+ location_instructions=location_instructions,
+ location_types=location_types,
+ location_web_url=location_web_url,
+ name=name,
+ operating_hours=operating_hours,
+ phone=phone,
+ special_hours=special_hours,
+ time_zone_id=time_zone_id,
+ fulfillment_center_specifications=fulfillment_center_specifications,
+ )
+
+
+ inventory_location.additional_properties = d
+ return inventory_location
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/inventory_location_full.py b/ebay_client/generated/inventory/models/inventory_location_full.py
new file mode 100644
index 0000000..5555004
--- /dev/null
+++ b/ebay_client/generated/inventory/models/inventory_location_full.py
@@ -0,0 +1,289 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.location_details import LocationDetails
+ from ..models.fulfillment_center_specifications import FulfillmentCenterSpecifications
+ from ..models.special_hours import SpecialHours
+ from ..models.operating_hours import OperatingHours
+
+
+
+
+
+T = TypeVar("T", bound="InventoryLocationFull")
+
+
+
+@_attrs_define
+class InventoryLocationFull:
+ """ This type is used by the createInventoryLocation call to provide details on the inventory location,
+ including the location's name, physical address, operating hours, special hours, phone number and other details of
+ an inventory location.
+
+ Attributes:
+ location (Union[Unset, LocationDetails]): This type is used by the createInventoryLocation call to
+ provide an full or partial address of an inventory location.
+ location_additional_information (Union[Unset, str]): This text field is used by the merchant to provide
+ additional information about an inventory location.
Max length: 256
+ location_instructions (Union[Unset, str]): This text field is generally used by the merchant to provide special
+ pickup instructions for a store inventory location. Although this field is optional, it is recommended that
+ merchants provide this field to create a pleasant and easy pickup experience for In-Store Pickup and Click and
+ Collect orders. If this field is not included in the call request payload, eBay will use the default pickup
+ instructions contained in the merchant's profile (if available).
+ location_types (Union[Unset, list[str]]): This container is used to define the function of the inventory
+ location. Typically, an inventory location will serve as a store, warehouse, or fulfillment center, but in some
+ cases, an inventory location may be more than one type.
For In-Store Pickup inventory, set
+ StoreTypeEnum to STORE.
To utilize the Multi-warehouse program, set
+ StoreTypeEnum to FULFILLMENT_CENTER.
If this container is omitted, the location type
+ of the inventory location will default to WAREHOUSE. See StoreTypeEnum for the supported values.
Default:
+ WAREHOUSE
+ location_web_url (Union[Unset, str]): This text field is used by the merchant to provide the Website address
+ (URL) associated with the inventory location.
Max length: 512
+ merchant_location_status (Union[Unset, str]): This field is used to indicate whether the inventory location will
+ be enabled (inventory can be loaded to location) or disabled (inventory can not be loaded to location). If this
+ field is omitted, a successful createInventoryLocation call will automatically enable the
+ location. A merchant may want to create a new location but leave it as disabled if the location is not yet ready
+ for active inventory. Once the location is ready, the merchant can use the
+ enableInventoryLocation call to enable a location that is in a disabled state.
See StatusEnum for the supported values.
+
Default: ENABLED For implementation help, refer to eBay API documentation
+ name (Union[Unset, str]): The seller-defined name of the inventory location. This name should be a human-
+ friendly name as it will be displayed in In-Store Pickup and Click and Collect listings. A name is not required
+ for warehouse locations. For store locations, this field is not immediately required, but will be required
+ before an offer enabled with the In-Store Pickup or Click and Collect capability can be published. So, if the
+ seller omits this field in a createInventoryLocation call, it becomes required for an
+ updateInventoryLocation call.
Max length: 1000
+ operating_hours (Union[Unset, list['OperatingHours']]): This container is used to express the regular operating
+ hours for a store location during each day of the week. A dayOfWeekEnum field and an
+ intervals container will be needed for each day of the week that the store location is
+ open.
Although not technically required, this container is highly recommended to be used to specify
+ operating hours for a store location.
+ phone (Union[Unset, str]): This field is used to specify the phone number for an inventory
+ location.
Max length: 36
+ special_hours (Union[Unset, list['SpecialHours']]): This container is used to express the special operating
+ hours for a store inventory location on a specific date, such as a holiday. The special hours specified for the
+ specific date will override the normal operating hours for that particular day of the week.
+ time_zone_id (Union[Unset, str]): This field specifies the time zone of the inventory location being created.
+ This value should be in Olson format (for example America/Vancouver). For supported values, see Java Supported Zone Ids and Offsets.
Note: If
+ specified, this time zone will be used for all hour related fields. If this field is not specified for a
+ fulfillment center location, the time zone will be calculated from the provided address fields.
+ fulfillment_center_specifications (Union[Unset, FulfillmentCenterSpecifications]): This type is used to provide
+ shipping specification details, such as the weekly cut-off schedule for order handling and cut-off override(s),
+ for a fulfillment center location.
+ """
+
+ location: Union[Unset, 'LocationDetails'] = UNSET
+ location_additional_information: Union[Unset, str] = UNSET
+ location_instructions: Union[Unset, str] = UNSET
+ location_types: Union[Unset, list[str]] = UNSET
+ location_web_url: Union[Unset, str] = UNSET
+ merchant_location_status: Union[Unset, str] = UNSET
+ name: Union[Unset, str] = UNSET
+ operating_hours: Union[Unset, list['OperatingHours']] = UNSET
+ phone: Union[Unset, str] = UNSET
+ special_hours: Union[Unset, list['SpecialHours']] = UNSET
+ time_zone_id: Union[Unset, str] = UNSET
+ fulfillment_center_specifications: Union[Unset, 'FulfillmentCenterSpecifications'] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.location_details import LocationDetails
+ from ..models.fulfillment_center_specifications import FulfillmentCenterSpecifications
+ from ..models.special_hours import SpecialHours
+ from ..models.operating_hours import OperatingHours
+ location: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.location, Unset):
+ location = self.location.to_dict()
+
+ location_additional_information = self.location_additional_information
+
+ location_instructions = self.location_instructions
+
+ location_types: Union[Unset, list[str]] = UNSET
+ if not isinstance(self.location_types, Unset):
+ location_types = self.location_types
+
+
+
+ location_web_url = self.location_web_url
+
+ merchant_location_status = self.merchant_location_status
+
+ name = self.name
+
+ operating_hours: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.operating_hours, Unset):
+ operating_hours = []
+ for operating_hours_item_data in self.operating_hours:
+ operating_hours_item = operating_hours_item_data.to_dict()
+ operating_hours.append(operating_hours_item)
+
+
+
+ phone = self.phone
+
+ special_hours: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.special_hours, Unset):
+ special_hours = []
+ for special_hours_item_data in self.special_hours:
+ special_hours_item = special_hours_item_data.to_dict()
+ special_hours.append(special_hours_item)
+
+
+
+ time_zone_id = self.time_zone_id
+
+ fulfillment_center_specifications: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.fulfillment_center_specifications, Unset):
+ fulfillment_center_specifications = self.fulfillment_center_specifications.to_dict()
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if location is not UNSET:
+ field_dict["location"] = location
+ if location_additional_information is not UNSET:
+ field_dict["locationAdditionalInformation"] = location_additional_information
+ if location_instructions is not UNSET:
+ field_dict["locationInstructions"] = location_instructions
+ if location_types is not UNSET:
+ field_dict["locationTypes"] = location_types
+ if location_web_url is not UNSET:
+ field_dict["locationWebUrl"] = location_web_url
+ if merchant_location_status is not UNSET:
+ field_dict["merchantLocationStatus"] = merchant_location_status
+ if name is not UNSET:
+ field_dict["name"] = name
+ if operating_hours is not UNSET:
+ field_dict["operatingHours"] = operating_hours
+ if phone is not UNSET:
+ field_dict["phone"] = phone
+ if special_hours is not UNSET:
+ field_dict["specialHours"] = special_hours
+ if time_zone_id is not UNSET:
+ field_dict["timeZoneId"] = time_zone_id
+ if fulfillment_center_specifications is not UNSET:
+ field_dict["fulfillmentCenterSpecifications"] = fulfillment_center_specifications
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.location_details import LocationDetails
+ from ..models.fulfillment_center_specifications import FulfillmentCenterSpecifications
+ from ..models.special_hours import SpecialHours
+ from ..models.operating_hours import OperatingHours
+ d = dict(src_dict)
+ _location = d.pop("location", UNSET)
+ location: Union[Unset, LocationDetails]
+ if isinstance(_location, Unset):
+ location = UNSET
+ else:
+ location = LocationDetails.from_dict(_location)
+
+
+
+
+ location_additional_information = d.pop("locationAdditionalInformation", UNSET)
+
+ location_instructions = d.pop("locationInstructions", UNSET)
+
+ location_types = cast(list[str], d.pop("locationTypes", UNSET))
+
+
+ location_web_url = d.pop("locationWebUrl", UNSET)
+
+ merchant_location_status = d.pop("merchantLocationStatus", UNSET)
+
+ name = d.pop("name", UNSET)
+
+ operating_hours = []
+ _operating_hours = d.pop("operatingHours", UNSET)
+ for operating_hours_item_data in (_operating_hours or []):
+ operating_hours_item = OperatingHours.from_dict(operating_hours_item_data)
+
+
+
+ operating_hours.append(operating_hours_item)
+
+
+ phone = d.pop("phone", UNSET)
+
+ special_hours = []
+ _special_hours = d.pop("specialHours", UNSET)
+ for special_hours_item_data in (_special_hours or []):
+ special_hours_item = SpecialHours.from_dict(special_hours_item_data)
+
+
+
+ special_hours.append(special_hours_item)
+
+
+ time_zone_id = d.pop("timeZoneId", UNSET)
+
+ _fulfillment_center_specifications = d.pop("fulfillmentCenterSpecifications", UNSET)
+ fulfillment_center_specifications: Union[Unset, FulfillmentCenterSpecifications]
+ if isinstance(_fulfillment_center_specifications, Unset):
+ fulfillment_center_specifications = UNSET
+ else:
+ fulfillment_center_specifications = FulfillmentCenterSpecifications.from_dict(_fulfillment_center_specifications)
+
+
+
+
+ inventory_location_full = cls(
+ location=location,
+ location_additional_information=location_additional_information,
+ location_instructions=location_instructions,
+ location_types=location_types,
+ location_web_url=location_web_url,
+ merchant_location_status=merchant_location_status,
+ name=name,
+ operating_hours=operating_hours,
+ phone=phone,
+ special_hours=special_hours,
+ time_zone_id=time_zone_id,
+ fulfillment_center_specifications=fulfillment_center_specifications,
+ )
+
+
+ inventory_location_full.additional_properties = d
+ return inventory_location_full
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/inventory_location_response.py b/ebay_client/generated/inventory/models/inventory_location_response.py
new file mode 100644
index 0000000..d73faf6
--- /dev/null
+++ b/ebay_client/generated/inventory/models/inventory_location_response.py
@@ -0,0 +1,287 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.operating_hours import OperatingHours
+ from ..models.fulfillment_center_specifications import FulfillmentCenterSpecifications
+ from ..models.special_hours import SpecialHours
+ from ..models.location import Location
+
+
+
+
+
+T = TypeVar("T", bound="InventoryLocationResponse")
+
+
+
+@_attrs_define
+class InventoryLocationResponse:
+ """ This type is used by the base response of the getInventoryLocation and
+ getInventoryLocations calls. These responses provide details about inventory location(s) defined
+ for the merchant's account.
+
+ Attributes:
+ location (Union[Unset, Location]): A complex type that is used to provide the physical address of a location,
+ and it geo-coordinates.
+ location_additional_information (Union[Unset, str]): This text field provides additional information about an
+ inventory location. This field is returned if it is set for the location.
+ location_instructions (Union[Unset, str]): This text field is used by the merchant to provide special pickup
+ instructions for the store location. This field can help create a pleasant and easy pickup experience for In-
+ Store Pickup and Click and Collect orders. If this field was not set up through a
+ createInventoryLocation or a updateInventoryLocation call, eBay will use the
+ default pickup instructions contained in the merchant's profile.
+ location_types (Union[Unset, list[str]]): This container defines the function of the inventory location.
+ Typically, a location will serve as a store, warehouse, or fulfillment center, but in some cases, an inventory
+ location may be more than one type.
+ location_web_url (Union[Unset, str]): This text field shows the Website address (URL) associated with the
+ inventory location. This field is returned if defined for the location.
+ merchant_location_key (Union[Unset, str]): The unique identifier of the inventory location. This identifier is
+ set up by the merchant when the location is first created with the createInventoryLocation
+ call.
+ merchant_location_status (Union[Unset, str]): This field indicates whether the inventory location is enabled
+ (inventory can be loaded to location) or disabled (inventory can not be loaded to location). The merchant can
+ use the enableInventoryLocation call to enable a location in disabled status, or the
+ disableInventoryLocation call to disable a location in enabled status. For implementation help,
+ refer to eBay API
+ documentation
+ name (Union[Unset, str]): The name of the inventory location. This name should be a human-friendly name as it
+ will be displayed in In-Store Pickup and Click and Collect listings. For store inventory locations, this field
+ is not required for the createInventoryLocation call, but a store inventory location must have
+ a defined name value before an In-Store Pickup and Click and Collect enabled offer is
+ published. So, if the seller omits this field in the createInventoryLocation call, it will have
+ to be added later through a updateInventoryLocation call.
+ operating_hours (Union[Unset, list['OperatingHours']]): This container shows the regular operating hours for a
+ store location during the days of the week. A dayOfWeekEnum field and an
+ intervals container is shown for each day of the week that the location is open.
+ phone (Union[Unset, str]): The phone number for an inventory location. This field will typically only be
+ returned for store locations.
+ special_hours (Union[Unset, list['SpecialHours']]): This container shows the special operating hours for a store
+ or fulfillment center location on a specific date or dates.
+ time_zone_id (Union[Unset, str]): This field specifies the time zone of the inventory location being created.
+ This value should be in Olson format (for example America/Vancouver). For supported values, see Java Supported Zone Ids and Offsets.
+ fulfillment_center_specifications (Union[Unset, FulfillmentCenterSpecifications]): This type is used to provide
+ shipping specification details, such as the weekly cut-off schedule for order handling and cut-off override(s),
+ for a fulfillment center location.
+ """
+
+ location: Union[Unset, 'Location'] = UNSET
+ location_additional_information: Union[Unset, str] = UNSET
+ location_instructions: Union[Unset, str] = UNSET
+ location_types: Union[Unset, list[str]] = UNSET
+ location_web_url: Union[Unset, str] = UNSET
+ merchant_location_key: Union[Unset, str] = UNSET
+ merchant_location_status: Union[Unset, str] = UNSET
+ name: Union[Unset, str] = UNSET
+ operating_hours: Union[Unset, list['OperatingHours']] = UNSET
+ phone: Union[Unset, str] = UNSET
+ special_hours: Union[Unset, list['SpecialHours']] = UNSET
+ time_zone_id: Union[Unset, str] = UNSET
+ fulfillment_center_specifications: Union[Unset, 'FulfillmentCenterSpecifications'] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.operating_hours import OperatingHours
+ from ..models.fulfillment_center_specifications import FulfillmentCenterSpecifications
+ from ..models.special_hours import SpecialHours
+ from ..models.location import Location
+ location: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.location, Unset):
+ location = self.location.to_dict()
+
+ location_additional_information = self.location_additional_information
+
+ location_instructions = self.location_instructions
+
+ location_types: Union[Unset, list[str]] = UNSET
+ if not isinstance(self.location_types, Unset):
+ location_types = self.location_types
+
+
+
+ location_web_url = self.location_web_url
+
+ merchant_location_key = self.merchant_location_key
+
+ merchant_location_status = self.merchant_location_status
+
+ name = self.name
+
+ operating_hours: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.operating_hours, Unset):
+ operating_hours = []
+ for operating_hours_item_data in self.operating_hours:
+ operating_hours_item = operating_hours_item_data.to_dict()
+ operating_hours.append(operating_hours_item)
+
+
+
+ phone = self.phone
+
+ special_hours: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.special_hours, Unset):
+ special_hours = []
+ for special_hours_item_data in self.special_hours:
+ special_hours_item = special_hours_item_data.to_dict()
+ special_hours.append(special_hours_item)
+
+
+
+ time_zone_id = self.time_zone_id
+
+ fulfillment_center_specifications: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.fulfillment_center_specifications, Unset):
+ fulfillment_center_specifications = self.fulfillment_center_specifications.to_dict()
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if location is not UNSET:
+ field_dict["location"] = location
+ if location_additional_information is not UNSET:
+ field_dict["locationAdditionalInformation"] = location_additional_information
+ if location_instructions is not UNSET:
+ field_dict["locationInstructions"] = location_instructions
+ if location_types is not UNSET:
+ field_dict["locationTypes"] = location_types
+ if location_web_url is not UNSET:
+ field_dict["locationWebUrl"] = location_web_url
+ if merchant_location_key is not UNSET:
+ field_dict["merchantLocationKey"] = merchant_location_key
+ if merchant_location_status is not UNSET:
+ field_dict["merchantLocationStatus"] = merchant_location_status
+ if name is not UNSET:
+ field_dict["name"] = name
+ if operating_hours is not UNSET:
+ field_dict["operatingHours"] = operating_hours
+ if phone is not UNSET:
+ field_dict["phone"] = phone
+ if special_hours is not UNSET:
+ field_dict["specialHours"] = special_hours
+ if time_zone_id is not UNSET:
+ field_dict["timeZoneId"] = time_zone_id
+ if fulfillment_center_specifications is not UNSET:
+ field_dict["fulfillmentCenterSpecifications"] = fulfillment_center_specifications
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.operating_hours import OperatingHours
+ from ..models.fulfillment_center_specifications import FulfillmentCenterSpecifications
+ from ..models.special_hours import SpecialHours
+ from ..models.location import Location
+ d = dict(src_dict)
+ _location = d.pop("location", UNSET)
+ location: Union[Unset, Location]
+ if isinstance(_location, Unset):
+ location = UNSET
+ else:
+ location = Location.from_dict(_location)
+
+
+
+
+ location_additional_information = d.pop("locationAdditionalInformation", UNSET)
+
+ location_instructions = d.pop("locationInstructions", UNSET)
+
+ location_types = cast(list[str], d.pop("locationTypes", UNSET))
+
+
+ location_web_url = d.pop("locationWebUrl", UNSET)
+
+ merchant_location_key = d.pop("merchantLocationKey", UNSET)
+
+ merchant_location_status = d.pop("merchantLocationStatus", UNSET)
+
+ name = d.pop("name", UNSET)
+
+ operating_hours = []
+ _operating_hours = d.pop("operatingHours", UNSET)
+ for operating_hours_item_data in (_operating_hours or []):
+ operating_hours_item = OperatingHours.from_dict(operating_hours_item_data)
+
+
+
+ operating_hours.append(operating_hours_item)
+
+
+ phone = d.pop("phone", UNSET)
+
+ special_hours = []
+ _special_hours = d.pop("specialHours", UNSET)
+ for special_hours_item_data in (_special_hours or []):
+ special_hours_item = SpecialHours.from_dict(special_hours_item_data)
+
+
+
+ special_hours.append(special_hours_item)
+
+
+ time_zone_id = d.pop("timeZoneId", UNSET)
+
+ _fulfillment_center_specifications = d.pop("fulfillmentCenterSpecifications", UNSET)
+ fulfillment_center_specifications: Union[Unset, FulfillmentCenterSpecifications]
+ if isinstance(_fulfillment_center_specifications, Unset):
+ fulfillment_center_specifications = UNSET
+ else:
+ fulfillment_center_specifications = FulfillmentCenterSpecifications.from_dict(_fulfillment_center_specifications)
+
+
+
+
+ inventory_location_response = cls(
+ location=location,
+ location_additional_information=location_additional_information,
+ location_instructions=location_instructions,
+ location_types=location_types,
+ location_web_url=location_web_url,
+ merchant_location_key=merchant_location_key,
+ merchant_location_status=merchant_location_status,
+ name=name,
+ operating_hours=operating_hours,
+ phone=phone,
+ special_hours=special_hours,
+ time_zone_id=time_zone_id,
+ fulfillment_center_specifications=fulfillment_center_specifications,
+ )
+
+
+ inventory_location_response.additional_properties = d
+ return inventory_location_response
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/listing_details.py b/ebay_client/generated/inventory/models/listing_details.py
new file mode 100644
index 0000000..e79d704
--- /dev/null
+++ b/ebay_client/generated/inventory/models/listing_details.py
@@ -0,0 +1,118 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="ListingDetails")
+
+
+
+@_attrs_define
+class ListingDetails:
+ """ This type is used by the listing container in the getOffer and
+ getOffers calls to provide the eBay listing ID, the listing status, and quantity sold for the
+ offer. The listing container is only returned for published offers, and is not returned for
+ unpublished offers.
+
+ Attributes:
+ listing_id (Union[Unset, str]): The unique identifier of the eBay listing that is associated with the published
+ offer.
+ listing_on_hold (Union[Unset, bool]): Indicates if a listing is on hold due to an eBay policy
+ violation.
If a listing is put on hold, users are unable to view the listing details, the listing is
+ hidden from search, and all attempted purchases, offers, and bids for the listing are blocked. eBay, however,
+ gives sellers the opportunity to address violations and get listings fully reinstated. A listing will be ended
+ if a seller does not address a violation, or if the violation can not be rectified.
If a listing is
+ fixable, the seller should be able to view the listing details and this boolean will be returned as
+ true.
Once a listing is fixed, this boolean will no longer be returned.
+ listing_status (Union[Unset, str]): The enumeration value returned in this field indicates the status of the
+ listing that is associated with the published offer. For implementation help, refer to eBay API documentation
+ sold_quantity (Union[Unset, int]): This integer value indicates the quantity of the product that has been sold
+ for the published offer.
+ """
+
+ listing_id: Union[Unset, str] = UNSET
+ listing_on_hold: Union[Unset, bool] = UNSET
+ listing_status: Union[Unset, str] = UNSET
+ sold_quantity: Union[Unset, int] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ listing_id = self.listing_id
+
+ listing_on_hold = self.listing_on_hold
+
+ listing_status = self.listing_status
+
+ sold_quantity = self.sold_quantity
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if listing_id is not UNSET:
+ field_dict["listingId"] = listing_id
+ if listing_on_hold is not UNSET:
+ field_dict["listingOnHold"] = listing_on_hold
+ if listing_status is not UNSET:
+ field_dict["listingStatus"] = listing_status
+ if sold_quantity is not UNSET:
+ field_dict["soldQuantity"] = sold_quantity
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ listing_id = d.pop("listingId", UNSET)
+
+ listing_on_hold = d.pop("listingOnHold", UNSET)
+
+ listing_status = d.pop("listingStatus", UNSET)
+
+ sold_quantity = d.pop("soldQuantity", UNSET)
+
+ listing_details = cls(
+ listing_id=listing_id,
+ listing_on_hold=listing_on_hold,
+ listing_status=listing_status,
+ sold_quantity=sold_quantity,
+ )
+
+
+ listing_details.additional_properties = d
+ return listing_details
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/listing_policies.py b/ebay_client/generated/inventory/models/listing_policies.py
new file mode 100644
index 0000000..6bcf781
--- /dev/null
+++ b/ebay_client/generated/inventory/models/listing_policies.py
@@ -0,0 +1,329 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.regional_take_back_policies import RegionalTakeBackPolicies
+ from ..models.regional_product_compliance_policies import RegionalProductCompliancePolicies
+ from ..models.best_offer import BestOffer
+ from ..models.shipping_cost_override import ShippingCostOverride
+
+
+
+
+
+T = TypeVar("T", bound="ListingPolicies")
+
+
+
+@_attrs_define
+class ListingPolicies:
+ """ This type is used to identify business policies including payment, return, and fulfillment policies, as well as to
+ identify custom policies. These policies are, or will be, associated with the listing. Every published offer must
+ have a payment, return, and fulfillment business policy associated with it. Additionally, depending on the
+ country/countries in which sellers are offering products and/or services to consumers (e.g., residents of the
+ European Union,) specifying additional polices may be required.
This type is also used to override the
+ shipping costs of one or more shipping service options that are associated with the fulfillment policy, to enable
+ eBay Plus eligibility for a listing, or to enable the Best Offer feature on the listing.
+
+ Attributes:
+ best_offer_terms (Union[Unset, BestOffer]): This type is used by the bestOfferTerms container,
+ which is used if the seller would like to support the Best Offer feature on their listing.
+ e_bay_plus_if_eligible (Union[Unset, bool]): This field is included in an offer and set to true if
+ a Top-Rated seller is opted in to the eBay Plus program. With the eBay Plus program, qualified sellers must
+ commit to next-day delivery of the item, and the buyers must have an eBay Plus subscription to be eligible to
+ receive the benefits of this program, which are free, next-day delivery, as well as free returns.
Note: Currently, this program is only available on the Germany and Australian
+ sites.
This field will be returned in the getOffer and getOffers methods if set for the
+ offer.
+ fulfillment_policy_id (Union[Unset, str]): This unique identifier indicates the fulfillment business policy that
+ will be used once an offer is published and converted to an eBay listing. This fulfillment business policy will
+ set all fulfillment-related settings for the eBay listing.
Business policies are not immediately required
+ for offers, but are required before an offer can be published. The seller should review the fulfillment business
+ policy before assigning it to the offer to make sure it is compatible with the inventory item and the offer
+ settings. The seller may also want to review the shipping service costs in the fulfillment policy, and that
+ seller might decide to override the shipping costs for one or more shipping service options by using the
+ shippingCostOverrides container.
Business policies can be created and managed in My eBay
+ or with the Account API. To get a list of all
+ return policies associated with a seller's account on a specific eBay Marketplace, use the Account API's getFulfillmentPolicies method. There are also calls in the Account API to
+ retrieve a fulfillment policy by policy ID or policy name.
This field will be returned in the getOffer and getOffers methods if set for the
+ offer.
Important!Publish offer note: This field is required before an
+ offer can be published to create an active listing.
+ payment_policy_id (Union[Unset, str]): This unique identifier indicates the payment business policy that will be
+ used once an offer is published and converted to an eBay listing. This payment business policy will set all
+ payment-related settings for the eBay listing.
Business policies are not immediately required for offers,
+ but are required before an offer can be published. The seller should review the payment business policy to make
+ sure that it is compatible with the marketplace and listing category before assigning it to the
+ offer.
Business policies can be created and managed in My eBay or with the Account API. To get a list of all payment policies
+ associated with a seller's account on a specific eBay Marketplace, use the Account API's getPaymentPolicies
+ method. There are also calls in the Account API to retrieve a payment policy by policy ID or
+ policy name.
This field will be returned in the getOffer and getOffers methods if set for the
+ offer.
Important!Publish offer note: This field is required before an
+ offer can be published to create an active listing.
+ product_compliance_policy_ids (Union[Unset, list[str]]): This field contains the array of unique identifiers
+ indicating the seller-created global product compliance policies that will be used once an offer is
+ published and converted to a listing.
Product compliance policies provide buyers with important
+ information and disclosures about products. For example, if you sell batteries and specific disclosures are
+ required to be shared with all potential buyers, your global product compliance policy could contain the
+ required disclosures.
A maximum of six (6) global product compliance policies may apply to each
+ offer.Note: For countries that support country-specific policies, use regionalProductCompliancePolicies to apply
+ them to an offer.
+ regional_product_compliance_policies (Union[Unset, RegionalProductCompliancePolicies]): This type lists regional
+ product compliance policies to be used by an offer when it is published and converted to a listing.
+ regional_take_back_policies (Union[Unset, RegionalTakeBackPolicies]): This type lists regional take-back
+ policies to be used by an offer when it is published and converted to a listing.
+ return_policy_id (Union[Unset, str]): This unique identifier indicates the return business policy that will be
+ used once an offer is published and converted to an eBay listing. This return business policy will set all
+ return policy settings for the eBay listing.
Note: As a part of Digital
+ Services Act (DSA) requirements, as of April 3, 2023, buyers in the EU must be allowed to return an item within
+ 14 days or more, unless the item is exempt. Where applicable, sellers should update their return policies to
+ reflect this requirement of accepting returns from EU buyers.
Business policies are not immediately
+ required for offers, but are required before an offer can be published. The seller should review the return
+ business policy before assigning it to the offer to make sure it is compatible with the inventory item and the
+ offer settings.
Business policies can be created and managed in My eBay or with the Account API. To get a list of all return policies
+ associated with a seller's account on a specific eBay Marketplace, use the Account API's getReturnPolicies call.
+ There are also calls in the Account API to retrieve a return policy by policy ID or policy
+ name.
This field will be returned in the getOffer and getOffers methods if set for the
+ offer.
Important!Publish offer note: This field is required before an
+ offer can be published to create an active listing.
+ shipping_cost_overrides (Union[Unset, list['ShippingCostOverride']]): This container is used if the seller
+ wishes to override the shipping costs or surcharge for one or more domestic or international shipping service
+ options defined in the fulfillment listing policy. To override the costs of a specific domestic or international
+ shipping service option, the seller must know the priority/order of that shipping service in the fulfillment
+ listing policy. The name of a shipping service option can be found in the
+ shippingOptions.shippingServices.shippingServiceCode field of the fulfillment policy, and the
+ priority/order of that shipping service option is found in the
+ shippingOptions.shippingServices.sortOrderId field. Both of these values can be retrieved by
+ searching for that fulfillment policy with the getFulfillmentPolicies or
+ getFulfillmentPolicyByName calls of the Account API. The
+ shippingCostOverrides.priority value should match the
+ shippingOptions.shippingServices.sortOrderId in order to override the shipping costs for that
+ shipping service option. The seller must also ensure that the shippingServiceType value is set
+ to DOMESTIC to override a domestic shipping service option, or to INTERNATIONAL to
+ override an international shipping service option.
A separate ShippingCostOverrides node
+ is needed for each shipping service option whose costs are being overridden. All defined fields of the
+ shippingCostOverrides container should be included, even if the shipping costs and surcharge
+ values are not changing.
The shippingCostOverrides container is returned in the getOffer and getOffers calls if one or more
+ shipping cost overrides are being applied to the fulfillment policy.
+ take_back_policy_id (Union[Unset, str]): This unique identifier indicates the seller-created global take-
+ back policy that will be used once an offer is published and converted to a listing.
One (1) global take-
+ back policy may be specified per offer.
Note: For countries that
+ support country-specific policies, use regionalTakeBackPolicies to apply them to an
+ offer.
+ """
+
+ best_offer_terms: Union[Unset, 'BestOffer'] = UNSET
+ e_bay_plus_if_eligible: Union[Unset, bool] = UNSET
+ fulfillment_policy_id: Union[Unset, str] = UNSET
+ payment_policy_id: Union[Unset, str] = UNSET
+ product_compliance_policy_ids: Union[Unset, list[str]] = UNSET
+ regional_product_compliance_policies: Union[Unset, 'RegionalProductCompliancePolicies'] = UNSET
+ regional_take_back_policies: Union[Unset, 'RegionalTakeBackPolicies'] = UNSET
+ return_policy_id: Union[Unset, str] = UNSET
+ shipping_cost_overrides: Union[Unset, list['ShippingCostOverride']] = UNSET
+ take_back_policy_id: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.regional_take_back_policies import RegionalTakeBackPolicies
+ from ..models.regional_product_compliance_policies import RegionalProductCompliancePolicies
+ from ..models.best_offer import BestOffer
+ from ..models.shipping_cost_override import ShippingCostOverride
+ best_offer_terms: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.best_offer_terms, Unset):
+ best_offer_terms = self.best_offer_terms.to_dict()
+
+ e_bay_plus_if_eligible = self.e_bay_plus_if_eligible
+
+ fulfillment_policy_id = self.fulfillment_policy_id
+
+ payment_policy_id = self.payment_policy_id
+
+ product_compliance_policy_ids: Union[Unset, list[str]] = UNSET
+ if not isinstance(self.product_compliance_policy_ids, Unset):
+ product_compliance_policy_ids = self.product_compliance_policy_ids
+
+
+
+ regional_product_compliance_policies: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.regional_product_compliance_policies, Unset):
+ regional_product_compliance_policies = self.regional_product_compliance_policies.to_dict()
+
+ regional_take_back_policies: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.regional_take_back_policies, Unset):
+ regional_take_back_policies = self.regional_take_back_policies.to_dict()
+
+ return_policy_id = self.return_policy_id
+
+ shipping_cost_overrides: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.shipping_cost_overrides, Unset):
+ shipping_cost_overrides = []
+ for shipping_cost_overrides_item_data in self.shipping_cost_overrides:
+ shipping_cost_overrides_item = shipping_cost_overrides_item_data.to_dict()
+ shipping_cost_overrides.append(shipping_cost_overrides_item)
+
+
+
+ take_back_policy_id = self.take_back_policy_id
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if best_offer_terms is not UNSET:
+ field_dict["bestOfferTerms"] = best_offer_terms
+ if e_bay_plus_if_eligible is not UNSET:
+ field_dict["eBayPlusIfEligible"] = e_bay_plus_if_eligible
+ if fulfillment_policy_id is not UNSET:
+ field_dict["fulfillmentPolicyId"] = fulfillment_policy_id
+ if payment_policy_id is not UNSET:
+ field_dict["paymentPolicyId"] = payment_policy_id
+ if product_compliance_policy_ids is not UNSET:
+ field_dict["productCompliancePolicyIds"] = product_compliance_policy_ids
+ if regional_product_compliance_policies is not UNSET:
+ field_dict["regionalProductCompliancePolicies"] = regional_product_compliance_policies
+ if regional_take_back_policies is not UNSET:
+ field_dict["regionalTakeBackPolicies"] = regional_take_back_policies
+ if return_policy_id is not UNSET:
+ field_dict["returnPolicyId"] = return_policy_id
+ if shipping_cost_overrides is not UNSET:
+ field_dict["shippingCostOverrides"] = shipping_cost_overrides
+ if take_back_policy_id is not UNSET:
+ field_dict["takeBackPolicyId"] = take_back_policy_id
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.regional_take_back_policies import RegionalTakeBackPolicies
+ from ..models.regional_product_compliance_policies import RegionalProductCompliancePolicies
+ from ..models.best_offer import BestOffer
+ from ..models.shipping_cost_override import ShippingCostOverride
+ d = dict(src_dict)
+ _best_offer_terms = d.pop("bestOfferTerms", UNSET)
+ best_offer_terms: Union[Unset, BestOffer]
+ if isinstance(_best_offer_terms, Unset):
+ best_offer_terms = UNSET
+ else:
+ best_offer_terms = BestOffer.from_dict(_best_offer_terms)
+
+
+
+
+ e_bay_plus_if_eligible = d.pop("eBayPlusIfEligible", UNSET)
+
+ fulfillment_policy_id = d.pop("fulfillmentPolicyId", UNSET)
+
+ payment_policy_id = d.pop("paymentPolicyId", UNSET)
+
+ product_compliance_policy_ids = cast(list[str], d.pop("productCompliancePolicyIds", UNSET))
+
+
+ _regional_product_compliance_policies = d.pop("regionalProductCompliancePolicies", UNSET)
+ regional_product_compliance_policies: Union[Unset, RegionalProductCompliancePolicies]
+ if isinstance(_regional_product_compliance_policies, Unset):
+ regional_product_compliance_policies = UNSET
+ else:
+ regional_product_compliance_policies = RegionalProductCompliancePolicies.from_dict(_regional_product_compliance_policies)
+
+
+
+
+ _regional_take_back_policies = d.pop("regionalTakeBackPolicies", UNSET)
+ regional_take_back_policies: Union[Unset, RegionalTakeBackPolicies]
+ if isinstance(_regional_take_back_policies, Unset):
+ regional_take_back_policies = UNSET
+ else:
+ regional_take_back_policies = RegionalTakeBackPolicies.from_dict(_regional_take_back_policies)
+
+
+
+
+ return_policy_id = d.pop("returnPolicyId", UNSET)
+
+ shipping_cost_overrides = []
+ _shipping_cost_overrides = d.pop("shippingCostOverrides", UNSET)
+ for shipping_cost_overrides_item_data in (_shipping_cost_overrides or []):
+ shipping_cost_overrides_item = ShippingCostOverride.from_dict(shipping_cost_overrides_item_data)
+
+
+
+ shipping_cost_overrides.append(shipping_cost_overrides_item)
+
+
+ take_back_policy_id = d.pop("takeBackPolicyId", UNSET)
+
+ listing_policies = cls(
+ best_offer_terms=best_offer_terms,
+ e_bay_plus_if_eligible=e_bay_plus_if_eligible,
+ fulfillment_policy_id=fulfillment_policy_id,
+ payment_policy_id=payment_policy_id,
+ product_compliance_policy_ids=product_compliance_policy_ids,
+ regional_product_compliance_policies=regional_product_compliance_policies,
+ regional_take_back_policies=regional_take_back_policies,
+ return_policy_id=return_policy_id,
+ shipping_cost_overrides=shipping_cost_overrides,
+ take_back_policy_id=take_back_policy_id,
+ )
+
+
+ listing_policies.additional_properties = d
+ return listing_policies
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/location.py b/ebay_client/generated/inventory/models/location.py
new file mode 100644
index 0000000..c6b6c2a
--- /dev/null
+++ b/ebay_client/generated/inventory/models/location.py
@@ -0,0 +1,128 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.address import Address
+ from ..models.geo_coordinates import GeoCoordinates
+
+
+
+
+
+T = TypeVar("T", bound="Location")
+
+
+
+@_attrs_define
+class Location:
+ """ A complex type that is used to provide the physical address of a location, and it geo-coordinates.
+
+ Attributes:
+ address (Union[Unset, Address]): This type is used to define the physical address of an inventory location.
+ geo_coordinates (Union[Unset, GeoCoordinates]): This type is used to express the Global Positioning System (GPS)
+ latitude and longitude coordinates of an inventory location.
+ location_id (Union[Unset, str]): A unique eBay-assigned ID for the location.
+ Note: This field should not be confused with the seller-defined merchantLocationKey
+ value. It is the merchantLocationKey value which is used to identify an inventory location when working
+ with inventory location API calls. The locationId value is only used internally by eBay.
+ """
+
+ address: Union[Unset, 'Address'] = UNSET
+ geo_coordinates: Union[Unset, 'GeoCoordinates'] = UNSET
+ location_id: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.address import Address
+ from ..models.geo_coordinates import GeoCoordinates
+ address: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.address, Unset):
+ address = self.address.to_dict()
+
+ geo_coordinates: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.geo_coordinates, Unset):
+ geo_coordinates = self.geo_coordinates.to_dict()
+
+ location_id = self.location_id
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if address is not UNSET:
+ field_dict["address"] = address
+ if geo_coordinates is not UNSET:
+ field_dict["geoCoordinates"] = geo_coordinates
+ if location_id is not UNSET:
+ field_dict["locationId"] = location_id
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.address import Address
+ from ..models.geo_coordinates import GeoCoordinates
+ d = dict(src_dict)
+ _address = d.pop("address", UNSET)
+ address: Union[Unset, Address]
+ if isinstance(_address, Unset):
+ address = UNSET
+ else:
+ address = Address.from_dict(_address)
+
+
+
+
+ _geo_coordinates = d.pop("geoCoordinates", UNSET)
+ geo_coordinates: Union[Unset, GeoCoordinates]
+ if isinstance(_geo_coordinates, Unset):
+ geo_coordinates = UNSET
+ else:
+ geo_coordinates = GeoCoordinates.from_dict(_geo_coordinates)
+
+
+
+
+ location_id = d.pop("locationId", UNSET)
+
+ location = cls(
+ address=address,
+ geo_coordinates=geo_coordinates,
+ location_id=location_id,
+ )
+
+
+ location.additional_properties = d
+ return location
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/location_availability_details.py b/ebay_client/generated/inventory/models/location_availability_details.py
new file mode 100644
index 0000000..93979ba
--- /dev/null
+++ b/ebay_client/generated/inventory/models/location_availability_details.py
@@ -0,0 +1,86 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="LocationAvailabilityDetails")
+
+
+
+@_attrs_define
+class LocationAvailabilityDetails:
+ """ This type provides the unique identifier of an inventory location that is associated with a SKU within a listing.
+
+ Attributes:
+ merchant_location_key (Union[Unset, str]): The unique identifier of a seller’s fulfillment center location where
+ inventory is available for the item or item variation.
Note: When creating
+ a location mapping using the createOrReplaceSkuLocationMapping method, the value entered in this field
+ must be associated with a location with the FULFILLMENT_CENTER location type, or an error
+ will occur. Sellers can check the locationTypes array in the response of the getInventoryLocations
+ method to see if their location has a value of FULFILLMENT_CENTER.
+ """
+
+ merchant_location_key: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ merchant_location_key = self.merchant_location_key
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if merchant_location_key is not UNSET:
+ field_dict["merchantLocationKey"] = merchant_location_key
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ merchant_location_key = d.pop("merchantLocationKey", UNSET)
+
+ location_availability_details = cls(
+ merchant_location_key=merchant_location_key,
+ )
+
+
+ location_availability_details.additional_properties = d
+ return location_availability_details
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/location_details.py b/ebay_client/generated/inventory/models/location_details.py
new file mode 100644
index 0000000..7cedbcb
--- /dev/null
+++ b/ebay_client/generated/inventory/models/location_details.py
@@ -0,0 +1,117 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.address import Address
+ from ..models.geo_coordinates import GeoCoordinates
+
+
+
+
+
+T = TypeVar("T", bound="LocationDetails")
+
+
+
+@_attrs_define
+class LocationDetails:
+ """ This type is used by the createInventoryLocation call to provide an full or partial address of an inventory
+ location.
+
+ Attributes:
+ address (Union[Unset, Address]): This type is used to define the physical address of an inventory location.
+ geo_coordinates (Union[Unset, GeoCoordinates]): This type is used to express the Global Positioning System (GPS)
+ latitude and longitude coordinates of an inventory location.
+ """
+
+ address: Union[Unset, 'Address'] = UNSET
+ geo_coordinates: Union[Unset, 'GeoCoordinates'] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.address import Address
+ from ..models.geo_coordinates import GeoCoordinates
+ address: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.address, Unset):
+ address = self.address.to_dict()
+
+ geo_coordinates: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.geo_coordinates, Unset):
+ geo_coordinates = self.geo_coordinates.to_dict()
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if address is not UNSET:
+ field_dict["address"] = address
+ if geo_coordinates is not UNSET:
+ field_dict["geoCoordinates"] = geo_coordinates
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.address import Address
+ from ..models.geo_coordinates import GeoCoordinates
+ d = dict(src_dict)
+ _address = d.pop("address", UNSET)
+ address: Union[Unset, Address]
+ if isinstance(_address, Unset):
+ address = UNSET
+ else:
+ address = Address.from_dict(_address)
+
+
+
+
+ _geo_coordinates = d.pop("geoCoordinates", UNSET)
+ geo_coordinates: Union[Unset, GeoCoordinates]
+ if isinstance(_geo_coordinates, Unset):
+ geo_coordinates = UNSET
+ else:
+ geo_coordinates = GeoCoordinates.from_dict(_geo_coordinates)
+
+
+
+
+ location_details = cls(
+ address=address,
+ geo_coordinates=geo_coordinates,
+ )
+
+
+ location_details.additional_properties = d
+ return location_details
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/location_mapping.py b/ebay_client/generated/inventory/models/location_mapping.py
new file mode 100644
index 0000000..72e413d
--- /dev/null
+++ b/ebay_client/generated/inventory/models/location_mapping.py
@@ -0,0 +1,101 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.location_availability_details import LocationAvailabilityDetails
+
+
+
+
+
+T = TypeVar("T", bound="LocationMapping")
+
+
+
+@_attrs_define
+class LocationMapping:
+ """ This type provides an array of locations that are associated with a SKU within a listing.
+
+ Attributes:
+ locations (Union[Unset, list['LocationAvailabilityDetails']]): This array represents a collection of fulfillment
+ center locations mapped to a SKU.
Note: Only the first 50 locations mapped
+ to a SKU will be considered when calculating estimated delivery dates. Sellers can set up more than 50 locations
+ using this method, but only the first 50 locations will be considered for calculating the estimates.
+ """
+
+ locations: Union[Unset, list['LocationAvailabilityDetails']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.location_availability_details import LocationAvailabilityDetails
+ locations: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.locations, Unset):
+ locations = []
+ for locations_item_data in self.locations:
+ locations_item = locations_item_data.to_dict()
+ locations.append(locations_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if locations is not UNSET:
+ field_dict["locations"] = locations
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.location_availability_details import LocationAvailabilityDetails
+ d = dict(src_dict)
+ locations = []
+ _locations = d.pop("locations", UNSET)
+ for locations_item_data in (_locations or []):
+ locations_item = LocationAvailabilityDetails.from_dict(locations_item_data)
+
+
+
+ locations.append(locations_item)
+
+
+ location_mapping = cls(
+ locations=locations,
+ )
+
+
+ location_mapping.additional_properties = d
+ return location_mapping
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/location_response.py b/ebay_client/generated/inventory/models/location_response.py
new file mode 100644
index 0000000..1b363b0
--- /dev/null
+++ b/ebay_client/generated/inventory/models/location_response.py
@@ -0,0 +1,159 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.inventory_location_response import InventoryLocationResponse
+
+
+
+
+
+T = TypeVar("T", bound="LocationResponse")
+
+
+
+@_attrs_define
+class LocationResponse:
+ """ This type is used by the base response payload for the getInventoryLocations call.
+
+ Attributes:
+ href (Union[Unset, str]): The URI of the current page of results from the result set.
+ limit (Union[Unset, int]): The number of items returned on a single page from the result set.
+ next_ (Union[Unset, str]): The URI for the following page of results. This value is returned only if there is an
+ additional page of results to display from the result set.
Max length: 2048
+ offset (Union[Unset, int]): The number of results skipped in the result set before listing the first returned
+ result. This value is set in the request with the offset query parameter. Note: The items in a paginated result set use a zero-based list where the
+ first item in the list has an offset of 0.
+ prev (Union[Unset, str]): The URI for the preceding page of results. This value is returned only if there is a
+ previous page of results to display from the result set.
Max length: 2048
+ total (Union[Unset, int]): The total number of items retrieved in the result set.
If no items are found,
+ this field is returned with a value of 0.
+ locations (Union[Unset, list['InventoryLocationResponse']]): An array of one or more of the merchant's inventory
+ locations.
+ """
+
+ href: Union[Unset, str] = UNSET
+ limit: Union[Unset, int] = UNSET
+ next_: Union[Unset, str] = UNSET
+ offset: Union[Unset, int] = UNSET
+ prev: Union[Unset, str] = UNSET
+ total: Union[Unset, int] = UNSET
+ locations: Union[Unset, list['InventoryLocationResponse']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.inventory_location_response import InventoryLocationResponse
+ href = self.href
+
+ limit = self.limit
+
+ next_ = self.next_
+
+ offset = self.offset
+
+ prev = self.prev
+
+ total = self.total
+
+ locations: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.locations, Unset):
+ locations = []
+ for locations_item_data in self.locations:
+ locations_item = locations_item_data.to_dict()
+ locations.append(locations_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if href is not UNSET:
+ field_dict["href"] = href
+ if limit is not UNSET:
+ field_dict["limit"] = limit
+ if next_ is not UNSET:
+ field_dict["next"] = next_
+ if offset is not UNSET:
+ field_dict["offset"] = offset
+ if prev is not UNSET:
+ field_dict["prev"] = prev
+ if total is not UNSET:
+ field_dict["total"] = total
+ if locations is not UNSET:
+ field_dict["locations"] = locations
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.inventory_location_response import InventoryLocationResponse
+ d = dict(src_dict)
+ href = d.pop("href", UNSET)
+
+ limit = d.pop("limit", UNSET)
+
+ next_ = d.pop("next", UNSET)
+
+ offset = d.pop("offset", UNSET)
+
+ prev = d.pop("prev", UNSET)
+
+ total = d.pop("total", UNSET)
+
+ locations = []
+ _locations = d.pop("locations", UNSET)
+ for locations_item_data in (_locations or []):
+ locations_item = InventoryLocationResponse.from_dict(locations_item_data)
+
+
+
+ locations.append(locations_item)
+
+
+ location_response = cls(
+ href=href,
+ limit=limit,
+ next_=next_,
+ offset=offset,
+ prev=prev,
+ total=total,
+ locations=locations,
+ )
+
+
+ location_response.additional_properties = d
+ return location_response
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/manufacturer.py b/ebay_client/generated/inventory/models/manufacturer.py
new file mode 100644
index 0000000..f5bb6f7
--- /dev/null
+++ b/ebay_client/generated/inventory/models/manufacturer.py
@@ -0,0 +1,176 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="Manufacturer")
+
+
+
+@_attrs_define
+class Manufacturer:
+ """ This type provides name and contact information about the manufacturer of the item.
+
+ Attributes:
+ address_line_1 (Union[Unset, str]): The first line of the product manufacturer's street address.
Max
+ length: 180 characters
+ address_line_2 (Union[Unset, str]): The second line of the product manufacturer's street address. This field is
+ not always used, but can be used for secondary address information such as 'Suite Number' or 'Apt
+ Number'.
Max length: 180 characters
+ city (Union[Unset, str]): The city of the product manufacturer's street address.
Max length: 64
+ characters
+ company_name (Union[Unset, str]): The company name of the product manufacturer.
Max length: 100
+ characters
+ contact_url (Union[Unset, str]): The contact URL of the product manufacturer.
Max length: 250
+ characters
+ country (Union[Unset, str]): This defines the list of valid country codes, adapted from
+ http://www.iso.org/iso/country_codes, ISO 3166-1 country code. List elements take the following form to identify
+ a two-letter code with a short name in English, a three-digit code, and a three-letter code: For example, the
+ entry for Japan includes Japan, 392, JPN. Short codes provide uniform recognition, avoiding language-dependent
+ country names. The number code is helpful where Latin script may be problematic. Not all listed codes are
+ universally recognized as countries, for example: code AQ is Antarctica, 010, ATA For implementation help, refer
+ to eBay API
+ documentation
+ email (Union[Unset, str]): The product manufacturer's business email address.
Max length: 180
+ characters
+ phone (Union[Unset, str]): The product manufacturer's business phone number.
Max length: 64
+ characters
+ postal_code (Union[Unset, str]): The postal code of the product manufacturer's street address.
Max
+ length: 9 characters
+ state_or_province (Union[Unset, str]): The state or province of the product manufacturer's street
+ address.
Max length: 64 characters
+ """
+
+ address_line_1: Union[Unset, str] = UNSET
+ address_line_2: Union[Unset, str] = UNSET
+ city: Union[Unset, str] = UNSET
+ company_name: Union[Unset, str] = UNSET
+ contact_url: Union[Unset, str] = UNSET
+ country: Union[Unset, str] = UNSET
+ email: Union[Unset, str] = UNSET
+ phone: Union[Unset, str] = UNSET
+ postal_code: Union[Unset, str] = UNSET
+ state_or_province: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ address_line_1 = self.address_line_1
+
+ address_line_2 = self.address_line_2
+
+ city = self.city
+
+ company_name = self.company_name
+
+ contact_url = self.contact_url
+
+ country = self.country
+
+ email = self.email
+
+ phone = self.phone
+
+ postal_code = self.postal_code
+
+ state_or_province = self.state_or_province
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if address_line_1 is not UNSET:
+ field_dict["addressLine1"] = address_line_1
+ if address_line_2 is not UNSET:
+ field_dict["addressLine2"] = address_line_2
+ if city is not UNSET:
+ field_dict["city"] = city
+ if company_name is not UNSET:
+ field_dict["companyName"] = company_name
+ if contact_url is not UNSET:
+ field_dict["contactUrl"] = contact_url
+ if country is not UNSET:
+ field_dict["country"] = country
+ if email is not UNSET:
+ field_dict["email"] = email
+ if phone is not UNSET:
+ field_dict["phone"] = phone
+ if postal_code is not UNSET:
+ field_dict["postalCode"] = postal_code
+ if state_or_province is not UNSET:
+ field_dict["stateOrProvince"] = state_or_province
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ address_line_1 = d.pop("addressLine1", UNSET)
+
+ address_line_2 = d.pop("addressLine2", UNSET)
+
+ city = d.pop("city", UNSET)
+
+ company_name = d.pop("companyName", UNSET)
+
+ contact_url = d.pop("contactUrl", UNSET)
+
+ country = d.pop("country", UNSET)
+
+ email = d.pop("email", UNSET)
+
+ phone = d.pop("phone", UNSET)
+
+ postal_code = d.pop("postalCode", UNSET)
+
+ state_or_province = d.pop("stateOrProvince", UNSET)
+
+ manufacturer = cls(
+ address_line_1=address_line_1,
+ address_line_2=address_line_2,
+ city=city,
+ company_name=company_name,
+ contact_url=contact_url,
+ country=country,
+ email=email,
+ phone=phone,
+ postal_code=postal_code,
+ state_or_province=state_or_province,
+ )
+
+
+ manufacturer.additional_properties = d
+ return manufacturer
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/migrate_listing.py b/ebay_client/generated/inventory/models/migrate_listing.py
new file mode 100644
index 0000000..43fda7c
--- /dev/null
+++ b/ebay_client/generated/inventory/models/migrate_listing.py
@@ -0,0 +1,81 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="MigrateListing")
+
+
+
+@_attrs_define
+class MigrateListing:
+ """ This type is used to specify one to five eBay listings that will be migrated to the new Inventory model.
+
+ Attributes:
+ listing_id (Union[Unset, str]): The unique identifier of the eBay listing to migrate to the new Inventory model.
+ In the Trading API, this field is known as the ItemID.
Up to five unique eBay listings
+ may be specified here in separate listingId fields. The seller should make sure that each of
+ these listings meet the requirements that are stated at the top of this Call Reference page.
+ """
+
+ listing_id: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ listing_id = self.listing_id
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if listing_id is not UNSET:
+ field_dict["listingId"] = listing_id
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ listing_id = d.pop("listingId", UNSET)
+
+ migrate_listing = cls(
+ listing_id=listing_id,
+ )
+
+
+ migrate_listing.additional_properties = d
+ return migrate_listing
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/migrate_listing_response.py b/ebay_client/generated/inventory/models/migrate_listing_response.py
new file mode 100644
index 0000000..41a2ae3
--- /dev/null
+++ b/ebay_client/generated/inventory/models/migrate_listing_response.py
@@ -0,0 +1,197 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.inventory_item_listing import InventoryItemListing
+ from ..models.error import Error
+
+
+
+
+
+T = TypeVar("T", bound="MigrateListingResponse")
+
+
+
+@_attrs_define
+class MigrateListingResponse:
+ """ This type is used to display the results of each listing that the seller attempted to migrate.
+
+ Attributes:
+ errors (Union[Unset, list['Error']]): If one or more errors occur with the attempt to migrate the listing, this
+ container will be returned with detailed information on each error.
+ inventory_item_group_key (Union[Unset, str]): This field will only be returned for a multiple-variation listing
+ that the seller attempted to migrate. Its value is auto-generated by eBay. For a multiple-variation listing that
+ is successfully migrated to the new Inventory model, eBay automatically creates an inventory item group object
+ for the listing, and the seller will be able to retrieve and manage that new inventory item group object by
+ using the value in this field.
+ inventory_items (Union[Unset, list['InventoryItemListing']]): This container exists of an array of SKU values
+ and offer IDs. For single-variation listings, this will only be one SKU value and one offer ID (if listing was
+ successfully migrated), but multiple SKU values and offer IDs will be returned for multiple-variation listings.
+ listing_id (Union[Unset, str]): The unique identifier of the eBay listing that the seller attempted to migrate.
+ marketplace_id (Union[Unset, str]): This is the unique identifier of the eBay Marketplace where the listing
+ resides. The value fo the eBay US site will be EBAY_US. For implementation help, refer to eBay API documentation
+ status_code (Union[Unset, int]): This field is returned for each listing that the seller attempted to migrate.
+ See the HTTP status codes table to see which each status code indicates.
+ warnings (Union[Unset, list['Error']]): If one or more warnings occur with the attempt to migrate the listing,
+ this container will be returned with detailed information on each warning. It is possible that a listing can be
+ successfully migrated even if a warning occurs.
+ """
+
+ errors: Union[Unset, list['Error']] = UNSET
+ inventory_item_group_key: Union[Unset, str] = UNSET
+ inventory_items: Union[Unset, list['InventoryItemListing']] = UNSET
+ listing_id: Union[Unset, str] = UNSET
+ marketplace_id: Union[Unset, str] = UNSET
+ status_code: Union[Unset, int] = UNSET
+ warnings: Union[Unset, list['Error']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.inventory_item_listing import InventoryItemListing
+ from ..models.error import Error
+ errors: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.errors, Unset):
+ errors = []
+ for errors_item_data in self.errors:
+ errors_item = errors_item_data.to_dict()
+ errors.append(errors_item)
+
+
+
+ inventory_item_group_key = self.inventory_item_group_key
+
+ inventory_items: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.inventory_items, Unset):
+ inventory_items = []
+ for inventory_items_item_data in self.inventory_items:
+ inventory_items_item = inventory_items_item_data.to_dict()
+ inventory_items.append(inventory_items_item)
+
+
+
+ listing_id = self.listing_id
+
+ marketplace_id = self.marketplace_id
+
+ status_code = self.status_code
+
+ warnings: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.warnings, Unset):
+ warnings = []
+ for warnings_item_data in self.warnings:
+ warnings_item = warnings_item_data.to_dict()
+ warnings.append(warnings_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if errors is not UNSET:
+ field_dict["errors"] = errors
+ if inventory_item_group_key is not UNSET:
+ field_dict["inventoryItemGroupKey"] = inventory_item_group_key
+ if inventory_items is not UNSET:
+ field_dict["inventoryItems"] = inventory_items
+ if listing_id is not UNSET:
+ field_dict["listingId"] = listing_id
+ if marketplace_id is not UNSET:
+ field_dict["marketplaceId"] = marketplace_id
+ if status_code is not UNSET:
+ field_dict["statusCode"] = status_code
+ if warnings is not UNSET:
+ field_dict["warnings"] = warnings
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.inventory_item_listing import InventoryItemListing
+ from ..models.error import Error
+ d = dict(src_dict)
+ errors = []
+ _errors = d.pop("errors", UNSET)
+ for errors_item_data in (_errors or []):
+ errors_item = Error.from_dict(errors_item_data)
+
+
+
+ errors.append(errors_item)
+
+
+ inventory_item_group_key = d.pop("inventoryItemGroupKey", UNSET)
+
+ inventory_items = []
+ _inventory_items = d.pop("inventoryItems", UNSET)
+ for inventory_items_item_data in (_inventory_items or []):
+ inventory_items_item = InventoryItemListing.from_dict(inventory_items_item_data)
+
+
+
+ inventory_items.append(inventory_items_item)
+
+
+ listing_id = d.pop("listingId", UNSET)
+
+ marketplace_id = d.pop("marketplaceId", UNSET)
+
+ status_code = d.pop("statusCode", UNSET)
+
+ warnings = []
+ _warnings = d.pop("warnings", UNSET)
+ for warnings_item_data in (_warnings or []):
+ warnings_item = Error.from_dict(warnings_item_data)
+
+
+
+ warnings.append(warnings_item)
+
+
+ migrate_listing_response = cls(
+ errors=errors,
+ inventory_item_group_key=inventory_item_group_key,
+ inventory_items=inventory_items,
+ listing_id=listing_id,
+ marketplace_id=marketplace_id,
+ status_code=status_code,
+ warnings=warnings,
+ )
+
+
+ migrate_listing_response.additional_properties = d
+ return migrate_listing_response
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/name_value_list.py b/ebay_client/generated/inventory/models/name_value_list.py
new file mode 100644
index 0000000..216faf5
--- /dev/null
+++ b/ebay_client/generated/inventory/models/name_value_list.py
@@ -0,0 +1,99 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="NameValueList")
+
+
+
+@_attrs_define
+class NameValueList:
+ """ This type is used by the compatibilityProperties container to identify a motor vehicle using
+ name/value pairs.
+
+ Attributes:
+ name (Union[Unset, str]): This string value identifies the motor vehicle aspect, such as 'make', 'model',
+ 'year', 'trim', and 'engine'. Typically, the make, model, and year of the motor vehicle are always required,
+ with the trim and engine being necessary sometimes, but it will be dependent on the part or accessory, and on
+ the vehicle class.
The getCompatibilityProperties method of the Taxonomy API can be used to retrieve applicable
+ vehicle aspect names for a specified category.
+ value (Union[Unset, str]): This string value identifies the motor vehicle aspect specified in the corresponding
+ name field. For example, if the name field is 'make', this field may be
+ 'Toyota', or if the name field is 'model', this field may be 'Camry'.
The getCompatibilityPropertyValues method of the Taxonomy API can be used to retrieve possible
+ values for vehicle aspect names.
+ """
+
+ name: Union[Unset, str] = UNSET
+ value: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ name = self.name
+
+ value = self.value
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if name is not UNSET:
+ field_dict["name"] = name
+ if value is not UNSET:
+ field_dict["value"] = value
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ name = d.pop("name", UNSET)
+
+ value = d.pop("value", UNSET)
+
+ name_value_list = cls(
+ name=name,
+ value=value,
+ )
+
+
+ name_value_list.additional_properties = d
+ return name_value_list
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/offer_key_with_id.py b/ebay_client/generated/inventory/models/offer_key_with_id.py
new file mode 100644
index 0000000..31cd566
--- /dev/null
+++ b/ebay_client/generated/inventory/models/offer_key_with_id.py
@@ -0,0 +1,86 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="OfferKeyWithId")
+
+
+
+@_attrs_define
+class OfferKeyWithId:
+ """ This type is used by the getListingFees call to indicate the unpublished offer(s) for which
+ expected listing fees will be retrieved. The user passes in one or more offerId values (a maximum
+ of 250). See the Standard selling fees
+ help page for more information on listing fees.
+
+ Attributes:
+ offer_id (Union[Unset, str]): The unique identifier of an unpublished offer for which expected listing fees will
+ be retrieved. One to 250 offerId values can be passed in to the offers
+ container for one getListingFees call.
Use the getOffers method to retrieve offer IDs.
Note: Errors will occur if offerId values representing published
+ offers are passed in.
+ """
+
+ offer_id: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ offer_id = self.offer_id
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if offer_id is not UNSET:
+ field_dict["offerId"] = offer_id
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ offer_id = d.pop("offerId", UNSET)
+
+ offer_key_with_id = cls(
+ offer_id=offer_id,
+ )
+
+
+ offer_key_with_id.additional_properties = d
+ return offer_key_with_id
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/offer_keys_with_id.py b/ebay_client/generated/inventory/models/offer_keys_with_id.py
new file mode 100644
index 0000000..aec1efb
--- /dev/null
+++ b/ebay_client/generated/inventory/models/offer_keys_with_id.py
@@ -0,0 +1,103 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.offer_key_with_id import OfferKeyWithId
+
+
+
+
+
+T = TypeVar("T", bound="OfferKeysWithId")
+
+
+
+@_attrs_define
+class OfferKeysWithId:
+ """ This type is used by the base request payload of the getListingFees call.
+
+ Attributes:
+ offers (Union[Unset, list['OfferKeyWithId']]): This container is used to identify one or more (up to 250)
+ unpublished offers for which expected listing fees will be retrieved. The user passes one or more
+ offerId values (maximum of 250) in to this container to identify the unpublished offers in
+ which to retrieve expected listing fees. This call is only applicable for offers in the unpublished state.
+
The call response gives aggregate fee amounts per eBay marketplace, and does not give fee information at
+ the individual offer level.
+ """
+
+ offers: Union[Unset, list['OfferKeyWithId']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.offer_key_with_id import OfferKeyWithId
+ offers: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.offers, Unset):
+ offers = []
+ for offers_item_data in self.offers:
+ offers_item = offers_item_data.to_dict()
+ offers.append(offers_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if offers is not UNSET:
+ field_dict["offers"] = offers
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.offer_key_with_id import OfferKeyWithId
+ d = dict(src_dict)
+ offers = []
+ _offers = d.pop("offers", UNSET)
+ for offers_item_data in (_offers or []):
+ offers_item = OfferKeyWithId.from_dict(offers_item_data)
+
+
+
+ offers.append(offers_item)
+
+
+ offer_keys_with_id = cls(
+ offers=offers,
+ )
+
+
+ offer_keys_with_id.additional_properties = d
+ return offer_keys_with_id
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/offer_price_quantity.py b/ebay_client/generated/inventory/models/offer_price_quantity.py
new file mode 100644
index 0000000..bd44412
--- /dev/null
+++ b/ebay_client/generated/inventory/models/offer_price_quantity.py
@@ -0,0 +1,129 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.amount import Amount
+
+
+
+
+
+T = TypeVar("T", bound="OfferPriceQuantity")
+
+
+
+@_attrs_define
+class OfferPriceQuantity:
+ """ This type is used by the offers container in a Bulk Update Price and Quantity call
+ to update the current price and/or quantity of one or more offers associated with a specific inventory item.
+
+ Attributes:
+ available_quantity (Union[Unset, int]): This field is used if the seller wants to modify the current quantity of
+ the inventory item that will be available for purchase in the offer (identified by the corresponding
+ offerId value).
This value represents the quantity of the item that is available in the
+ marketplace specified within the offer, not the total quantity available. Because of this, this value should not
+ exceed the value specified in the quantity field of the
+ shipToLocationAvailability container (the total available quantity of the item across all
+ marketplaces).
Note: To ensure that the available quantity
+ allocated to a specific marketplace doesn't exceed the total available stock, the quantity specified on a
+ listing will be the minimum value between this field and the quantity field.
Either the availableQuantity field or the price container
+ is required, but not necessarily both.
+ offer_id (Union[Unset, str]): This field is the unique identifier of the offer. If an offers
+ container is used to update one or more offers associated to a specific inventory item, the
+ offerId value is required in order to identify the offer to update with a modified price and/or
+ quantity.
The seller can use the getOffers method (passing in the correct SKU value as a query parameter) to retrieve
+ offerId values for offers associated with the SKU.
+ price (Union[Unset, Amount]): This type is used to express a dollar value and the applicable currency.
+ """
+
+ available_quantity: Union[Unset, int] = UNSET
+ offer_id: Union[Unset, str] = UNSET
+ price: Union[Unset, 'Amount'] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.amount import Amount
+ available_quantity = self.available_quantity
+
+ offer_id = self.offer_id
+
+ price: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.price, Unset):
+ price = self.price.to_dict()
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if available_quantity is not UNSET:
+ field_dict["availableQuantity"] = available_quantity
+ if offer_id is not UNSET:
+ field_dict["offerId"] = offer_id
+ if price is not UNSET:
+ field_dict["price"] = price
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.amount import Amount
+ d = dict(src_dict)
+ available_quantity = d.pop("availableQuantity", UNSET)
+
+ offer_id = d.pop("offerId", UNSET)
+
+ _price = d.pop("price", UNSET)
+ price: Union[Unset, Amount]
+ if isinstance(_price, Unset):
+ price = UNSET
+ else:
+ price = Amount.from_dict(_price)
+
+
+
+
+ offer_price_quantity = cls(
+ available_quantity=available_quantity,
+ offer_id=offer_id,
+ price=price,
+ )
+
+
+ offer_price_quantity.additional_properties = d
+ return offer_price_quantity
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/offer_response.py b/ebay_client/generated/inventory/models/offer_response.py
new file mode 100644
index 0000000..d917327
--- /dev/null
+++ b/ebay_client/generated/inventory/models/offer_response.py
@@ -0,0 +1,118 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.error import Error
+
+
+
+
+
+T = TypeVar("T", bound="OfferResponse")
+
+
+
+@_attrs_define
+class OfferResponse:
+ """ This type is used by the response payload of the createOffer and updateOffer
+ calls. The offerId field contains the unique identifier for the offer if the offer is successfully
+ created by the createOffer call. The warnings field contains any errors and/or
+ warnings that may have been triggered by the call. Note: The
+ offerId value is only returned with a successful createOffer call. This field will
+ not be returned in the updateOffer response.
+
+ Attributes:
+ offer_id (Union[Unset, str]): The unique identifier of the offer that was just created with a
+ createOffer call. It is not returned if the createOffer call fails to create
+ an offer. This identifier will be needed for many offer-related calls. Note: The offerId value is only returned with a successful
+ createOffer call. This field will not be returned in the updateOffer
+ response.
+ warnings (Union[Unset, list['Error']]): This container will contain an array of errors and/or warnings when a
+ call is made, and errors and/or warnings occur.
+ """
+
+ offer_id: Union[Unset, str] = UNSET
+ warnings: Union[Unset, list['Error']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.error import Error
+ offer_id = self.offer_id
+
+ warnings: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.warnings, Unset):
+ warnings = []
+ for warnings_item_data in self.warnings:
+ warnings_item = warnings_item_data.to_dict()
+ warnings.append(warnings_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if offer_id is not UNSET:
+ field_dict["offerId"] = offer_id
+ if warnings is not UNSET:
+ field_dict["warnings"] = warnings
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.error import Error
+ d = dict(src_dict)
+ offer_id = d.pop("offerId", UNSET)
+
+ warnings = []
+ _warnings = d.pop("warnings", UNSET)
+ for warnings_item_data in (_warnings or []):
+ warnings_item = Error.from_dict(warnings_item_data)
+
+
+
+ warnings.append(warnings_item)
+
+
+ offer_response = cls(
+ offer_id=offer_id,
+ warnings=warnings,
+ )
+
+
+ offer_response.additional_properties = d
+ return offer_response
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/offer_response_with_listing_id.py b/ebay_client/generated/inventory/models/offer_response_with_listing_id.py
new file mode 100644
index 0000000..b072f06
--- /dev/null
+++ b/ebay_client/generated/inventory/models/offer_response_with_listing_id.py
@@ -0,0 +1,158 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.error import Error
+
+
+
+
+
+T = TypeVar("T", bound="OfferResponseWithListingId")
+
+
+
+@_attrs_define
+class OfferResponseWithListingId:
+ """ This type is used to indicate the status of each offer that the user attempted to publish. If an offer is
+ successfully published, an eBay listing ID (also known as an Item ID) is returned. If there is an issue publishing
+ the offer and creating the new eBay listing, the information about why the listing failed should be returned in the
+ errors and/or warnings containers.
+
+ Attributes:
+ errors (Union[Unset, list['Error']]): This container will be returned if there were one or more errors
+ associated with publishing the offer.
+ listing_id (Union[Unset, str]): The unique identifier of the newly-created eBay listing. This field is only
+ returned if the seller successfully published the offer and created the new eBay listing.
+ offer_id (Union[Unset, str]): The unique identifier of the offer that the seller published (or attempted to
+ publish).
+ status_code (Union[Unset, int]): The HTTP status code returned in this field indicates the success or failure of
+ publishing the offer specified in the offerId field. See the HTTP status codes
+ table to see which each status code indicates.
+ warnings (Union[Unset, list['Error']]): This container will be returned if there were one or more warnings
+ associated with publishing the offer.
+ """
+
+ errors: Union[Unset, list['Error']] = UNSET
+ listing_id: Union[Unset, str] = UNSET
+ offer_id: Union[Unset, str] = UNSET
+ status_code: Union[Unset, int] = UNSET
+ warnings: Union[Unset, list['Error']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.error import Error
+ errors: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.errors, Unset):
+ errors = []
+ for errors_item_data in self.errors:
+ errors_item = errors_item_data.to_dict()
+ errors.append(errors_item)
+
+
+
+ listing_id = self.listing_id
+
+ offer_id = self.offer_id
+
+ status_code = self.status_code
+
+ warnings: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.warnings, Unset):
+ warnings = []
+ for warnings_item_data in self.warnings:
+ warnings_item = warnings_item_data.to_dict()
+ warnings.append(warnings_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if errors is not UNSET:
+ field_dict["errors"] = errors
+ if listing_id is not UNSET:
+ field_dict["listingId"] = listing_id
+ if offer_id is not UNSET:
+ field_dict["offerId"] = offer_id
+ if status_code is not UNSET:
+ field_dict["statusCode"] = status_code
+ if warnings is not UNSET:
+ field_dict["warnings"] = warnings
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.error import Error
+ d = dict(src_dict)
+ errors = []
+ _errors = d.pop("errors", UNSET)
+ for errors_item_data in (_errors or []):
+ errors_item = Error.from_dict(errors_item_data)
+
+
+
+ errors.append(errors_item)
+
+
+ listing_id = d.pop("listingId", UNSET)
+
+ offer_id = d.pop("offerId", UNSET)
+
+ status_code = d.pop("statusCode", UNSET)
+
+ warnings = []
+ _warnings = d.pop("warnings", UNSET)
+ for warnings_item_data in (_warnings or []):
+ warnings_item = Error.from_dict(warnings_item_data)
+
+
+
+ warnings.append(warnings_item)
+
+
+ offer_response_with_listing_id = cls(
+ errors=errors,
+ listing_id=listing_id,
+ offer_id=offer_id,
+ status_code=status_code,
+ warnings=warnings,
+ )
+
+
+ offer_response_with_listing_id.additional_properties = d
+ return offer_response_with_listing_id
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/offer_sku_response.py b/ebay_client/generated/inventory/models/offer_sku_response.py
new file mode 100644
index 0000000..88ea09e
--- /dev/null
+++ b/ebay_client/generated/inventory/models/offer_sku_response.py
@@ -0,0 +1,188 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.error import Error
+
+
+
+
+
+T = TypeVar("T", bound="OfferSkuResponse")
+
+
+
+@_attrs_define
+class OfferSkuResponse:
+ """ This type is used by the bulkCreateOffer response to show the status of each offer that the seller
+ attempted to create with the bulkCreateOffer method. For each offer that is created successfully,
+ the returned statusCode value should be 200, and a unique offerId
+ should be created for each offer. If any issues occur with the creation of any offers, errors
+ and/or warnings containers will be returned.
+
+ Attributes:
+ errors (Union[Unset, list['Error']]): This container will be returned at the offer level, and will contain one
+ or more errors if any occurred with the attempted creation of the corresponding offer.
+ format_ (Union[Unset, str]): This enumeration value indicates the listing format of the offer. For
+ implementation help, refer to eBay API documentation
+ marketplace_id (Union[Unset, str]): This enumeration value is the unique identifier of the eBay marketplace for
+ which the offer will be made available. This enumeration value should be the same for all offers since the
+ bulkCreateOffer method can only be used to create offers for one eBay marketplace at a time.
+ For implementation help, refer to eBay API documentation
+ offer_id (Union[Unset, str]): The unique identifier of the newly-created offer. This identifier should be
+ automatically created by eBay if the creation of the offer was successful. It is not returned if the creation of
+ the offer was not successful. In which case, the user may want to scan the corresponding errors
+ and/or warnings container to see what the issue may be.
+ sku (Union[Unset, str]): The seller-defined Stock-Keeping Unit (SKU) of the inventory item. The
+ sku value is required for each product offer that the seller is trying to create, and it is
+ always returned to identified the product that is associated with the offer.
+ status_code (Union[Unset, int]): The integer value returned in this field is the http status code. If an offer
+ is created successfully, the value returned in this field should be 200. A user can view the
+ HTTP status codes section for information on other status codes that may be returned with the
+ bulkCreateOffer method.
+ warnings (Union[Unset, list['Error']]): This container will be returned at the offer level, and will contain one
+ or more warnings if any occurred with the attempted creation of the corresponding offer. Note that it is
+ possible that an offer can be created successfully even if one or more warnings are triggered.
+ """
+
+ errors: Union[Unset, list['Error']] = UNSET
+ format_: Union[Unset, str] = UNSET
+ marketplace_id: Union[Unset, str] = UNSET
+ offer_id: Union[Unset, str] = UNSET
+ sku: Union[Unset, str] = UNSET
+ status_code: Union[Unset, int] = UNSET
+ warnings: Union[Unset, list['Error']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.error import Error
+ errors: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.errors, Unset):
+ errors = []
+ for errors_item_data in self.errors:
+ errors_item = errors_item_data.to_dict()
+ errors.append(errors_item)
+
+
+
+ format_ = self.format_
+
+ marketplace_id = self.marketplace_id
+
+ offer_id = self.offer_id
+
+ sku = self.sku
+
+ status_code = self.status_code
+
+ warnings: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.warnings, Unset):
+ warnings = []
+ for warnings_item_data in self.warnings:
+ warnings_item = warnings_item_data.to_dict()
+ warnings.append(warnings_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if errors is not UNSET:
+ field_dict["errors"] = errors
+ if format_ is not UNSET:
+ field_dict["format"] = format_
+ if marketplace_id is not UNSET:
+ field_dict["marketplaceId"] = marketplace_id
+ if offer_id is not UNSET:
+ field_dict["offerId"] = offer_id
+ if sku is not UNSET:
+ field_dict["sku"] = sku
+ if status_code is not UNSET:
+ field_dict["statusCode"] = status_code
+ if warnings is not UNSET:
+ field_dict["warnings"] = warnings
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.error import Error
+ d = dict(src_dict)
+ errors = []
+ _errors = d.pop("errors", UNSET)
+ for errors_item_data in (_errors or []):
+ errors_item = Error.from_dict(errors_item_data)
+
+
+
+ errors.append(errors_item)
+
+
+ format_ = d.pop("format", UNSET)
+
+ marketplace_id = d.pop("marketplaceId", UNSET)
+
+ offer_id = d.pop("offerId", UNSET)
+
+ sku = d.pop("sku", UNSET)
+
+ status_code = d.pop("statusCode", UNSET)
+
+ warnings = []
+ _warnings = d.pop("warnings", UNSET)
+ for warnings_item_data in (_warnings or []):
+ warnings_item = Error.from_dict(warnings_item_data)
+
+
+
+ warnings.append(warnings_item)
+
+
+ offer_sku_response = cls(
+ errors=errors,
+ format_=format_,
+ marketplace_id=marketplace_id,
+ offer_id=offer_id,
+ sku=sku,
+ status_code=status_code,
+ warnings=warnings,
+ )
+
+
+ offer_sku_response.additional_properties = d
+ return offer_sku_response
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/offers.py b/ebay_client/generated/inventory/models/offers.py
new file mode 100644
index 0000000..5dc6d55
--- /dev/null
+++ b/ebay_client/generated/inventory/models/offers.py
@@ -0,0 +1,169 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.ebay_offer_details_with_all import EbayOfferDetailsWithAll
+
+
+
+
+
+T = TypeVar("T", bound="Offers")
+
+
+
+@_attrs_define
+class Offers:
+ """ This type is used by the base response of the getOffers call, and it is an array of one or more of
+ the seller's offers, along with pagination data.
+
+ Attributes:
+ href (Union[Unset, str]): This is the URL to the current page of offers.
+ limit (Union[Unset, int]): This integer value is the number of offers that will be displayed on each results
+ page.
+ next_ (Union[Unset, str]): This is the URL to the next page of offers. This field will only be returned if there
+ are additional offers to view.
+ offers (Union[Unset, list['EbayOfferDetailsWithAll']]): This container is an array of one or more of the
+ seller's offers for the SKU value that is passed in through the required sku query
+ parameter.
Note: Currently, the Inventory API does not support
+ the same SKU across multiple eBay marketplaces.
Max Occurs: 25
+ prev (Union[Unset, str]): This is the URL to the previous page of offers. This field will only be returned if
+ there are previous offers to view.
+ size (Union[Unset, int]): This integer value indicates the number of offers being displayed on the current page
+ of results. This number will generally be the same as the limit value if there are additional
+ pages of results to view.
Note: The same SKU can be offered
+ through an auction and a fixed-price listing concurrently. If this is the case, getOffers will return two
+ offers and this value will be 2. Otherwise, only one offer will be returned and this value will be
+ 1.
+ total (Union[Unset, int]): This integer value is the total number of offers that exist for the specified SKU
+ value. Based on this number and on the limit value, the seller may have to toggle through
+ multiple pages to view all offers.
Note: The same SKU can be
+ offered through an auction and a fixed-price listing concurrently. If this is the case, getOffers will
+ return two offers, so this value would be 2. Otherwise, only one offer will be returned and this
+ value will be 1.
+ """
+
+ href: Union[Unset, str] = UNSET
+ limit: Union[Unset, int] = UNSET
+ next_: Union[Unset, str] = UNSET
+ offers: Union[Unset, list['EbayOfferDetailsWithAll']] = UNSET
+ prev: Union[Unset, str] = UNSET
+ size: Union[Unset, int] = UNSET
+ total: Union[Unset, int] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.ebay_offer_details_with_all import EbayOfferDetailsWithAll
+ href = self.href
+
+ limit = self.limit
+
+ next_ = self.next_
+
+ offers: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.offers, Unset):
+ offers = []
+ for offers_item_data in self.offers:
+ offers_item = offers_item_data.to_dict()
+ offers.append(offers_item)
+
+
+
+ prev = self.prev
+
+ size = self.size
+
+ total = self.total
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if href is not UNSET:
+ field_dict["href"] = href
+ if limit is not UNSET:
+ field_dict["limit"] = limit
+ if next_ is not UNSET:
+ field_dict["next"] = next_
+ if offers is not UNSET:
+ field_dict["offers"] = offers
+ if prev is not UNSET:
+ field_dict["prev"] = prev
+ if size is not UNSET:
+ field_dict["size"] = size
+ if total is not UNSET:
+ field_dict["total"] = total
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.ebay_offer_details_with_all import EbayOfferDetailsWithAll
+ d = dict(src_dict)
+ href = d.pop("href", UNSET)
+
+ limit = d.pop("limit", UNSET)
+
+ next_ = d.pop("next", UNSET)
+
+ offers = []
+ _offers = d.pop("offers", UNSET)
+ for offers_item_data in (_offers or []):
+ offers_item = EbayOfferDetailsWithAll.from_dict(offers_item_data)
+
+
+
+ offers.append(offers_item)
+
+
+ prev = d.pop("prev", UNSET)
+
+ size = d.pop("size", UNSET)
+
+ total = d.pop("total", UNSET)
+
+ offers = cls(
+ href=href,
+ limit=limit,
+ next_=next_,
+ offers=offers,
+ prev=prev,
+ size=size,
+ total=total,
+ )
+
+
+ offers.additional_properties = d
+ return offers
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/operating_hours.py b/ebay_client/generated/inventory/models/operating_hours.py
new file mode 100644
index 0000000..f2907b8
--- /dev/null
+++ b/ebay_client/generated/inventory/models/operating_hours.py
@@ -0,0 +1,116 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.interval import Interval
+
+
+
+
+
+T = TypeVar("T", bound="OperatingHours")
+
+
+
+@_attrs_define
+class OperatingHours:
+ """ This type is used to express the regular operating hours of a merchant's store or fulfillment center during the days
+ of the week.
+
+ Attributes:
+ day_of_week_enum (Union[Unset, str]): A dayOfWeekEnum value is required for each day of the
+ week that the store location has regular operating hours.
This field is returned if operating hours are
+ defined for the store location. For implementation help, refer to eBay API documentation
+ intervals (Union[Unset, list['Interval']]): This container is used to define the opening and closing times of a
+ store location's working day (defined in the dayOfWeekEnum field). An
+ intervals container is needed for each day of the week that the store location is open. If a
+ store location closes for lunch (or any other period during the day) and then reopens, multiple
+ open and close pairs are needed
This container is returned if
+ operating hours are defined for the store location.
+ """
+
+ day_of_week_enum: Union[Unset, str] = UNSET
+ intervals: Union[Unset, list['Interval']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.interval import Interval
+ day_of_week_enum = self.day_of_week_enum
+
+ intervals: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.intervals, Unset):
+ intervals = []
+ for intervals_item_data in self.intervals:
+ intervals_item = intervals_item_data.to_dict()
+ intervals.append(intervals_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if day_of_week_enum is not UNSET:
+ field_dict["dayOfWeekEnum"] = day_of_week_enum
+ if intervals is not UNSET:
+ field_dict["intervals"] = intervals
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.interval import Interval
+ d = dict(src_dict)
+ day_of_week_enum = d.pop("dayOfWeekEnum", UNSET)
+
+ intervals = []
+ _intervals = d.pop("intervals", UNSET)
+ for intervals_item_data in (_intervals or []):
+ intervals_item = Interval.from_dict(intervals_item_data)
+
+
+
+ intervals.append(intervals_item)
+
+
+ operating_hours = cls(
+ day_of_week_enum=day_of_week_enum,
+ intervals=intervals,
+ )
+
+
+ operating_hours.additional_properties = d
+ return operating_hours
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/overrides.py b/ebay_client/generated/inventory/models/overrides.py
new file mode 100644
index 0000000..1656f2c
--- /dev/null
+++ b/ebay_client/generated/inventory/models/overrides.py
@@ -0,0 +1,113 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="Overrides")
+
+
+
+@_attrs_define
+class Overrides:
+ """ This type defines the override dates for cut-off times. This allows sellers to set special hours for their inventory
+ location and specify different cut-off times on these days.
+
+ Attributes:
+ cut_off_time (Union[Unset, str]): This field is used to override the cut-off time(s) specified in the
+ weeklySchedule container. If an order is placed after this time in the specified date or date range, it
+ will be handled by the seller on the following day.
Format: 00:00
+ end_date (Union[Unset, str]): The end date of the cut-off time override in ISO
+ 8601 format, which is based on the 24-hour Coordinated Universal Time (UTC) clock.
Note: If the cut-off time override is only for a single day, input the same date in the
+ startDate and endDate fields.
Format:
+ [YYYY]-[MM]-[DD]
Example: 2024-08-06
Note: The time zone for this date is specified from the timeZoneId field. If
+ this field is not used, the time zone will be derived from the provided address.
+ start_date (Union[Unset, str]): The start date of the cut-off time override in ISO
+ 8601 format, which is based on the 24-hour Coordinated Universal Time (UTC) clock.
Note: If the cut-off time override is only for a single day, input the same date in the
+ startDate and endDate fields.
Format:
+ [YYYY]-[MM]-[DD]
Example: 2024-08-04
Note: The time zone for this date is specified from the timeZoneId field. If
+ this field is not used, the time zone will be derived from the provided address.
+ """
+
+ cut_off_time: Union[Unset, str] = UNSET
+ end_date: Union[Unset, str] = UNSET
+ start_date: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ cut_off_time = self.cut_off_time
+
+ end_date = self.end_date
+
+ start_date = self.start_date
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if cut_off_time is not UNSET:
+ field_dict["cutOffTime"] = cut_off_time
+ if end_date is not UNSET:
+ field_dict["endDate"] = end_date
+ if start_date is not UNSET:
+ field_dict["startDate"] = start_date
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ cut_off_time = d.pop("cutOffTime", UNSET)
+
+ end_date = d.pop("endDate", UNSET)
+
+ start_date = d.pop("startDate", UNSET)
+
+ overrides = cls(
+ cut_off_time=cut_off_time,
+ end_date=end_date,
+ start_date=start_date,
+ )
+
+
+ overrides.additional_properties = d
+ return overrides
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/package_weight_and_size.py b/ebay_client/generated/inventory/models/package_weight_and_size.py
new file mode 100644
index 0000000..7aa2dab
--- /dev/null
+++ b/ebay_client/generated/inventory/models/package_weight_and_size.py
@@ -0,0 +1,154 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.weight import Weight
+ from ..models.dimension import Dimension
+
+
+
+
+
+T = TypeVar("T", bound="PackageWeightAndSize")
+
+
+
+@_attrs_define
+class PackageWeightAndSize:
+ """ This type is used to indicate the package type, weight, and dimensions of the shipping package. Package weight and
+ dimensions are required when calculated shipping rates are used, and weight alone is required when flat-rate
+ shipping is used, but with a weight surcharge. See the Calculated shipping help page for more information on calculated shipping.
+
+ Attributes:
+ dimensions (Union[Unset, Dimension]): This type is used to specify the dimensions (and the unit used to measure
+ those dimensions) of a shipping package. The dimensions container is conditionally required if
+ the seller will be offering calculated shipping rates to determine shipping cost. See the Calculated shipping help
+ page for more information on calculated shipping.
+ package_type (Union[Unset, str]): This enumeration value indicates the type of shipping package used to ship the
+ inventory item. The supported values for this field can be found in the PackageTypeEnum type.
This field will
+ be returned if the package type is set for the inventory item.
+ Note: You can use the GeteBayDetails Trading API call to retrieve a list of supported package types for a specific
+ marketplace. For implementation help, refer to eBay API documentation
+ shipping_irregular (Union[Unset, bool]): A value of true indicates that the package is irregular
+ and cannot go through the stamping machine at the shipping service office. This field applies to calculated
+ shipping only. Irregular packages require special or fragile handling.
+ weight (Union[Unset, Weight]): This type is used to specify the weight (and the unit used to measure that
+ weight) of a shipping package. The weight container is conditionally required if the seller
+ will be offering calculated shipping rates to determine shipping cost, or is using flat-rate costs, but charging
+ a weight surcharge. See the Calculated shipping help page for more information on calculated shipping.
+ """
+
+ dimensions: Union[Unset, 'Dimension'] = UNSET
+ package_type: Union[Unset, str] = UNSET
+ shipping_irregular: Union[Unset, bool] = UNSET
+ weight: Union[Unset, 'Weight'] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.weight import Weight
+ from ..models.dimension import Dimension
+ dimensions: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.dimensions, Unset):
+ dimensions = self.dimensions.to_dict()
+
+ package_type = self.package_type
+
+ shipping_irregular = self.shipping_irregular
+
+ weight: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.weight, Unset):
+ weight = self.weight.to_dict()
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if dimensions is not UNSET:
+ field_dict["dimensions"] = dimensions
+ if package_type is not UNSET:
+ field_dict["packageType"] = package_type
+ if shipping_irregular is not UNSET:
+ field_dict["shippingIrregular"] = shipping_irregular
+ if weight is not UNSET:
+ field_dict["weight"] = weight
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.weight import Weight
+ from ..models.dimension import Dimension
+ d = dict(src_dict)
+ _dimensions = d.pop("dimensions", UNSET)
+ dimensions: Union[Unset, Dimension]
+ if isinstance(_dimensions, Unset):
+ dimensions = UNSET
+ else:
+ dimensions = Dimension.from_dict(_dimensions)
+
+
+
+
+ package_type = d.pop("packageType", UNSET)
+
+ shipping_irregular = d.pop("shippingIrregular", UNSET)
+
+ _weight = d.pop("weight", UNSET)
+ weight: Union[Unset, Weight]
+ if isinstance(_weight, Unset):
+ weight = UNSET
+ else:
+ weight = Weight.from_dict(_weight)
+
+
+
+
+ package_weight_and_size = cls(
+ dimensions=dimensions,
+ package_type=package_type,
+ shipping_irregular=shipping_irregular,
+ weight=weight,
+ )
+
+
+ package_weight_and_size.additional_properties = d
+ return package_weight_and_size
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/pickup_at_location_availability.py b/ebay_client/generated/inventory/models/pickup_at_location_availability.py
new file mode 100644
index 0000000..481d4b3
--- /dev/null
+++ b/ebay_client/generated/inventory/models/pickup_at_location_availability.py
@@ -0,0 +1,140 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.time_duration import TimeDuration
+
+
+
+
+
+T = TypeVar("T", bound="PickupAtLocationAvailability")
+
+
+
+@_attrs_define
+class PickupAtLocationAvailability:
+ """ This type is used to specify/indicate the quantity of the inventory item that is available for an In-Store Pickup
+ order at the merchant's physical store (specified by the merchantLocationKey field).
+
+ Attributes:
+ availability_type (Union[Unset, str]): The enumeration value in this field indicates the availability status of
+ the inventory item at the merchant's physical store specified by the
+ pickupAtLocationAvailability.merchantLocationKey field. This field is required if the
+ pickupAtLocationAvailability container is used, and is always returned with the
+ pickupAtLocationAvailability container.
See AvailabilityTypeEnum for more
+ information about how/when you use each enumeration value. For implementation help, refer to eBay API
+ documentation
+ fulfillment_time (Union[Unset, TimeDuration]): This type is used to indicate the fulfillment time for an In-
+ Store Pickup order, or for an order than will be shipped to the buyer.
+ merchant_location_key (Union[Unset, str]): The unique identifier of a merchant's store where the In-Store Pickup
+ inventory item is currently located, or where inventory will be sent to. If the merchant's store is currently
+ awaiting for inventory, the availabilityType value should be SHIP_TO_STORE. This
+ field is required if the pickupAtLocationAvailability container is used, and is always returned
+ with the pickupAtLocationAvailability container.
Use the getInventoryLocations
+ method to retrieve merchant location keys.
Max length: 36
+ quantity (Union[Unset, int]): This integer value indicates the quantity of the inventory item that is available
+ for In-Store Pickup at the store identified by the merchantLocationKey value. The value of
+ quantity should be an integer value greater than 0, unless the inventory item is
+ out of stock. This field is required if the pickupAtLocationAvailability container is used, and
+ is always returned with the pickupAtLocationAvailability container.
+ """
+
+ availability_type: Union[Unset, str] = UNSET
+ fulfillment_time: Union[Unset, 'TimeDuration'] = UNSET
+ merchant_location_key: Union[Unset, str] = UNSET
+ quantity: Union[Unset, int] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.time_duration import TimeDuration
+ availability_type = self.availability_type
+
+ fulfillment_time: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.fulfillment_time, Unset):
+ fulfillment_time = self.fulfillment_time.to_dict()
+
+ merchant_location_key = self.merchant_location_key
+
+ quantity = self.quantity
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if availability_type is not UNSET:
+ field_dict["availabilityType"] = availability_type
+ if fulfillment_time is not UNSET:
+ field_dict["fulfillmentTime"] = fulfillment_time
+ if merchant_location_key is not UNSET:
+ field_dict["merchantLocationKey"] = merchant_location_key
+ if quantity is not UNSET:
+ field_dict["quantity"] = quantity
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.time_duration import TimeDuration
+ d = dict(src_dict)
+ availability_type = d.pop("availabilityType", UNSET)
+
+ _fulfillment_time = d.pop("fulfillmentTime", UNSET)
+ fulfillment_time: Union[Unset, TimeDuration]
+ if isinstance(_fulfillment_time, Unset):
+ fulfillment_time = UNSET
+ else:
+ fulfillment_time = TimeDuration.from_dict(_fulfillment_time)
+
+
+
+
+ merchant_location_key = d.pop("merchantLocationKey", UNSET)
+
+ quantity = d.pop("quantity", UNSET)
+
+ pickup_at_location_availability = cls(
+ availability_type=availability_type,
+ fulfillment_time=fulfillment_time,
+ merchant_location_key=merchant_location_key,
+ quantity=quantity,
+ )
+
+
+ pickup_at_location_availability.additional_properties = d
+ return pickup_at_location_availability
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/price_quantity.py b/ebay_client/generated/inventory/models/price_quantity.py
new file mode 100644
index 0000000..45ec8f9
--- /dev/null
+++ b/ebay_client/generated/inventory/models/price_quantity.py
@@ -0,0 +1,153 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.offer_price_quantity import OfferPriceQuantity
+ from ..models.ship_to_location_availability import ShipToLocationAvailability
+
+
+
+
+
+T = TypeVar("T", bound="PriceQuantity")
+
+
+
+@_attrs_define
+class PriceQuantity:
+ """ This type is used to update the total "ship-to-home" quantity for one or more inventory items and/or to update the
+ price and/or quantity of one or more specific offers associated with one or more inventory items.
+
+ Attributes:
+ offers (Union[Unset, list['OfferPriceQuantity']]): This container is needed if the seller is updating the price
+ and/or quantity of one or more published offers, and a successful call will actually update the active eBay
+ listing with the revised price and/or available quantity.
This call is not designed to work with
+ unpublished offers. For unpublished offers, the seller should use the updateOffer call to
+ update the available quantity and/or price.
If the seller is also using the
+ shipToLocationAvailability container and sku field to update the total 'ship-
+ to-home' quantity of the inventory item, the SKU value associated with the corresponding
+ offerId value(s) must be the same as the corresponding sku value that is
+ passed in, or an error will occur.
Important! A separate (OfferPriceQuantity) node
+ is required for each offer being updated.
+ ship_to_location_availability (Union[Unset, ShipToLocationAvailability]): This type is used to specify the total
+ 'ship-to-home' quantity of the inventory item that will be available for purchase through one or more published
+ offers.
+ sku (Union[Unset, str]): This is the seller-defined SKU value of the inventory item whose total 'ship-to-home'
+ quantity will be updated. This field is only required when the seller is updating the total quantity of an
+ inventory item using the shipToLocationAvailability container. If the seller is updating the
+ price and/or quantity of one or more specific offers, one or more offerId values are used
+ instead, and the sku value is not needed.
If the seller wants to update the price and/or
+ quantity of one or more offers, and also wants to update the total 'ship-to-home' quantity of the corresponding
+ inventory item, the SKU value associated with the offerId value(s) must be the same as the
+ corresponding sku value that is passed in, or an error will occur.
Use the getInventoryItems method to retrieve SKU values.
Max Length: 50
+ """
+
+ offers: Union[Unset, list['OfferPriceQuantity']] = UNSET
+ ship_to_location_availability: Union[Unset, 'ShipToLocationAvailability'] = UNSET
+ sku: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.offer_price_quantity import OfferPriceQuantity
+ from ..models.ship_to_location_availability import ShipToLocationAvailability
+ offers: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.offers, Unset):
+ offers = []
+ for offers_item_data in self.offers:
+ offers_item = offers_item_data.to_dict()
+ offers.append(offers_item)
+
+
+
+ ship_to_location_availability: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.ship_to_location_availability, Unset):
+ ship_to_location_availability = self.ship_to_location_availability.to_dict()
+
+ sku = self.sku
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if offers is not UNSET:
+ field_dict["offers"] = offers
+ if ship_to_location_availability is not UNSET:
+ field_dict["shipToLocationAvailability"] = ship_to_location_availability
+ if sku is not UNSET:
+ field_dict["sku"] = sku
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.offer_price_quantity import OfferPriceQuantity
+ from ..models.ship_to_location_availability import ShipToLocationAvailability
+ d = dict(src_dict)
+ offers = []
+ _offers = d.pop("offers", UNSET)
+ for offers_item_data in (_offers or []):
+ offers_item = OfferPriceQuantity.from_dict(offers_item_data)
+
+
+
+ offers.append(offers_item)
+
+
+ _ship_to_location_availability = d.pop("shipToLocationAvailability", UNSET)
+ ship_to_location_availability: Union[Unset, ShipToLocationAvailability]
+ if isinstance(_ship_to_location_availability, Unset):
+ ship_to_location_availability = UNSET
+ else:
+ ship_to_location_availability = ShipToLocationAvailability.from_dict(_ship_to_location_availability)
+
+
+
+
+ sku = d.pop("sku", UNSET)
+
+ price_quantity = cls(
+ offers=offers,
+ ship_to_location_availability=ship_to_location_availability,
+ sku=sku,
+ )
+
+
+ price_quantity.additional_properties = d
+ return price_quantity
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/price_quantity_response.py b/ebay_client/generated/inventory/models/price_quantity_response.py
new file mode 100644
index 0000000..544de80
--- /dev/null
+++ b/ebay_client/generated/inventory/models/price_quantity_response.py
@@ -0,0 +1,162 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.error import Error
+
+
+
+
+
+T = TypeVar("T", bound="PriceQuantityResponse")
+
+
+
+@_attrs_define
+class PriceQuantityResponse:
+ """ This type is used to display the result for each offer and/or inventory item that the seller attempted to update
+ with a bulkUpdatePriceQuantity call. If any errors or warnings occur, the error/warning data is
+ returned at the offer/inventory item level.
+
+ Attributes:
+ errors (Union[Unset, list['Error']]): This array will be returned if there were one or more errors associated
+ with the update to the offer or inventory item record.
+ offer_id (Union[Unset, str]): The unique identifier of the offer that was updated. This field will not be
+ returned in situations where the seller is only updating the total 'ship-to-home' quantity of an inventory item
+ record.
+ sku (Union[Unset, str]): This is the seller-defined SKU value of the product. This field is returned whether the
+ seller attempted to update an offer with the SKU value or just attempted to update the total 'ship-to-home'
+ quantity of an inventory item record.
Max Length: 50
+ status_code (Union[Unset, int]): The value returned in this container will indicate the status of the attempt to
+ update the price and/or quantity of the offer (specified in the corresponding offerId field) or
+ the attempt to update the total 'ship-to-home' quantity of an inventory item (specified in the corresponding
+ sku field). For a completely successful update of an offer or inventory item record, a value of
+ 200 will appear in this field. A user can view the HTTP status codes section for
+ information on other status codes that may be returned with the bulkUpdatePriceQuantity method.
+ warnings (Union[Unset, list['Error']]): This array will be returned if there were one or more warnings
+ associated with the update to the offer or inventory item record.
+ """
+
+ errors: Union[Unset, list['Error']] = UNSET
+ offer_id: Union[Unset, str] = UNSET
+ sku: Union[Unset, str] = UNSET
+ status_code: Union[Unset, int] = UNSET
+ warnings: Union[Unset, list['Error']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.error import Error
+ errors: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.errors, Unset):
+ errors = []
+ for errors_item_data in self.errors:
+ errors_item = errors_item_data.to_dict()
+ errors.append(errors_item)
+
+
+
+ offer_id = self.offer_id
+
+ sku = self.sku
+
+ status_code = self.status_code
+
+ warnings: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.warnings, Unset):
+ warnings = []
+ for warnings_item_data in self.warnings:
+ warnings_item = warnings_item_data.to_dict()
+ warnings.append(warnings_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if errors is not UNSET:
+ field_dict["errors"] = errors
+ if offer_id is not UNSET:
+ field_dict["offerId"] = offer_id
+ if sku is not UNSET:
+ field_dict["sku"] = sku
+ if status_code is not UNSET:
+ field_dict["statusCode"] = status_code
+ if warnings is not UNSET:
+ field_dict["warnings"] = warnings
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.error import Error
+ d = dict(src_dict)
+ errors = []
+ _errors = d.pop("errors", UNSET)
+ for errors_item_data in (_errors or []):
+ errors_item = Error.from_dict(errors_item_data)
+
+
+
+ errors.append(errors_item)
+
+
+ offer_id = d.pop("offerId", UNSET)
+
+ sku = d.pop("sku", UNSET)
+
+ status_code = d.pop("statusCode", UNSET)
+
+ warnings = []
+ _warnings = d.pop("warnings", UNSET)
+ for warnings_item_data in (_warnings or []):
+ warnings_item = Error.from_dict(warnings_item_data)
+
+
+
+ warnings.append(warnings_item)
+
+
+ price_quantity_response = cls(
+ errors=errors,
+ offer_id=offer_id,
+ sku=sku,
+ status_code=status_code,
+ warnings=warnings,
+ )
+
+
+ price_quantity_response.additional_properties = d
+ return price_quantity_response
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/pricing_summary.py b/ebay_client/generated/inventory/models/pricing_summary.py
new file mode 100644
index 0000000..d7f9e9d
--- /dev/null
+++ b/ebay_client/generated/inventory/models/pricing_summary.py
@@ -0,0 +1,220 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.amount import Amount
+
+
+
+
+
+T = TypeVar("T", bound="PricingSummary")
+
+
+
+@_attrs_define
+class PricingSummary:
+ """ This type is used to specify the listing price for the product and settings for the Minimum Advertised Price and
+ Strikethrough Pricing features. The price field must be supplied before an offer is published, but
+ a seller may create an offer without supplying a price initially. The Minimum Advertised Price feature is only
+ available on the US site. Strikethrough Pricing is available on the US, eBay Motors, UK, Germany, Canada (English
+ and French), France, Italy, and Spain sites.
+
+ Attributes:
+ auction_reserve_price (Union[Unset, Amount]): This type is used to express a dollar value and the applicable
+ currency.
+ auction_start_price (Union[Unset, Amount]): This type is used to express a dollar value and the applicable
+ currency.
+ minimum_advertised_price (Union[Unset, Amount]): This type is used to express a dollar value and the applicable
+ currency.
+ originally_sold_for_retail_price_on (Union[Unset, str]): This field is needed if the Strikethrough Pricing (STP)
+ feature will be used in the offer. This field indicates that the product was sold for the price in the
+ originalRetailPrice field on an eBay site, or sold for that price by a third-party retailer.
+ When using the createOffer or updateOffer calls, the seller will pass in a
+ value of ON_EBAY to indicate that the product was sold for the originalRetailPrice
+ on an eBay site, or the seller will pass in a value of OFF_EBAY to indicate that the product was
+ sold for the originalRetailPrice through a third-party retailer. This field and the
+ originalRetailPrice field are only applicable if the seller and listing are eligible to use the
+ Strikethrough Pricing feature, a feature which is limited to the US (core site and Motors), UK, Germany, Canada
+ (English and French versions), France, Italy, and Spain sites.
This field will be returned by getOffer and getOffers if set for the offer. For implementation
+ help, refer to eBay API
+ documentation
+ original_retail_price (Union[Unset, Amount]): This type is used to express a dollar value and the applicable
+ currency.
+ price (Union[Unset, Amount]): This type is used to express a dollar value and the applicable currency.
+ pricing_visibility (Union[Unset, str]): This field is needed if the Minimum Advertised Price (MAP) feature will
+ be used in the offer. This field is only applicable if an eligible US seller is using the Minimum Advertised
+ Price (MAP) feature and a minimumAdvertisedPrice has been specified. The value set in this
+ field will determine whether the MAP price is shown to a prospective buyer prior to checkout through a pop-up
+ window accessed from the View Item page, or if the MAP price is not shown until the checkout flow after the
+ buyer has already committed to buying the item. To show the MAP price prior to checkout, the seller will set
+ this value to PRE_CHECKOUT. To show the MAP price after the buyer already commits to buy the item,
+ the seller will set this value to DURING_CHECKOUT. This field will be ignored if the seller and/or
+ the listing is not eligible for the MAP feature.
This field will be returned by getOffer and getOffers if set for the offer. For implementation
+ help, refer to eBay API documentation
+ """
+
+ auction_reserve_price: Union[Unset, 'Amount'] = UNSET
+ auction_start_price: Union[Unset, 'Amount'] = UNSET
+ minimum_advertised_price: Union[Unset, 'Amount'] = UNSET
+ originally_sold_for_retail_price_on: Union[Unset, str] = UNSET
+ original_retail_price: Union[Unset, 'Amount'] = UNSET
+ price: Union[Unset, 'Amount'] = UNSET
+ pricing_visibility: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.amount import Amount
+ auction_reserve_price: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.auction_reserve_price, Unset):
+ auction_reserve_price = self.auction_reserve_price.to_dict()
+
+ auction_start_price: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.auction_start_price, Unset):
+ auction_start_price = self.auction_start_price.to_dict()
+
+ minimum_advertised_price: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.minimum_advertised_price, Unset):
+ minimum_advertised_price = self.minimum_advertised_price.to_dict()
+
+ originally_sold_for_retail_price_on = self.originally_sold_for_retail_price_on
+
+ original_retail_price: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.original_retail_price, Unset):
+ original_retail_price = self.original_retail_price.to_dict()
+
+ price: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.price, Unset):
+ price = self.price.to_dict()
+
+ pricing_visibility = self.pricing_visibility
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if auction_reserve_price is not UNSET:
+ field_dict["auctionReservePrice"] = auction_reserve_price
+ if auction_start_price is not UNSET:
+ field_dict["auctionStartPrice"] = auction_start_price
+ if minimum_advertised_price is not UNSET:
+ field_dict["minimumAdvertisedPrice"] = minimum_advertised_price
+ if originally_sold_for_retail_price_on is not UNSET:
+ field_dict["originallySoldForRetailPriceOn"] = originally_sold_for_retail_price_on
+ if original_retail_price is not UNSET:
+ field_dict["originalRetailPrice"] = original_retail_price
+ if price is not UNSET:
+ field_dict["price"] = price
+ if pricing_visibility is not UNSET:
+ field_dict["pricingVisibility"] = pricing_visibility
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.amount import Amount
+ d = dict(src_dict)
+ _auction_reserve_price = d.pop("auctionReservePrice", UNSET)
+ auction_reserve_price: Union[Unset, Amount]
+ if isinstance(_auction_reserve_price, Unset):
+ auction_reserve_price = UNSET
+ else:
+ auction_reserve_price = Amount.from_dict(_auction_reserve_price)
+
+
+
+
+ _auction_start_price = d.pop("auctionStartPrice", UNSET)
+ auction_start_price: Union[Unset, Amount]
+ if isinstance(_auction_start_price, Unset):
+ auction_start_price = UNSET
+ else:
+ auction_start_price = Amount.from_dict(_auction_start_price)
+
+
+
+
+ _minimum_advertised_price = d.pop("minimumAdvertisedPrice", UNSET)
+ minimum_advertised_price: Union[Unset, Amount]
+ if isinstance(_minimum_advertised_price, Unset):
+ minimum_advertised_price = UNSET
+ else:
+ minimum_advertised_price = Amount.from_dict(_minimum_advertised_price)
+
+
+
+
+ originally_sold_for_retail_price_on = d.pop("originallySoldForRetailPriceOn", UNSET)
+
+ _original_retail_price = d.pop("originalRetailPrice", UNSET)
+ original_retail_price: Union[Unset, Amount]
+ if isinstance(_original_retail_price, Unset):
+ original_retail_price = UNSET
+ else:
+ original_retail_price = Amount.from_dict(_original_retail_price)
+
+
+
+
+ _price = d.pop("price", UNSET)
+ price: Union[Unset, Amount]
+ if isinstance(_price, Unset):
+ price = UNSET
+ else:
+ price = Amount.from_dict(_price)
+
+
+
+
+ pricing_visibility = d.pop("pricingVisibility", UNSET)
+
+ pricing_summary = cls(
+ auction_reserve_price=auction_reserve_price,
+ auction_start_price=auction_start_price,
+ minimum_advertised_price=minimum_advertised_price,
+ originally_sold_for_retail_price_on=originally_sold_for_retail_price_on,
+ original_retail_price=original_retail_price,
+ price=price,
+ pricing_visibility=pricing_visibility,
+ )
+
+
+ pricing_summary.additional_properties = d
+ return pricing_summary
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/product.py b/ebay_client/generated/inventory/models/product.py
new file mode 100644
index 0000000..160e3c9
--- /dev/null
+++ b/ebay_client/generated/inventory/models/product.py
@@ -0,0 +1,382 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="Product")
+
+
+
+@_attrs_define
+class Product:
+ """ This type is used to define the product details, such as a title, a product description, product aspects/item
+ specifics, and links to images for the product. Optionally, in a createOrReplaceInventoryItem call,
+ a seller can pass in an eBay Product Identifier (ePID) or a Global Trade Item Number (GTIN) value, such as an EAN,
+ an ISBN, a UPC, to identify a product to be matched with a product in the eBay Catalog. The information in this type
+ is also returned in the getInventoryItem, getInventoryItems, and
+ bulkGetInventoryItem calls if defined.
+
+ Attributes:
+ aspects (Union[Unset, str]): This is a collection of item specifics (aka product aspects) name-value pairs that
+ provide more information about the product and might make it easier for buyers to find. To view
+ required/recommended product aspects/item specifics names (and corresponding values) for a specific eBay
+ category, sellers can use the getItemAspectsForCategory method of the Taxonomy API. Alternatively, sellers can view
+ similar items on eBay.com in the same category to get an idea of what other sellers are using for product
+ aspects/item specifics.
Important! Effective from December 28th, 2024, sellers offering
+ certain rechargeable devices in EU and Northern Ireland markets must comply with the Common Charger Directive
+ (CCD) and list appropriate charger-related aspects and values on their listings. See Common Charger Directive for more
+ information.
Sellers also have the option of specifying an eBay Product ID (ePID) or optionally, a
+ Global Trade Item Number (GTIN) through the corresponding fields in the product container in an
+ attempt to find a product match in the eBay Catalog. If a match is found based on the ePID or GTIN value, the
+ product aspects that are defined for the eBay Catalog product will automatically get picked up by the newly
+ created/updated inventory item.
Below is an example of the proper JSON syntax to use when manually
+ inputting item specifics. Note that one item specific name, such as 'Features', can have more than one value. If
+ an item specific name has more than one value, each value is delimited with a
+ comma.
"aspects": {
"Brand": ["GoPro"],
"Storage Type": ["Removable"]
+ }
Note that inventory items that will become part of an inventory item group and multiple-
+ variation listing should have the same attributes that are defined for the inventory item group.
This
+ container will be returned if one or more item specific pairs are defined for the inventory item.
Important!Publish offer note: This field is required before an
+ offer can be published to create an active listing.
Max Length for Aspect
+ Name: 40
Max Length for Aspect Value: 50
+ brand (Union[Unset, str]): The brand of the product. This field is often paired with the mpn
+ field to identify a specific product by Manufacturer Part Number. This field is conditionally required if the
+ eBay category requires a Manufacturer Part Number (MPN) value. If eBay is able to find a product match in the
+ eBay Catalog when an eBay Product ID (ePID) or GTIN value (UPC, ISBN, or EAN) is supplied, all product details
+ of that eBay Catalog product is picked up by the inventory item record (including brand) if the
+ createOrReplaceInventoryItem call is successful.
This field is returned if defined for
+ an inventory item. If a brand was passed in as an item specific name-value pair through the
+ aspects array in a createOrReplaceInventoryItem call, this value is also
+ picked up by the brand field.
Max Length: 65
+ description (Union[Unset, str]): The description of the product. The description of an existing inventory item
+ can be added or modified with a createOrReplaceInventoryItem call. The description of an
+ inventory item is automatically populated if the seller specifies an eBay Product ID (ePID) or a Global Trade
+ Item Number (GTIN) and eBay is able to find a matching product in the eBay Catalog.
Note that this field
+ is optional but recommended. If a listingDescription field is omitted when creating and
+ publishing a single-variation offer, the text in this field will be used instead. If neither the
+ product.description field for the inventory item nor the listingDescription
+ field for the offer exist, the publishOffer call will fail. If the inventory item will be part
+ of an inventory item group/multiple-variation listing, this field should definitely be used to specify how the
+ corresponding product variation is different (e.g. This is the green, extra-large version of the
+ shirt). However, in the case of an inventory item group, the text in the description field
+ of the inventory item group will become the listing description of the actual eBay listing instead of the text
+ in this field.
Basic HTML tags are supported, including the following tags:- <b>
- <
+ strong>
- <br>
- <ol>
- <ul>
- <li>
- Table tags
+ including <table>, <tr>, <td>, <th>, <thead>, <tfoot>, <tbody>,
+ <caption>, <colgroup>, and <col>
A seller can not use any active content in their
+ listing description. Active content includes animation or video via JavaScript, Flash, plug-ins, or form
+ actions.
This field is returned if defined for an inventory item. If one of the GTIN types (e.g. UPC) was
+ passed in when the inventory item was created/modified and a product match was found in the eBay catalog,
+ product description is one of the details that gets picked up from the catalog product.
Important!Publish offer note: This field is required before an
+ offer can be published to create an active listing.
Max Length: 4000
+ ean (Union[Unset, list[str]]): The European Article Number/International Article Number (EAN) for the product.
+ Although an ePID value is preferred when trying to find a product match in the eBay Catalog, this field can also
+ be used in an attempt to find a product match in the eBay Catalog. If a product match is found in the eBay
+ Catalog, the inventory item is automatically populated with available product details such as a title, a product
+ description, product aspects (including the specified EAN value), and a link to any stock image that exists for
+ the catalog product.
This field is returned if defined for an inventory item. If an EAN was passed in as
+ an item specific name-value pair through the aspects array in a
+ createOrReplaceInventoryItem call, this value is also picked up by the ean
+ field.Note: If the item is being listed
+ in a category that requires an EAN value, but one doesn't exist for the product, the seller must provide a
+ string indicating that the product identifier is unavailable. This text varies by marketplace. Refer to Product Identifier Text
+ for the specific text based on the listing marketplace.
+ epid (Union[Unset, str]): The eBay Product Identifier (ePID) for the product. This field can be used to directly
+ identify an eBay Catalog product. Based on its specified ePID value, eBay will search for the product in the
+ eBay Catalog, and if a match is found, the inventory item is automatically populated with available product
+ details such as product title, product description, product aspects, and a link to any stock image that exists
+ for the catalog product.
In an attempt to find a eBay Catalog product match, an ePID value is always
+ preferred over the other product identifiers, since it is possible that one GTIN value can be associated with
+ multiple eBay Catalog products, and if multiple products are found, product details will not be picked up by the
+ Inventory Item object.
Note: When listing in categoryID 173651
+ (Auto Performance Tuning Devices & Software), the use of catalog products is required. For more information, see
+ Tuning devices
+ and software.
This field is returned if defined for an inventory item.
+ image_urls (Union[Unset, list[str]]): An array of one or more links to images for the product. URLs must use the
+ "HTTPS" protocol. Images can be self-hosted by the seller, or sellers can use the UploadSiteHostedPictures call of the Trading API to upload images to an eBay Picture Server.
+ If successful, the response of the UploadSiteHostedPictures call will contain a full URL to the image on an eBay Picture
+ Server. This is the URL that will be passed in through the imageUrls array. Before an offer can
+ be published, at least one image must exist for the inventory item. In almost any category at no cost, sellers
+ can include up to 24 pictures in one listing. For inventory items that are a part of an inventory item
+ group/multiple-variation listings, a maximum of 12 pictures may be used per inventory item in the group. Motor
+ vehicle listings are an exception. The number of included pictures in motor vehicle listings depend on the
+ selected vehicle package (see Fees for selling vehicles on eBay Motors).
A link to a stock image for
+ a product may automatically be populated for an inventory item if the seller specifies an eBay Product ID (ePID)
+ or a Global Trade Item Number (GTIN) and eBay is able to find a matching product in the eBay
+ Catalog.
This container will always be returned for an inventory item that is part of a published offer
+ since a published offer will always have at least one picture, but this container will only be returned if
+ defined for inventory items that are not a part of a published offer.
Important!Publish offer note: This array
+ is required and at least one image URL must be specified before an offer can be published to create an active
+ listing.
+ isbn (Union[Unset, list[str]]): The International Standard Book Number (ISBN) value for the product. Although an
+ ePID value is preferred when trying to find a product match in the eBay Catalog, this field can also be used in
+ an attempt to find a product match in the eBay Catalog. If a product match is found in the eBay Catalog, the
+ inventory item is automatically populated with available product details such as a title, a product description,
+ product aspects (including the specified ISBN value), and a link to any stock image that exists for the catalog
+ product.
This field is returned if defined for an inventory item. If an ISBN was passed in as an item
+ specific name-value pair through the aspects array in a
+ createOrReplaceInventoryItem call, this value is also picked up by the isbn
+ field.Note: If the item is being listed
+ in a category that requires an ISBN value, but one doesn't exist for the product, the seller must provide a
+ string indicating that the product identifier is unavailable. This text varies by marketplace. Refer to Product Identifier Text
+ for the specific text based on the listing marketplace.
+ mpn (Union[Unset, str]): The Manufacturer Part Number (MPN) of a product. This field is paired with the
+ brand field to identify a product. Some eBay categories require MPN values. The getItemAspectsForCategory method in the Taxonomy API can be used to see if a category
+ requires an MPN. The MPN value for a product may automatically be populated for an inventory item if the seller
+ specifies an eBay Product ID (ePID) or a Global Trade Item Number (GTIN) and eBay is able to find a matching
+ product in the eBay Catalog.
This field is returned if defined for an inventory item. If an MPN was
+ passed in as an item specific name-value pair through the aspects array in a
+ createOrReplaceInventoryItem call, this value is also picked up by the mpn
+ field.Note: If the item is being listed
+ in a category that requires an MPN value, but one doesn't exist for the product, the seller must provide a
+ string indicating that the product identifier is unavailable. This text varies by marketplace. Refer to Product Identifier Text
+ for the specific text based on the listing marketplace.
Max Length: 65
+ subtitle (Union[Unset, str]): A subtitle is an optional listing feature that allows the seller to provide more
+ information about the product, possibly including keywords that may assist with search results. An additional
+ listing fee will be charged to the seller if a subtitle is used. For more information on using listing subtitles
+ on the US site, see the Adding a
+ subtitle to your listings help page. The subtitle of an existing inventory item can added, modified, or
+ removed with a createOrReplaceInventoryItem call.
Note that the same
+ subtitle text should be used for each inventory item that will be part of an inventory item
+ group, and ultimately become one product variation within a multiple-variation listing.
This field will
+ only be returned if set for an inventory item.
Max Length: 55
+ title (Union[Unset, str]): The title of an inventory item can be added or modified with a
+ createOrReplaceInventoryItem call. Although not immediately required, a title will be needed
+ before an offer with the inventory item is published. The title of an inventory item is automatically populated
+ if the seller specifies an eBay Product ID (ePID) or a Global Trade Item Number (GTIN) and eBay is able to find
+ a matching product in the eBay Catalog. If the inventory item will become part of a single-variation offer, and
+ the listing is not a product-based listing, the text in this field will become the actual listing title for the
+ published offer. However, if the inventory item will become part of a multiple-variation offer, the text in
+ title field of the inventory item group entity will actually become the listing title for the
+ published offer instead, although a title can still be provided for the inventory item, and it will actually
+ become the title of the variation.
This field will always be returned for an inventory item that is part
+ of a published offer since a published offer will always have a listing title, but this field will only be
+ returned if defined for inventory items that are not a part of a published offer.
Important!Publish offer note: This field is required before an
+ offer can be published to create an active listing.
Max Length: 80
+ upc (Union[Unset, list[str]]): The Universal Product Code (UPC) value for the product. Although an ePID value is
+ preferred when trying to find a product match in the eBay Catalog, this field can also be used in an attempt to
+ find a product match in the eBay Catalog. If a product match is found in the eBay Catalog, the inventory item is
+ automatically populated with available product details such as a title, a product description, product aspects
+ (including the specified UPC value), and a link to any stock image that exists for the catalog
+ product.
This field is returned if defined for an inventory item. If a UPC was passed in as an item
+ specific name-value pair through the aspects array in a
+ createOrReplaceInventoryItem call, this value is also picked up by the upc
+ field.Note: If the item is being listed
+ in a category that requires a UPC value, but one doesn't exist for the product, the seller must provide a string
+ indicating that the product identifier is unavailable. This text varies by marketplace. Refer to Product Identifier Text for the
+ specific text based on the listing marketplace.
+ video_ids (Union[Unset, list[str]]): An array of one or more videoId values for the product. A video ID
+ is a unique identifier that is automatically created by eBay when a seller successfully uploads a video to eBay
+ using the uploadVideo method of the Media API.
For information on supported marketplaces and platforms, as well as other
+ requirements and limitations of video support, please refer to Managing videos.
Note: Only one video per listing is supported.
+ """
+
+ aspects: Union[Unset, str] = UNSET
+ brand: Union[Unset, str] = UNSET
+ description: Union[Unset, str] = UNSET
+ ean: Union[Unset, list[str]] = UNSET
+ epid: Union[Unset, str] = UNSET
+ image_urls: Union[Unset, list[str]] = UNSET
+ isbn: Union[Unset, list[str]] = UNSET
+ mpn: Union[Unset, str] = UNSET
+ subtitle: Union[Unset, str] = UNSET
+ title: Union[Unset, str] = UNSET
+ upc: Union[Unset, list[str]] = UNSET
+ video_ids: Union[Unset, list[str]] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ aspects = self.aspects
+
+ brand = self.brand
+
+ description = self.description
+
+ ean: Union[Unset, list[str]] = UNSET
+ if not isinstance(self.ean, Unset):
+ ean = self.ean
+
+
+
+ epid = self.epid
+
+ image_urls: Union[Unset, list[str]] = UNSET
+ if not isinstance(self.image_urls, Unset):
+ image_urls = self.image_urls
+
+
+
+ isbn: Union[Unset, list[str]] = UNSET
+ if not isinstance(self.isbn, Unset):
+ isbn = self.isbn
+
+
+
+ mpn = self.mpn
+
+ subtitle = self.subtitle
+
+ title = self.title
+
+ upc: Union[Unset, list[str]] = UNSET
+ if not isinstance(self.upc, Unset):
+ upc = self.upc
+
+
+
+ video_ids: Union[Unset, list[str]] = UNSET
+ if not isinstance(self.video_ids, Unset):
+ video_ids = self.video_ids
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if aspects is not UNSET:
+ field_dict["aspects"] = aspects
+ if brand is not UNSET:
+ field_dict["brand"] = brand
+ if description is not UNSET:
+ field_dict["description"] = description
+ if ean is not UNSET:
+ field_dict["ean"] = ean
+ if epid is not UNSET:
+ field_dict["epid"] = epid
+ if image_urls is not UNSET:
+ field_dict["imageUrls"] = image_urls
+ if isbn is not UNSET:
+ field_dict["isbn"] = isbn
+ if mpn is not UNSET:
+ field_dict["mpn"] = mpn
+ if subtitle is not UNSET:
+ field_dict["subtitle"] = subtitle
+ if title is not UNSET:
+ field_dict["title"] = title
+ if upc is not UNSET:
+ field_dict["upc"] = upc
+ if video_ids is not UNSET:
+ field_dict["videoIds"] = video_ids
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ aspects = d.pop("aspects", UNSET)
+
+ brand = d.pop("brand", UNSET)
+
+ description = d.pop("description", UNSET)
+
+ ean = cast(list[str], d.pop("ean", UNSET))
+
+
+ epid = d.pop("epid", UNSET)
+
+ image_urls = cast(list[str], d.pop("imageUrls", UNSET))
+
+
+ isbn = cast(list[str], d.pop("isbn", UNSET))
+
+
+ mpn = d.pop("mpn", UNSET)
+
+ subtitle = d.pop("subtitle", UNSET)
+
+ title = d.pop("title", UNSET)
+
+ upc = cast(list[str], d.pop("upc", UNSET))
+
+
+ video_ids = cast(list[str], d.pop("videoIds", UNSET))
+
+
+ product = cls(
+ aspects=aspects,
+ brand=brand,
+ description=description,
+ ean=ean,
+ epid=epid,
+ image_urls=image_urls,
+ isbn=isbn,
+ mpn=mpn,
+ subtitle=subtitle,
+ title=title,
+ upc=upc,
+ video_ids=video_ids,
+ )
+
+
+ product.additional_properties = d
+ return product
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/product_family_properties.py b/ebay_client/generated/inventory/models/product_family_properties.py
new file mode 100644
index 0000000..96cbd08
--- /dev/null
+++ b/ebay_client/generated/inventory/models/product_family_properties.py
@@ -0,0 +1,135 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="ProductFamilyProperties")
+
+
+
+@_attrs_define
+class ProductFamilyProperties:
+ """ This type is used to specify the details of a motor vehicle that is compatible with the inventory item specified
+ through the SKU value in the call URI.
+
+ Attributes:
+ engine (Union[Unset, str]): Important! The productFamilyProperties container
+ is no longer supported.
+ make (Union[Unset, str]): Important! The productFamilyProperties container
+ is no longer supported.
+ model (Union[Unset, str]): Important! The productFamilyProperties container
+ is no longer supported.
+ trim (Union[Unset, str]): Important! The productFamilyProperties container
+ is no longer supported.
+ year (Union[Unset, str]): Important! The productFamilyProperties container
+ is no longer supported.
+ """
+
+ engine: Union[Unset, str] = UNSET
+ make: Union[Unset, str] = UNSET
+ model: Union[Unset, str] = UNSET
+ trim: Union[Unset, str] = UNSET
+ year: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ engine = self.engine
+
+ make = self.make
+
+ model = self.model
+
+ trim = self.trim
+
+ year = self.year
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if engine is not UNSET:
+ field_dict["engine"] = engine
+ if make is not UNSET:
+ field_dict["make"] = make
+ if model is not UNSET:
+ field_dict["model"] = model
+ if trim is not UNSET:
+ field_dict["trim"] = trim
+ if year is not UNSET:
+ field_dict["year"] = year
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ engine = d.pop("engine", UNSET)
+
+ make = d.pop("make", UNSET)
+
+ model = d.pop("model", UNSET)
+
+ trim = d.pop("trim", UNSET)
+
+ year = d.pop("year", UNSET)
+
+ product_family_properties = cls(
+ engine=engine,
+ make=make,
+ model=model,
+ trim=trim,
+ year=year,
+ )
+
+
+ product_family_properties.additional_properties = d
+ return product_family_properties
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/product_identifier.py b/ebay_client/generated/inventory/models/product_identifier.py
new file mode 100644
index 0000000..b498f6b
--- /dev/null
+++ b/ebay_client/generated/inventory/models/product_identifier.py
@@ -0,0 +1,112 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="ProductIdentifier")
+
+
+
+@_attrs_define
+class ProductIdentifier:
+ """ This type is used to identify a motor vehicle that is compatible with the corresponding inventory item (the SKU that
+ is passed in as part of the call URI). The motor vehicle can be identified through an eBay Product ID or a K-Type
+ value. The gtin field (for inputting Global Trade Item Numbers) is for future use only. If a motor
+ vehicle is found in the eBay product catalog, the motor vehicle properties (engine, make, model, trim, and year)
+ will automatically get picked up for that motor vehicle.
Note:
+ Currently, parts compatibility is only applicable for motor vehicles, but it is possible that the Product
+ Compatibility feature is expanded to other (non-vehicle) products in the future.
+
+ Attributes:
+ epid (Union[Unset, str]): This field can be used if the seller already knows the eBay catalog product ID (ePID)
+ associated with the motor vehicle that is to be added to the compatible product list. If this eBay catalog
+ product ID is found in the eBay product catalog, the motor vehicle properties (e.g. make, model, year, engine,
+ and trim) will automatically get picked up for that motor vehicle.
+ gtin (Union[Unset, str]): This field can be used if the seller knows the Global Trade Item Number for the motor
+ vehicle that is to be added to the compatible product list. If this GTIN value is found in the eBay product
+ catalog, the motor vehicle properties (e.g. make, model, year, engine, and trim will automatically get picked up
+ for that motor vehicle.
Note: This field is for future
+ use.
+ ktype (Union[Unset, str]): This field can be used if the seller knows the K Type Number for the motor vehicle
+ that is to be added to the compatible product list. If this K Type value is found in the eBay product catalog,
+ the motor vehicle properties (e.g. make, model, year, engine, and trim) will automatically get picked up for
+ that motor vehicle.
Only the AU, DE, ES, FR, IT, and UK marketplaces support the use of K Type Numbers.
+ """
+
+ epid: Union[Unset, str] = UNSET
+ gtin: Union[Unset, str] = UNSET
+ ktype: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ epid = self.epid
+
+ gtin = self.gtin
+
+ ktype = self.ktype
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if epid is not UNSET:
+ field_dict["epid"] = epid
+ if gtin is not UNSET:
+ field_dict["gtin"] = gtin
+ if ktype is not UNSET:
+ field_dict["ktype"] = ktype
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ epid = d.pop("epid", UNSET)
+
+ gtin = d.pop("gtin", UNSET)
+
+ ktype = d.pop("ktype", UNSET)
+
+ product_identifier = cls(
+ epid=epid,
+ gtin=gtin,
+ ktype=ktype,
+ )
+
+
+ product_identifier.additional_properties = d
+ return product_identifier
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/product_safety.py b/ebay_client/generated/inventory/models/product_safety.py
new file mode 100644
index 0000000..8a459f2
--- /dev/null
+++ b/ebay_client/generated/inventory/models/product_safety.py
@@ -0,0 +1,126 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="ProductSafety")
+
+
+
+@_attrs_define
+class ProductSafety:
+ """ This type is used to define the pictograms and statement containers, and the optional component
+ field, that provide product safety and compliance related information.
+
+ Attributes:
+ component (Union[Unset, str]): This field is used by the seller to provide product safety component information
+ for the listing. For example, component information can include specific warnings related to product safety,
+ such as 'Tipping hazard'.
Note: Component information can only be
+ specified if used with the pictograms and/or statements field; if the component is provided
+ without one or both of these fields, an error will occur.
Max length: 120 characters
+ pictograms (Union[Unset, list[str]]): An array of comma-separated string values used to provide product safety
+ pictogram(s) for the listing.
If your product shows universal product safety or compliance symbols,
+ please select the values corresponding to the product safety pictograms for display in the product safety
+ section of the listing. The seller specifies the identifier of each pictogram in this field.
Note: For product safety pictograms, use the getProductSafetyLabels method of the Metadata API to find supported values for a
+ specific marketplace/site.
A maximum of 2 pictograms are allowed for product safety.
+ statements (Union[Unset, list[str]]): An array of comma-separated string values used to provide product safety
+ statement(s) for the listing.
If your product shows universal product safety or compliance warnings,
+ please select the values corresponding to the product safety statements for display in the product safety
+ section of the listing. The seller specifies the identifier of each statement in this field.
Note: For product safety statements, use the getProductSafetyLabels method of the Metadata API to find supported values for a
+ specific marketplace/site.
A maximum of 8 statements are allowed for product safety.
+ """
+
+ component: Union[Unset, str] = UNSET
+ pictograms: Union[Unset, list[str]] = UNSET
+ statements: Union[Unset, list[str]] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ component = self.component
+
+ pictograms: Union[Unset, list[str]] = UNSET
+ if not isinstance(self.pictograms, Unset):
+ pictograms = self.pictograms
+
+
+
+ statements: Union[Unset, list[str]] = UNSET
+ if not isinstance(self.statements, Unset):
+ statements = self.statements
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if component is not UNSET:
+ field_dict["component"] = component
+ if pictograms is not UNSET:
+ field_dict["pictograms"] = pictograms
+ if statements is not UNSET:
+ field_dict["statements"] = statements
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ component = d.pop("component", UNSET)
+
+ pictograms = cast(list[str], d.pop("pictograms", UNSET))
+
+
+ statements = cast(list[str], d.pop("statements", UNSET))
+
+
+ product_safety = cls(
+ component=component,
+ pictograms=pictograms,
+ statements=statements,
+ )
+
+
+ product_safety.additional_properties = d
+ return product_safety
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/publish_by_inventory_item_group_request.py b/ebay_client/generated/inventory/models/publish_by_inventory_item_group_request.py
new file mode 100644
index 0000000..e7a515c
--- /dev/null
+++ b/ebay_client/generated/inventory/models/publish_by_inventory_item_group_request.py
@@ -0,0 +1,100 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="PublishByInventoryItemGroupRequest")
+
+
+
+@_attrs_define
+class PublishByInventoryItemGroupRequest:
+ """ This type is used by the request payload of the publishByInventoryItemGroup call. The identifier of
+ the inventory item group to publish and the eBay marketplace where the listing will be published is needed in the
+ request payload.
+
+ Attributes:
+ inventory_item_group_key (Union[Unset, str]): This is the unique identifier of the inventory item group. All
+ unpublished offers associated with this inventory item group will be published as a multiple-variation listing
+ if the publishByInventoryItemGroup call is successful. The
+ inventoryItemGroupKey identifier is automatically generated by eBay once an inventory item
+ group is created.
To retrieve an inventoryItemGroupKey value, you can use the getInventoryItem method to retrieve an inventory item that is known to be in the inventory
+ item group to publish, and then look for the inventory item group identifier under the groupIds
+ container in the response of that call.
+ marketplace_id (Union[Unset, str]): This is the unique identifier of the eBay site on which the multiple-
+ variation listing will be published. The marketplaceId enumeration values are found in
+ MarketplaceEnum. For implementation help, refer to eBay API documentation
+ """
+
+ inventory_item_group_key: Union[Unset, str] = UNSET
+ marketplace_id: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ inventory_item_group_key = self.inventory_item_group_key
+
+ marketplace_id = self.marketplace_id
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if inventory_item_group_key is not UNSET:
+ field_dict["inventoryItemGroupKey"] = inventory_item_group_key
+ if marketplace_id is not UNSET:
+ field_dict["marketplaceId"] = marketplace_id
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ inventory_item_group_key = d.pop("inventoryItemGroupKey", UNSET)
+
+ marketplace_id = d.pop("marketplaceId", UNSET)
+
+ publish_by_inventory_item_group_request = cls(
+ inventory_item_group_key=inventory_item_group_key,
+ marketplace_id=marketplace_id,
+ )
+
+
+ publish_by_inventory_item_group_request.additional_properties = d
+ return publish_by_inventory_item_group_request
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/publish_response.py b/ebay_client/generated/inventory/models/publish_response.py
new file mode 100644
index 0000000..5a2be7b
--- /dev/null
+++ b/ebay_client/generated/inventory/models/publish_response.py
@@ -0,0 +1,112 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.error import Error
+
+
+
+
+
+T = TypeVar("T", bound="PublishResponse")
+
+
+
+@_attrs_define
+class PublishResponse:
+ """ This type is used by the base response payload of the publishOffer and
+ publishOfferByInventoryItemGroup calls.
+
+ Attributes:
+ listing_id (Union[Unset, str]): The unique identifier of the newly created eBay listing. This field is returned
+ if the single offer (if publishOffer call was used) or group of offers in an inventory item
+ group (if publishOfferByInventoryItemGroup call was used) was successfully converted into an
+ eBay listing.
+ warnings (Union[Unset, list['Error']]): This container will contain an array of errors and/or warnings if any
+ occur when a publishOffer or publishOfferByInventoryItemGroup call is made.
+ """
+
+ listing_id: Union[Unset, str] = UNSET
+ warnings: Union[Unset, list['Error']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.error import Error
+ listing_id = self.listing_id
+
+ warnings: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.warnings, Unset):
+ warnings = []
+ for warnings_item_data in self.warnings:
+ warnings_item = warnings_item_data.to_dict()
+ warnings.append(warnings_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if listing_id is not UNSET:
+ field_dict["listingId"] = listing_id
+ if warnings is not UNSET:
+ field_dict["warnings"] = warnings
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.error import Error
+ d = dict(src_dict)
+ listing_id = d.pop("listingId", UNSET)
+
+ warnings = []
+ _warnings = d.pop("warnings", UNSET)
+ for warnings_item_data in (_warnings or []):
+ warnings_item = Error.from_dict(warnings_item_data)
+
+
+
+ warnings.append(warnings_item)
+
+
+ publish_response = cls(
+ listing_id=listing_id,
+ warnings=warnings,
+ )
+
+
+ publish_response.additional_properties = d
+ return publish_response
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/regional_product_compliance_policies.py b/ebay_client/generated/inventory/models/regional_product_compliance_policies.py
new file mode 100644
index 0000000..c67ebb3
--- /dev/null
+++ b/ebay_client/generated/inventory/models/regional_product_compliance_policies.py
@@ -0,0 +1,100 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.country_policy import CountryPolicy
+
+
+
+
+
+T = TypeVar("T", bound="RegionalProductCompliancePolicies")
+
+
+
+@_attrs_define
+class RegionalProductCompliancePolicies:
+ """ This type lists regional product compliance policies to be used by an offer when it is published and converted to a
+ listing.
+
+ Attributes:
+ country_policies (Union[Unset, list['CountryPolicy']]): The array of country-specific product compliance
+ policies to be used by an offer when it is published and converted to a listing.
+ """
+
+ country_policies: Union[Unset, list['CountryPolicy']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.country_policy import CountryPolicy
+ country_policies: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.country_policies, Unset):
+ country_policies = []
+ for country_policies_item_data in self.country_policies:
+ country_policies_item = country_policies_item_data.to_dict()
+ country_policies.append(country_policies_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if country_policies is not UNSET:
+ field_dict["countryPolicies"] = country_policies
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.country_policy import CountryPolicy
+ d = dict(src_dict)
+ country_policies = []
+ _country_policies = d.pop("countryPolicies", UNSET)
+ for country_policies_item_data in (_country_policies or []):
+ country_policies_item = CountryPolicy.from_dict(country_policies_item_data)
+
+
+
+ country_policies.append(country_policies_item)
+
+
+ regional_product_compliance_policies = cls(
+ country_policies=country_policies,
+ )
+
+
+ regional_product_compliance_policies.additional_properties = d
+ return regional_product_compliance_policies
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/regional_take_back_policies.py b/ebay_client/generated/inventory/models/regional_take_back_policies.py
new file mode 100644
index 0000000..ffc5400
--- /dev/null
+++ b/ebay_client/generated/inventory/models/regional_take_back_policies.py
@@ -0,0 +1,99 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.country_policy import CountryPolicy
+
+
+
+
+
+T = TypeVar("T", bound="RegionalTakeBackPolicies")
+
+
+
+@_attrs_define
+class RegionalTakeBackPolicies:
+ """ This type lists regional take-back policies to be used by an offer when it is published and converted to a listing.
+
+ Attributes:
+ country_policies (Union[Unset, list['CountryPolicy']]): The array of country-specific take-back policies to be
+ used by an offer when it is published and converted to a listing.
+ """
+
+ country_policies: Union[Unset, list['CountryPolicy']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.country_policy import CountryPolicy
+ country_policies: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.country_policies, Unset):
+ country_policies = []
+ for country_policies_item_data in self.country_policies:
+ country_policies_item = country_policies_item_data.to_dict()
+ country_policies.append(country_policies_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if country_policies is not UNSET:
+ field_dict["countryPolicies"] = country_policies
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.country_policy import CountryPolicy
+ d = dict(src_dict)
+ country_policies = []
+ _country_policies = d.pop("countryPolicies", UNSET)
+ for country_policies_item_data in (_country_policies or []):
+ country_policies_item = CountryPolicy.from_dict(country_policies_item_data)
+
+
+
+ country_policies.append(country_policies_item)
+
+
+ regional_take_back_policies = cls(
+ country_policies=country_policies,
+ )
+
+
+ regional_take_back_policies.additional_properties = d
+ return regional_take_back_policies
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/regulatory.py b/ebay_client/generated/inventory/models/regulatory.py
new file mode 100644
index 0000000..937c8cb
--- /dev/null
+++ b/ebay_client/generated/inventory/models/regulatory.py
@@ -0,0 +1,263 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.responsible_person import ResponsiblePerson
+ from ..models.product_safety import ProductSafety
+ from ..models.hazmat import Hazmat
+ from ..models.energy_efficiency_label import EnergyEfficiencyLabel
+ from ..models.document import Document
+ from ..models.manufacturer import Manufacturer
+
+
+
+
+
+T = TypeVar("T", bound="Regulatory")
+
+
+
+@_attrs_define
+class Regulatory:
+ """ Type defining regulatory information that the seller is required to disclose.
+
+ Attributes:
+ documents (Union[Unset, list['Document']]): This container provides a collection of regulatory documents
+ associated with the listing.
For information on removing one or more files from a listing using the updateOffer method,
+ see Remove
+ documents from listings. .
Note: As a part of General Product Safety
+ Regulation (GPSR) requirements effective on December 13th, 2024, sellers operating in, or shipping to, EU-based
+ countries or Northern Ireland are conditionally required to provide regulatory document information in their
+ eBay listings. For more information on GPSR, see General Product Safety Regulation (GPSR).
+ energy_efficiency_label (Union[Unset, EnergyEfficiencyLabel]): This type provides information about the energy
+ efficiency for certain durable goods.
Important! When providing energy
+ efficiency information on an appliance or smartphones and tablets listing, the energy efficiency rating
+ and range of the item must be specified through the the aspects field when creating the inventory item record. Use the getItemAspectsForCategory method of the Taxonomy API to retrieve applicable rating and range
+ values for a specified category.
+ hazmat (Union[Unset, Hazmat]): This container is used by the seller to provide hazardous material information
+ for the listing.
The statements element is required to complete the hazmat section of a
+ listing.
The following elements are
+ optional:- pictograms
- signalWord
- component
+ manufacturer (Union[Unset, Manufacturer]): This type provides name and contact information about the
+ manufacturer of the item.
+ product_safety (Union[Unset, ProductSafety]): This type is used to define the pictograms and
+ statement containers, and the optional component field, that provide product safety and compliance
+ related information.
+ repair_score (Union[Unset, float]): This field represents the repair index for the listing.
The repair
+ index identifies the manufacturer's repair score for a product (i.e., how easy is it to repair the product.)
+ This field is a floating point value between 0.0 (i.e., difficult to repair,) and 10.0 (i.e., easily
+ repaired.)
Note: 0 should not be used as a default value, as
+ it implies the product is not repairable.
The format for repairScore is limited to one decimal
+ place. For example:7.9 and 0.0 are both valid
+ scores5.645 and 2.10 are both invalid scores
Note: Repair score is not applicable to all categories. Use the getExtendedProducerResponsibilityPolicies method of the Metadata API to see where
+ repair score is applicable.
+ responsible_persons (Union[Unset, list['ResponsiblePerson']]): This container provides information about the EU-
+ based Responsible Persons or entities associated with the listing.
A maximum of 5 EU Responsible Persons
+ are supported.
Note: As a part of General Product Safety Regulation (GPSR)
+ requirements effective on December 13th, 2024, sellers operating in, or shipping to, EU-based countries or
+ Northern Ireland are conditionally required to provide regulatory Responsible Persons information in their eBay
+ listings. For more information on GPSR, see General Product Safety Regulation (GPSR).
+ """
+
+ documents: Union[Unset, list['Document']] = UNSET
+ energy_efficiency_label: Union[Unset, 'EnergyEfficiencyLabel'] = UNSET
+ hazmat: Union[Unset, 'Hazmat'] = UNSET
+ manufacturer: Union[Unset, 'Manufacturer'] = UNSET
+ product_safety: Union[Unset, 'ProductSafety'] = UNSET
+ repair_score: Union[Unset, float] = UNSET
+ responsible_persons: Union[Unset, list['ResponsiblePerson']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.responsible_person import ResponsiblePerson
+ from ..models.product_safety import ProductSafety
+ from ..models.hazmat import Hazmat
+ from ..models.energy_efficiency_label import EnergyEfficiencyLabel
+ from ..models.document import Document
+ from ..models.manufacturer import Manufacturer
+ documents: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.documents, Unset):
+ documents = []
+ for documents_item_data in self.documents:
+ documents_item = documents_item_data.to_dict()
+ documents.append(documents_item)
+
+
+
+ energy_efficiency_label: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.energy_efficiency_label, Unset):
+ energy_efficiency_label = self.energy_efficiency_label.to_dict()
+
+ hazmat: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.hazmat, Unset):
+ hazmat = self.hazmat.to_dict()
+
+ manufacturer: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.manufacturer, Unset):
+ manufacturer = self.manufacturer.to_dict()
+
+ product_safety: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.product_safety, Unset):
+ product_safety = self.product_safety.to_dict()
+
+ repair_score = self.repair_score
+
+ responsible_persons: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.responsible_persons, Unset):
+ responsible_persons = []
+ for responsible_persons_item_data in self.responsible_persons:
+ responsible_persons_item = responsible_persons_item_data.to_dict()
+ responsible_persons.append(responsible_persons_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if documents is not UNSET:
+ field_dict["documents"] = documents
+ if energy_efficiency_label is not UNSET:
+ field_dict["energyEfficiencyLabel"] = energy_efficiency_label
+ if hazmat is not UNSET:
+ field_dict["hazmat"] = hazmat
+ if manufacturer is not UNSET:
+ field_dict["manufacturer"] = manufacturer
+ if product_safety is not UNSET:
+ field_dict["productSafety"] = product_safety
+ if repair_score is not UNSET:
+ field_dict["repairScore"] = repair_score
+ if responsible_persons is not UNSET:
+ field_dict["responsiblePersons"] = responsible_persons
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.responsible_person import ResponsiblePerson
+ from ..models.product_safety import ProductSafety
+ from ..models.hazmat import Hazmat
+ from ..models.energy_efficiency_label import EnergyEfficiencyLabel
+ from ..models.document import Document
+ from ..models.manufacturer import Manufacturer
+ d = dict(src_dict)
+ documents = []
+ _documents = d.pop("documents", UNSET)
+ for documents_item_data in (_documents or []):
+ documents_item = Document.from_dict(documents_item_data)
+
+
+
+ documents.append(documents_item)
+
+
+ _energy_efficiency_label = d.pop("energyEfficiencyLabel", UNSET)
+ energy_efficiency_label: Union[Unset, EnergyEfficiencyLabel]
+ if isinstance(_energy_efficiency_label, Unset):
+ energy_efficiency_label = UNSET
+ else:
+ energy_efficiency_label = EnergyEfficiencyLabel.from_dict(_energy_efficiency_label)
+
+
+
+
+ _hazmat = d.pop("hazmat", UNSET)
+ hazmat: Union[Unset, Hazmat]
+ if isinstance(_hazmat, Unset):
+ hazmat = UNSET
+ else:
+ hazmat = Hazmat.from_dict(_hazmat)
+
+
+
+
+ _manufacturer = d.pop("manufacturer", UNSET)
+ manufacturer: Union[Unset, Manufacturer]
+ if isinstance(_manufacturer, Unset):
+ manufacturer = UNSET
+ else:
+ manufacturer = Manufacturer.from_dict(_manufacturer)
+
+
+
+
+ _product_safety = d.pop("productSafety", UNSET)
+ product_safety: Union[Unset, ProductSafety]
+ if isinstance(_product_safety, Unset):
+ product_safety = UNSET
+ else:
+ product_safety = ProductSafety.from_dict(_product_safety)
+
+
+
+
+ repair_score = d.pop("repairScore", UNSET)
+
+ responsible_persons = []
+ _responsible_persons = d.pop("responsiblePersons", UNSET)
+ for responsible_persons_item_data in (_responsible_persons or []):
+ responsible_persons_item = ResponsiblePerson.from_dict(responsible_persons_item_data)
+
+
+
+ responsible_persons.append(responsible_persons_item)
+
+
+ regulatory = cls(
+ documents=documents,
+ energy_efficiency_label=energy_efficiency_label,
+ hazmat=hazmat,
+ manufacturer=manufacturer,
+ product_safety=product_safety,
+ repair_score=repair_score,
+ responsible_persons=responsible_persons,
+ )
+
+
+ regulatory.additional_properties = d
+ return regulatory
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/responsible_person.py b/ebay_client/generated/inventory/models/responsible_person.py
new file mode 100644
index 0000000..7afb77f
--- /dev/null
+++ b/ebay_client/generated/inventory/models/responsible_person.py
@@ -0,0 +1,192 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="ResponsiblePerson")
+
+
+
+@_attrs_define
+class ResponsiblePerson:
+ """ This type provides information, such as name and contact details, for an EU-based Responsible Person or entity,
+ associated with the product.
+
+ Attributes:
+ address_line_1 (Union[Unset, str]): The first line of the Responsible Person's street address.
Max
+ length: 180 characters
+ address_line_2 (Union[Unset, str]): The second line of the Responsible Person's address. This field is not
+ always used, but can be used for secondary address information such as 'Suite Number' or 'Apt
+ Number'.
Max length: 180 characters
+ city (Union[Unset, str]): The city of the Responsible Person's street address.
Max length: 64
+ characters
+ company_name (Union[Unset, str]): The name of the Responsible Person or entity.
Max length: 100
+ characters
+ contact_url (Union[Unset, str]): The contact URL of the Responsible Person or entity.
Max length:
+ 250 characters
+ country (Union[Unset, str]): This defines the list of valid country codes, adapted from
+ http://www.iso.org/iso/country_codes, ISO 3166-1 country code. List elements take the following form to identify
+ a two-letter code with a short name in English, a three-digit code, and a three-letter code: For example, the
+ entry for Japan includes Japan, 392, JPN. Short codes provide uniform recognition, avoiding language-dependent
+ country names. The number code is helpful where Latin script may be problematic. Not all listed codes are
+ universally recognized as countries, for example: code AQ is Antarctica, 010, ATA For implementation help, refer
+ to eBay API
+ documentation
+ email (Union[Unset, str]): The Responsible Person's email address.
Max length: 180 characters
+ phone (Union[Unset, str]): The Responsible Person's business phone number.
Max length: 64
+ characters
+ postal_code (Union[Unset, str]): The postal code of the Responsible Person's street address.
Max
+ length: 9 characters
+ state_or_province (Union[Unset, str]): The state of province of the Responsible Person's street
+ address.
Max length: 64 characters
+ types (Union[Unset, list[str]]): The type(s) associated with the Responsible Person or entity.
Note: Currently, the only supported value is EUResponsiblePerson.
+ """
+
+ address_line_1: Union[Unset, str] = UNSET
+ address_line_2: Union[Unset, str] = UNSET
+ city: Union[Unset, str] = UNSET
+ company_name: Union[Unset, str] = UNSET
+ contact_url: Union[Unset, str] = UNSET
+ country: Union[Unset, str] = UNSET
+ email: Union[Unset, str] = UNSET
+ phone: Union[Unset, str] = UNSET
+ postal_code: Union[Unset, str] = UNSET
+ state_or_province: Union[Unset, str] = UNSET
+ types: Union[Unset, list[str]] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ address_line_1 = self.address_line_1
+
+ address_line_2 = self.address_line_2
+
+ city = self.city
+
+ company_name = self.company_name
+
+ contact_url = self.contact_url
+
+ country = self.country
+
+ email = self.email
+
+ phone = self.phone
+
+ postal_code = self.postal_code
+
+ state_or_province = self.state_or_province
+
+ types: Union[Unset, list[str]] = UNSET
+ if not isinstance(self.types, Unset):
+ types = self.types
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if address_line_1 is not UNSET:
+ field_dict["addressLine1"] = address_line_1
+ if address_line_2 is not UNSET:
+ field_dict["addressLine2"] = address_line_2
+ if city is not UNSET:
+ field_dict["city"] = city
+ if company_name is not UNSET:
+ field_dict["companyName"] = company_name
+ if contact_url is not UNSET:
+ field_dict["contactUrl"] = contact_url
+ if country is not UNSET:
+ field_dict["country"] = country
+ if email is not UNSET:
+ field_dict["email"] = email
+ if phone is not UNSET:
+ field_dict["phone"] = phone
+ if postal_code is not UNSET:
+ field_dict["postalCode"] = postal_code
+ if state_or_province is not UNSET:
+ field_dict["stateOrProvince"] = state_or_province
+ if types is not UNSET:
+ field_dict["types"] = types
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ address_line_1 = d.pop("addressLine1", UNSET)
+
+ address_line_2 = d.pop("addressLine2", UNSET)
+
+ city = d.pop("city", UNSET)
+
+ company_name = d.pop("companyName", UNSET)
+
+ contact_url = d.pop("contactUrl", UNSET)
+
+ country = d.pop("country", UNSET)
+
+ email = d.pop("email", UNSET)
+
+ phone = d.pop("phone", UNSET)
+
+ postal_code = d.pop("postalCode", UNSET)
+
+ state_or_province = d.pop("stateOrProvince", UNSET)
+
+ types = cast(list[str], d.pop("types", UNSET))
+
+
+ responsible_person = cls(
+ address_line_1=address_line_1,
+ address_line_2=address_line_2,
+ city=city,
+ company_name=company_name,
+ contact_url=contact_url,
+ country=country,
+ email=email,
+ phone=phone,
+ postal_code=postal_code,
+ state_or_province=state_or_province,
+ types=types,
+ )
+
+
+ responsible_person.additional_properties = d
+ return responsible_person
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/same_day_shipping_cut_off_times.py b/ebay_client/generated/inventory/models/same_day_shipping_cut_off_times.py
new file mode 100644
index 0000000..8566424
--- /dev/null
+++ b/ebay_client/generated/inventory/models/same_day_shipping_cut_off_times.py
@@ -0,0 +1,130 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.weekly_schedule import WeeklySchedule
+ from ..models.overrides import Overrides
+
+
+
+
+
+T = TypeVar("T", bound="SameDayShippingCutOffTimes")
+
+
+
+@_attrs_define
+class SameDayShippingCutOffTimes:
+ """ This type is used by the createInventoryLocation call to specify cut-off time(s) for an inventory location,
+ as well as any overrides for these times.
+
+ Attributes:
+ overrides (Union[Unset, list['Overrides']]): This container can be used to override the existing cut-off
+ time(s), specified in the weeklySchedule container, for a specific date or date range.
+ weekly_schedule (Union[Unset, list['WeeklySchedule']]): This container is used to specify the weekly schedule
+ for shipping and handling cut-off times. A cut-off time is required for each business day that the fulfillment
+ center operates. Any orders made after the specified cutOffTime on the specified day(s) of the week will
+ be handled on the next day.
+ """
+
+ overrides: Union[Unset, list['Overrides']] = UNSET
+ weekly_schedule: Union[Unset, list['WeeklySchedule']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.weekly_schedule import WeeklySchedule
+ from ..models.overrides import Overrides
+ overrides: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.overrides, Unset):
+ overrides = []
+ for overrides_item_data in self.overrides:
+ overrides_item = overrides_item_data.to_dict()
+ overrides.append(overrides_item)
+
+
+
+ weekly_schedule: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.weekly_schedule, Unset):
+ weekly_schedule = []
+ for weekly_schedule_item_data in self.weekly_schedule:
+ weekly_schedule_item = weekly_schedule_item_data.to_dict()
+ weekly_schedule.append(weekly_schedule_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if overrides is not UNSET:
+ field_dict["overrides"] = overrides
+ if weekly_schedule is not UNSET:
+ field_dict["weeklySchedule"] = weekly_schedule
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.weekly_schedule import WeeklySchedule
+ from ..models.overrides import Overrides
+ d = dict(src_dict)
+ overrides = []
+ _overrides = d.pop("overrides", UNSET)
+ for overrides_item_data in (_overrides or []):
+ overrides_item = Overrides.from_dict(overrides_item_data)
+
+
+
+ overrides.append(overrides_item)
+
+
+ weekly_schedule = []
+ _weekly_schedule = d.pop("weeklySchedule", UNSET)
+ for weekly_schedule_item_data in (_weekly_schedule or []):
+ weekly_schedule_item = WeeklySchedule.from_dict(weekly_schedule_item_data)
+
+
+
+ weekly_schedule.append(weekly_schedule_item)
+
+
+ same_day_shipping_cut_off_times = cls(
+ overrides=overrides,
+ weekly_schedule=weekly_schedule,
+ )
+
+
+ same_day_shipping_cut_off_times.additional_properties = d
+ return same_day_shipping_cut_off_times
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/ship_to_location_availability.py b/ebay_client/generated/inventory/models/ship_to_location_availability.py
new file mode 100644
index 0000000..6fe023e
--- /dev/null
+++ b/ebay_client/generated/inventory/models/ship_to_location_availability.py
@@ -0,0 +1,126 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.availability_distribution import AvailabilityDistribution
+
+
+
+
+
+T = TypeVar("T", bound="ShipToLocationAvailability")
+
+
+
+@_attrs_define
+class ShipToLocationAvailability:
+ """ This type is used to specify the total 'ship-to-home' quantity of the inventory item that will be available for
+ purchase through one or more published offers.
+
+ Attributes:
+ availability_distributions (Union[Unset, list['AvailabilityDistribution']]): This container is used to set the
+ available quantity of the inventory item at one or more warehouse locations.
This container will be
+ returned if available quantity is set for one or more inventory locations.
+ quantity (Union[Unset, int]): This container is used to set the total 'ship-to-home' quantity of the inventory
+ item that will be available for purchase through one or more published offers.
This field represents the
+ total quantity of the item that is available for sale across all marketplaces. To update the available quantity
+ allocated to a specific marketplace, use the availableQuantity field in the
+ offer container associated with that marketplace.
Note:
+ To ensure that the available quantity allocated to a specific marketplace doesn't exceed the total available
+ stock, the quantity specified on a listing will be the minimum value between this field and the availableQuantity field.
If an existing inventory item is being updated, and the
+ 'ship-to-home' quantity already exists for the inventory item record, this field should be included again, even
+ if the value is not changing, or the available quantity data will be lost.
Important! This field is not immediately required, but 'ship-to-
+ home' quantity must be set before an offer of the inventory item can be published.
+ """
+
+ availability_distributions: Union[Unset, list['AvailabilityDistribution']] = UNSET
+ quantity: Union[Unset, int] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.availability_distribution import AvailabilityDistribution
+ availability_distributions: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.availability_distributions, Unset):
+ availability_distributions = []
+ for availability_distributions_item_data in self.availability_distributions:
+ availability_distributions_item = availability_distributions_item_data.to_dict()
+ availability_distributions.append(availability_distributions_item)
+
+
+
+ quantity = self.quantity
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if availability_distributions is not UNSET:
+ field_dict["availabilityDistributions"] = availability_distributions
+ if quantity is not UNSET:
+ field_dict["quantity"] = quantity
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.availability_distribution import AvailabilityDistribution
+ d = dict(src_dict)
+ availability_distributions = []
+ _availability_distributions = d.pop("availabilityDistributions", UNSET)
+ for availability_distributions_item_data in (_availability_distributions or []):
+ availability_distributions_item = AvailabilityDistribution.from_dict(availability_distributions_item_data)
+
+
+
+ availability_distributions.append(availability_distributions_item)
+
+
+ quantity = d.pop("quantity", UNSET)
+
+ ship_to_location_availability = cls(
+ availability_distributions=availability_distributions,
+ quantity=quantity,
+ )
+
+
+ ship_to_location_availability.additional_properties = d
+ return ship_to_location_availability
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/ship_to_location_availability_with_all.py b/ebay_client/generated/inventory/models/ship_to_location_availability_with_all.py
new file mode 100644
index 0000000..b80ed3e
--- /dev/null
+++ b/ebay_client/generated/inventory/models/ship_to_location_availability_with_all.py
@@ -0,0 +1,143 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.format_allocation import FormatAllocation
+ from ..models.availability_distribution import AvailabilityDistribution
+
+
+
+
+
+T = TypeVar("T", bound="ShipToLocationAvailabilityWithAll")
+
+
+
+@_attrs_define
+class ShipToLocationAvailabilityWithAll:
+ """ This type is used to specify the total 'ship-to-home' quantity of the inventory items that will be available for
+ purchase through one or more published offers.
+
+ Attributes:
+ allocation_by_format (Union[Unset, FormatAllocation]): This type is used to indicate the quantities of the
+ inventory items that are reserved for the different listing formats of the SKU offers.
+ availability_distributions (Union[Unset, list['AvailabilityDistribution']]): This container is used to set the
+ available quantity of the inventory item at one or more warehouse locations.
This container will be
+ returned if the available quantity is set for one or more inventory locations.
+ quantity (Union[Unset, int]): Important! Publish offer note: Although this field is not
+ required before an offer can be published to create an active listing, out of stock listings will result if this
+ field is omitted or set to 0.
This field is used to set the total 'ship-to-home'
+ quantity of the inventory item that will be available for purchase through one or more published offers. This
+ field is not immediately required, but 'ship-to-home' quantity must be set before an offer of the inventory item
+ can be published.
If an existing inventory item is being updated, and the 'ship-to-home' quantity already
+ exists for the inventory item record, this field should be included again, even if the value is not changing, or
+ the available quantity data will be lost.
+ """
+
+ allocation_by_format: Union[Unset, 'FormatAllocation'] = UNSET
+ availability_distributions: Union[Unset, list['AvailabilityDistribution']] = UNSET
+ quantity: Union[Unset, int] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.format_allocation import FormatAllocation
+ from ..models.availability_distribution import AvailabilityDistribution
+ allocation_by_format: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.allocation_by_format, Unset):
+ allocation_by_format = self.allocation_by_format.to_dict()
+
+ availability_distributions: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.availability_distributions, Unset):
+ availability_distributions = []
+ for availability_distributions_item_data in self.availability_distributions:
+ availability_distributions_item = availability_distributions_item_data.to_dict()
+ availability_distributions.append(availability_distributions_item)
+
+
+
+ quantity = self.quantity
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if allocation_by_format is not UNSET:
+ field_dict["allocationByFormat"] = allocation_by_format
+ if availability_distributions is not UNSET:
+ field_dict["availabilityDistributions"] = availability_distributions
+ if quantity is not UNSET:
+ field_dict["quantity"] = quantity
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.format_allocation import FormatAllocation
+ from ..models.availability_distribution import AvailabilityDistribution
+ d = dict(src_dict)
+ _allocation_by_format = d.pop("allocationByFormat", UNSET)
+ allocation_by_format: Union[Unset, FormatAllocation]
+ if isinstance(_allocation_by_format, Unset):
+ allocation_by_format = UNSET
+ else:
+ allocation_by_format = FormatAllocation.from_dict(_allocation_by_format)
+
+
+
+
+ availability_distributions = []
+ _availability_distributions = d.pop("availabilityDistributions", UNSET)
+ for availability_distributions_item_data in (_availability_distributions or []):
+ availability_distributions_item = AvailabilityDistribution.from_dict(availability_distributions_item_data)
+
+
+
+ availability_distributions.append(availability_distributions_item)
+
+
+ quantity = d.pop("quantity", UNSET)
+
+ ship_to_location_availability_with_all = cls(
+ allocation_by_format=allocation_by_format,
+ availability_distributions=availability_distributions,
+ quantity=quantity,
+ )
+
+
+ ship_to_location_availability_with_all.additional_properties = d
+ return ship_to_location_availability_with_all
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/shipping_cost_override.py b/ebay_client/generated/inventory/models/shipping_cost_override.py
new file mode 100644
index 0000000..d7f4a9f
--- /dev/null
+++ b/ebay_client/generated/inventory/models/shipping_cost_override.py
@@ -0,0 +1,178 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.amount import Amount
+
+
+
+
+
+T = TypeVar("T", bound="ShippingCostOverride")
+
+
+
+@_attrs_define
+class ShippingCostOverride:
+ """ This type is used if the seller wants to override the shipping costs or surcharge associated with a specific
+ domestic or international shipping service option defined in the fulfillment listing policy that is being applied
+ toward the offer. The shipping-related costs that can be overridden include the shipping cost to ship one item, the
+ shipping cost to ship each additional item (if multiple quantity are purchased), and the shipping surcharge applied
+ to the shipping service option.
+
+ Attributes:
+ additional_shipping_cost (Union[Unset, Amount]): This type is used to express a dollar value and the applicable
+ currency.
+ priority (Union[Unset, int]): The integer value input into this field, along with the
+ shippingServiceType value, sets which domestic or international shipping service option in the
+ fulfillment policy will be modified with updated shipping costs. Specifically, the
+ shippingCostOverrides.shippingServiceType value in a createOffer or
+ updateOffer call must match the shippingOptions.optionType value in a
+ fulfillment listing policy, and the shippingCostOverrides.priority value in a
+ createOffer or updateOffer call must match the
+ shippingOptions.shippingServices.sortOrderId value in a fulfillment listing policy.
This
+ field is always required when overriding the shipping costs of a shipping service option, and will be always be
+ returned for each shipping service option whose costs are being overridden.
+ shipping_cost (Union[Unset, Amount]): This type is used to express a dollar value and the applicable currency.
+ shipping_service_type (Union[Unset, str]): This enumerated value indicates whether the shipping service
+ specified in the priority field is a domestic or an international shipping service option. To
+ override the shipping costs for a specific domestic shipping service in the fulfillment listing policy, this
+ field should be set to DOMESTIC, and to override the shipping costs for each international shipping
+ service, this field should be set to INTERNATIONAL. This value, along with
+ priority value, sets which domestic or international shipping service option in the fulfillment
+ policy that will be modified with updated shipping costs. Specifically, the
+ shippingCostOverrides.shippingServiceType value in a createOffer or
+ updateOffer call must match the shippingOptions.optionType value in a
+ fulfillment listing policy, and the shippingCostOverrides.priority value in a
+ createOffer or updateOffer call must match the
+ shippingOptions.shippingServices.sortOrderId value in a fulfillment listing policy.
This
+ field is always required when overriding the shipping costs of a shipping service option, and will be always be
+ returned for each shipping service option whose costs are being overridden. For implementation help, refer to eBay API
+ documentation
+ surcharge (Union[Unset, Amount]): This type is used to express a dollar value and the applicable currency.
+ """
+
+ additional_shipping_cost: Union[Unset, 'Amount'] = UNSET
+ priority: Union[Unset, int] = UNSET
+ shipping_cost: Union[Unset, 'Amount'] = UNSET
+ shipping_service_type: Union[Unset, str] = UNSET
+ surcharge: Union[Unset, 'Amount'] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.amount import Amount
+ additional_shipping_cost: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.additional_shipping_cost, Unset):
+ additional_shipping_cost = self.additional_shipping_cost.to_dict()
+
+ priority = self.priority
+
+ shipping_cost: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.shipping_cost, Unset):
+ shipping_cost = self.shipping_cost.to_dict()
+
+ shipping_service_type = self.shipping_service_type
+
+ surcharge: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.surcharge, Unset):
+ surcharge = self.surcharge.to_dict()
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if additional_shipping_cost is not UNSET:
+ field_dict["additionalShippingCost"] = additional_shipping_cost
+ if priority is not UNSET:
+ field_dict["priority"] = priority
+ if shipping_cost is not UNSET:
+ field_dict["shippingCost"] = shipping_cost
+ if shipping_service_type is not UNSET:
+ field_dict["shippingServiceType"] = shipping_service_type
+ if surcharge is not UNSET:
+ field_dict["surcharge"] = surcharge
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.amount import Amount
+ d = dict(src_dict)
+ _additional_shipping_cost = d.pop("additionalShippingCost", UNSET)
+ additional_shipping_cost: Union[Unset, Amount]
+ if isinstance(_additional_shipping_cost, Unset):
+ additional_shipping_cost = UNSET
+ else:
+ additional_shipping_cost = Amount.from_dict(_additional_shipping_cost)
+
+
+
+
+ priority = d.pop("priority", UNSET)
+
+ _shipping_cost = d.pop("shippingCost", UNSET)
+ shipping_cost: Union[Unset, Amount]
+ if isinstance(_shipping_cost, Unset):
+ shipping_cost = UNSET
+ else:
+ shipping_cost = Amount.from_dict(_shipping_cost)
+
+
+
+
+ shipping_service_type = d.pop("shippingServiceType", UNSET)
+
+ _surcharge = d.pop("surcharge", UNSET)
+ surcharge: Union[Unset, Amount]
+ if isinstance(_surcharge, Unset):
+ surcharge = UNSET
+ else:
+ surcharge = Amount.from_dict(_surcharge)
+
+
+
+
+ shipping_cost_override = cls(
+ additional_shipping_cost=additional_shipping_cost,
+ priority=priority,
+ shipping_cost=shipping_cost,
+ shipping_service_type=shipping_service_type,
+ surcharge=surcharge,
+ )
+
+
+ shipping_cost_override.additional_properties = d
+ return shipping_cost_override
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/special_hours.py b/ebay_client/generated/inventory/models/special_hours.py
new file mode 100644
index 0000000..1430377
--- /dev/null
+++ b/ebay_client/generated/inventory/models/special_hours.py
@@ -0,0 +1,121 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.interval import Interval
+
+
+
+
+
+T = TypeVar("T", bound="SpecialHours")
+
+
+
+@_attrs_define
+class SpecialHours:
+ """ This type is used to express the special operating hours of a store location on a specific date. A
+ specialHours container is needed when the store's opening hours on a specific date are different
+ than the normal operating hours on that particular day of the week.
+
+ Attributes:
+ date (Union[Unset, str]): A date value is required for each specific date that the store
+ location has special operating hours or is closed for that date.
The timestamp is formatted as an ISO
+ 8601 string, which is based on the 24-hour Coordinated Universal Time (UTC) clock.
Format:
+ [YYYY]-[MM]-[DD]T[hh]:[mm]:[ss].[sss]Z
Example: 2025-08-04T00:00:00.000Z
+
This field is returned if set for the store location.
+ intervals (Union[Unset, list['Interval']]): This array is used to set the operating hours for the date specified
+ in the corresponding date field. These special operating hours on this specific date will
+ override the normal operating hours for that day of the week that is specified through the
+ operatingHours array.
To specify a location as closed on the corresponding
+ date, include the intervals array as empty.
If a location closes for
+ lunch (or any other period during the day) and then reopens, multiple open and
+ close pairs are needed to specify each interval where the location is open.
This
+ container is returned if set for the store location.
+ """
+
+ date: Union[Unset, str] = UNSET
+ intervals: Union[Unset, list['Interval']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.interval import Interval
+ date = self.date
+
+ intervals: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.intervals, Unset):
+ intervals = []
+ for intervals_item_data in self.intervals:
+ intervals_item = intervals_item_data.to_dict()
+ intervals.append(intervals_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if date is not UNSET:
+ field_dict["date"] = date
+ if intervals is not UNSET:
+ field_dict["intervals"] = intervals
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.interval import Interval
+ d = dict(src_dict)
+ date = d.pop("date", UNSET)
+
+ intervals = []
+ _intervals = d.pop("intervals", UNSET)
+ for intervals_item_data in (_intervals or []):
+ intervals_item = Interval.from_dict(intervals_item_data)
+
+
+
+ intervals.append(intervals_item)
+
+
+ special_hours = cls(
+ date=date,
+ intervals=intervals,
+ )
+
+
+ special_hours.additional_properties = d
+ return special_hours
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/specification.py b/ebay_client/generated/inventory/models/specification.py
new file mode 100644
index 0000000..c2fa578
--- /dev/null
+++ b/ebay_client/generated/inventory/models/specification.py
@@ -0,0 +1,121 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="Specification")
+
+
+
+@_attrs_define
+class Specification:
+ """ This type is used to specify product aspects for which variations within an inventory item group vary, and the order
+ in which they appear in the listing. For example, t-shirts in an inventory item group may be available in multiple
+ sizes and colors.
+
+ Attributes:
+ name (Union[Unset, str]): This is the name of product variation aspect. Typically, for clothing, typical aspect
+ names are "Size" and "Color". Product variation aspects are not required immediately
+ upon creating an inventory item group, but these aspects will be required before a multiple-variation listing
+ containing this inventory item group is published. For each product variation aspect that is specified through
+ the specifications container, one name value is required and two or more
+ variations of this aspect are required through the values array.
Note: Each member of the inventory item group should have these same aspect
+ names specified through the product.aspects container when the inventory item is created with
+ the createOrReplaceInventoryItem or bulkCreateOrReplaceInventoryItem call.
+
Important!Publish offer note: This field is required before an
+ offer can be published to create an active listing.
Max Length: 40
+ values (Union[Unset, list[str]]): This is an array of values pertaining to the corresponding product variation
+ aspect (specified in the name field). Below is a sample of how these values will appear under a
+ specifications container:
"specifications": [{
"name": "Size",
+ "values": ["Small",
"Medium",
"Large"]
},
{
"name": "Color",
"values": ["Blue",
+ "White",
"Red"]
}]
Note: Each member of the
+ inventory item group should have these same aspect names, and each individual inventory item should have each
+ variation of the product aspect values specified through the product.aspects container when the
+ inventory item is created with the createOrReplaceInventoryItem or
+ bulkCreateOrReplaceInventoryItem call.
Important!Publish offer note: This array
+ is required and at least one value that matches the corresponding aspect name must be
+ specified.
Max Length: 50
+ """
+
+ name: Union[Unset, str] = UNSET
+ values: Union[Unset, list[str]] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ name = self.name
+
+ values: Union[Unset, list[str]] = UNSET
+ if not isinstance(self.values, Unset):
+ values = self.values
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if name is not UNSET:
+ field_dict["name"] = name
+ if values is not UNSET:
+ field_dict["values"] = values
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ name = d.pop("name", UNSET)
+
+ values = cast(list[str], d.pop("values", UNSET))
+
+
+ specification = cls(
+ name=name,
+ values=values,
+ )
+
+
+ specification.additional_properties = d
+ return specification
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/tax.py b/ebay_client/generated/inventory/models/tax.py
new file mode 100644
index 0000000..c4a5d16
--- /dev/null
+++ b/ebay_client/generated/inventory/models/tax.py
@@ -0,0 +1,132 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="Tax")
+
+
+
+@_attrs_define
+class Tax:
+ """ This type is used to enable the use of a sales-tax table, to pass in a tax exception category code, or to specify a
+ VAT percentage.
Note: Sales-tax tables are available only for the US and
+ Canada marketplaces.
+
+ Attributes:
+ apply_tax (Union[Unset, bool]): When set to true, the seller's account-level sales-tax table will
+ be used to calculate sales tax for an order.
Note: Sales-tax tables are
+ available only for the US and Canada marketplaces.
Important! In the US, eBay now
+ calculates, collects, and remits sales tax to the proper taxing authorities in all 50 states and Washington, DC.
+ Sellers can no longer specify sales-tax rates for these jurisdictions using a tax table.
However, sellers
+ may continue to use a sales-tax table to set rates for the following US territories:
- American Samoa
+ (AS)
- Guam (GU)
- Northern Mariana Islands (MP)
- Palau (PW)
- US Virgin Islands
+ (VI)
For complete information about using sales-tax tables, refer to Establishing sales-tax tables.
Note
+ that a seller can enable the use of a sales-tax table, but if a sales-tax rate is not specified for the buyer's
+ tax jurisdiction, sales tax will not be applied to the order.
When a thirdPartyTaxCategory
+ value is used, applyTax must also be set to true.
This field will be returned
+ by getOffer and getOffers if set for the offer.
For additional
+ information, refer to Taxes and import charges.
+ third_party_tax_category (Union[Unset, str]): The tax exception category code. If this field is used, sales tax
+ will also apply to a service/fee, and not just the item price. This is to be used only by sellers who have opted
+ into sales tax being calculated by a sales tax calculation vendor. If you are interested in becoming a tax
+ calculation vendor partner with eBay, contact developer-
+ relations@ebay.com. One supported value for this field is WASTE_RECYCLING_FEE. If this field is
+ used, the applyTax field must also be used and set to true
This field will
+ be returned by getOffer and getOffers if set for the offer.
+ vat_percentage (Union[Unset, float]): This value is the Value Add Tax (VAT) rate for the item, if any. When a
+ VAT percentage is specified, the item's VAT information appears on the listing's View Item page. In addition,
+ the seller can choose to print an invoice that includes the item's net price, VAT percent, VAT amount, and total
+ price. Since VAT rates vary depending on the item and on the user's country of residence, a seller is
+ responsible for entering the correct VAT rate; it is not calculated by eBay.
To use VAT, a seller must
+ be a business seller with a VAT-ID registered with eBay, and must be listing the item on a VAT-enabled site. Max
+ applicable length is 6 characters, including the decimal (e.g., 12.345). The scale is 3 decimal places. (If you
+ pass in 12.3456, eBay may round up the value to 12.346).
This field will be returned by getOffer and getOffers if set for the offer.
+ """
+
+ apply_tax: Union[Unset, bool] = UNSET
+ third_party_tax_category: Union[Unset, str] = UNSET
+ vat_percentage: Union[Unset, float] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ apply_tax = self.apply_tax
+
+ third_party_tax_category = self.third_party_tax_category
+
+ vat_percentage = self.vat_percentage
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if apply_tax is not UNSET:
+ field_dict["applyTax"] = apply_tax
+ if third_party_tax_category is not UNSET:
+ field_dict["thirdPartyTaxCategory"] = third_party_tax_category
+ if vat_percentage is not UNSET:
+ field_dict["vatPercentage"] = vat_percentage
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ apply_tax = d.pop("applyTax", UNSET)
+
+ third_party_tax_category = d.pop("thirdPartyTaxCategory", UNSET)
+
+ vat_percentage = d.pop("vatPercentage", UNSET)
+
+ tax = cls(
+ apply_tax=apply_tax,
+ third_party_tax_category=third_party_tax_category,
+ vat_percentage=vat_percentage,
+ )
+
+
+ tax.additional_properties = d
+ return tax
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/time_duration.py b/ebay_client/generated/inventory/models/time_duration.py
new file mode 100644
index 0000000..1cb89b8
--- /dev/null
+++ b/ebay_client/generated/inventory/models/time_duration.py
@@ -0,0 +1,94 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="TimeDuration")
+
+
+
+@_attrs_define
+class TimeDuration:
+ """ This type is used to indicate the fulfillment time for an In-Store Pickup order, or for an order than will be
+ shipped to the buyer.
+
+ Attributes:
+ unit (Union[Unset, str]): This enumeration value indicates the time unit used to specify the fulfillment time,
+ such as BUSINESS_DAY. For implementation help, refer to eBay API documentation
+ value (Union[Unset, int]): The integer value in this field, along with the time unit in the
+ unit field, will indicate the fulfillment time.
For standard orders that will be
+ shipped, this value will indicate the expected fulfillment time if the inventory item is shipped from the
+ inventory location. If the value of this field is 4, and the value of the unit
+ field is BUSINESS_DAY, then the estimated delivery date after purchase is 4 business days.
+ """
+
+ unit: Union[Unset, str] = UNSET
+ value: Union[Unset, int] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ unit = self.unit
+
+ value = self.value
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if unit is not UNSET:
+ field_dict["unit"] = unit
+ if value is not UNSET:
+ field_dict["value"] = value
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ unit = d.pop("unit", UNSET)
+
+ value = d.pop("value", UNSET)
+
+ time_duration = cls(
+ unit=unit,
+ value=value,
+ )
+
+
+ time_duration.additional_properties = d
+ return time_duration
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/varies_by.py b/ebay_client/generated/inventory/models/varies_by.py
new file mode 100644
index 0000000..3d48e94
--- /dev/null
+++ b/ebay_client/generated/inventory/models/varies_by.py
@@ -0,0 +1,143 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.specification import Specification
+
+
+
+
+
+T = TypeVar("T", bound="VariesBy")
+
+
+
+@_attrs_define
+class VariesBy:
+ """ This type is used to specify the product aspect(s) where individual items of the group vary, as well as a list of
+ the available variations of those aspects.
+
+ Attributes:
+ aspects_image_varies_by (Union[Unset, list[str]]): This container is used if the seller wants to include
+ multiple images to demonstrate how variations within a multiple-variation listing differ. In this string field,
+ the seller will specify the product aspect where the variations of the inventory item group vary, such as color.
+ If Color is specified in this field, Color must also be one of the
+ specifications.name values, and all available colors must appear in the corresponding
+ specifications.values array.
If the aspectsImageVariesBy container is
+ used, links to images of each variation should be specified through the imageUrls container of
+ the inventory item group, or the seller can choose to include those links to images in each inventory item
+ record for the inventory items in the group.
Important!Publish offer note: This array
+ is required and at least one aspect (such as Color) must be specified before an offer can be
+ published to create an active listing.
+ specifications (Union[Unset, list['Specification']]): This container consists of an array of one or more product
+ aspects where each variation differs, and values for each of those product aspects. This container is not
+ immediately required, but will be required before the first offer of the inventory item group is published.
+
If a product aspect is specified in the aspectsImageVariesBy container, this product
+ aspect (along with all variations of that product aspect) must be included in the
+ specifications container. Before offers related to the inventory item group are published, the
+ product aspects and values specified through the specifications container should be in synch
+ with the name-value pairs specified through the product.aspects containers of the inventory
+ items contained in the group. For example, if Color and Size are in this
+ specifications container, each inventory item of the group should also have Color
+ and Size as aspect names in their inventory item records.
This container is always returned
+ if one or more offers associated with the inventory item group have been published. For inventory item groups
+ that have yet to have any published offers, this container is only returned if set.
Important!Publish offer note: This array is required and at least
+ one aspect with the available variations must be specified.
+ """
+
+ aspects_image_varies_by: Union[Unset, list[str]] = UNSET
+ specifications: Union[Unset, list['Specification']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.specification import Specification
+ aspects_image_varies_by: Union[Unset, list[str]] = UNSET
+ if not isinstance(self.aspects_image_varies_by, Unset):
+ aspects_image_varies_by = self.aspects_image_varies_by
+
+
+
+ specifications: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.specifications, Unset):
+ specifications = []
+ for specifications_item_data in self.specifications:
+ specifications_item = specifications_item_data.to_dict()
+ specifications.append(specifications_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if aspects_image_varies_by is not UNSET:
+ field_dict["aspectsImageVariesBy"] = aspects_image_varies_by
+ if specifications is not UNSET:
+ field_dict["specifications"] = specifications
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.specification import Specification
+ d = dict(src_dict)
+ aspects_image_varies_by = cast(list[str], d.pop("aspectsImageVariesBy", UNSET))
+
+
+ specifications = []
+ _specifications = d.pop("specifications", UNSET)
+ for specifications_item_data in (_specifications or []):
+ specifications_item = Specification.from_dict(specifications_item_data)
+
+
+
+ specifications.append(specifications_item)
+
+
+ varies_by = cls(
+ aspects_image_varies_by=aspects_image_varies_by,
+ specifications=specifications,
+ )
+
+
+ varies_by.additional_properties = d
+ return varies_by
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/version.py b/ebay_client/generated/inventory/models/version.py
new file mode 100644
index 0000000..a00252a
--- /dev/null
+++ b/ebay_client/generated/inventory/models/version.py
@@ -0,0 +1,99 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="Version")
+
+
+
+@_attrs_define
+class Version:
+ """ This type is used to show the version number and instance of the service or API.
+
+ Attributes:
+ instance (Union[Unset, Version]): This type is used to show the version number and instance of the service or
+ API.
+ version (Union[Unset, str]): The version number of the service or API.
+ """
+
+ instance: Union[Unset, 'Version'] = UNSET
+ version: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ instance: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.instance, Unset):
+ instance = self.instance.to_dict()
+
+ version = self.version
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if instance is not UNSET:
+ field_dict["instance"] = instance
+ if version is not UNSET:
+ field_dict["version"] = version
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ _instance = d.pop("instance", UNSET)
+ instance: Union[Unset, Version]
+ if isinstance(_instance, Unset):
+ instance = UNSET
+ else:
+ instance = Version.from_dict(_instance)
+
+
+
+
+ version = d.pop("version", UNSET)
+
+ version = cls(
+ instance=instance,
+ version=version,
+ )
+
+
+ version.additional_properties = d
+ return version
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/weekly_schedule.py b/ebay_client/generated/inventory/models/weekly_schedule.py
new file mode 100644
index 0000000..3a76ae9
--- /dev/null
+++ b/ebay_client/generated/inventory/models/weekly_schedule.py
@@ -0,0 +1,98 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="WeeklySchedule")
+
+
+
+@_attrs_define
+class WeeklySchedule:
+ """ This type describes the weekly schedule for cut-off times.
+
+ Attributes:
+ cut_off_time (Union[Unset, str]): This field specifies the cut-off times (in 24-hour format) for the business
+ day(s) specified in the dayOfWeekEnum array.
Cut-off times default to the time zone of the
+ specified address if the timeZoneId is not provided.
Note: If cut-
+ off hours are not specified for a particular day, the fulfillment center is considered to be on holiday for that
+ day.
Format: 00:00
+ day_of_week_enum (Union[Unset, list[str]]): This comma-separated array defines the days of week for which the
+ specified cutOffTime is used.
+ """
+
+ cut_off_time: Union[Unset, str] = UNSET
+ day_of_week_enum: Union[Unset, list[str]] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ cut_off_time = self.cut_off_time
+
+ day_of_week_enum: Union[Unset, list[str]] = UNSET
+ if not isinstance(self.day_of_week_enum, Unset):
+ day_of_week_enum = self.day_of_week_enum
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if cut_off_time is not UNSET:
+ field_dict["cutOffTime"] = cut_off_time
+ if day_of_week_enum is not UNSET:
+ field_dict["dayOfWeekEnum"] = day_of_week_enum
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ cut_off_time = d.pop("cutOffTime", UNSET)
+
+ day_of_week_enum = cast(list[str], d.pop("dayOfWeekEnum", UNSET))
+
+
+ weekly_schedule = cls(
+ cut_off_time=cut_off_time,
+ day_of_week_enum=day_of_week_enum,
+ )
+
+
+ weekly_schedule.additional_properties = d
+ return weekly_schedule
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/weight.py b/ebay_client/generated/inventory/models/weight.py
new file mode 100644
index 0000000..81cd6f8
--- /dev/null
+++ b/ebay_client/generated/inventory/models/weight.py
@@ -0,0 +1,100 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="Weight")
+
+
+
+@_attrs_define
+class Weight:
+ """ This type is used to specify the weight (and the unit used to measure that weight) of a shipping package. The
+ weight container is conditionally required if the seller will be offering calculated shipping rates
+ to determine shipping cost, or is using flat-rate costs, but charging a weight surcharge. See the Calculated shipping help page
+ for more information on calculated shipping.
+
+ Attributes:
+ unit (Union[Unset, str]): The unit of measurement used to specify the weight of a shipping package. Both the
+ unit and value fields are required if the weight container is
+ used. If the English system of measurement is being used, the applicable values for weight units are
+ POUND and OUNCE. If the metric system of measurement is being used, the applicable
+ values for weight units are KILOGRAM and GRAM. The metric system is used by most
+ countries outside of the US. For implementation help, refer to eBay API documentation
+ value (Union[Unset, float]): The actual weight (in the measurement unit specified in the unit
+ field) of the shipping package. Both the unit and value fields are required if
+ the weight container is used. If a shipping package weighed 20.5 ounces, the container would
+ look as follows:
"weight": {
"value": 20.5,
"unit": "OUNCE"
}
+ """
+
+ unit: Union[Unset, str] = UNSET
+ value: Union[Unset, float] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ unit = self.unit
+
+ value = self.value
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if unit is not UNSET:
+ field_dict["unit"] = unit
+ if value is not UNSET:
+ field_dict["value"] = value
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ unit = d.pop("unit", UNSET)
+
+ value = d.pop("value", UNSET)
+
+ weight = cls(
+ unit=unit,
+ value=value,
+ )
+
+
+ weight.additional_properties = d
+ return weight
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/withdraw_by_inventory_item_group_request.py b/ebay_client/generated/inventory/models/withdraw_by_inventory_item_group_request.py
new file mode 100644
index 0000000..7fbfd62
--- /dev/null
+++ b/ebay_client/generated/inventory/models/withdraw_by_inventory_item_group_request.py
@@ -0,0 +1,96 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="WithdrawByInventoryItemGroupRequest")
+
+
+
+@_attrs_define
+class WithdrawByInventoryItemGroupRequest:
+ """ This type is used by the base request of the WithdrawByInventoryItemGroup method, which is used to
+ end a multiple-variation listing.
+
+ Attributes:
+ inventory_item_group_key (Union[Unset, str]): This is the unique identifier of the inventory item group. This
+ identifier is automatically generated by eBay once an inventory item group is created.
To retrieve an
+ inventoryItemGroupKey value, you can use the getInventoryItem
+ method to retrieve an inventory item that is known to be in the inventory item group to publish, and then look
+ for the inventory item group identifier under the groupIds container in the response of that
+ call.
+ marketplace_id (Union[Unset, str]): This is the unique identifier of the eBay site for which the offer will be
+ made available. See MarketplaceEnum for supported values. For implementation help, refer to eBay API documentation
+ """
+
+ inventory_item_group_key: Union[Unset, str] = UNSET
+ marketplace_id: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ inventory_item_group_key = self.inventory_item_group_key
+
+ marketplace_id = self.marketplace_id
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if inventory_item_group_key is not UNSET:
+ field_dict["inventoryItemGroupKey"] = inventory_item_group_key
+ if marketplace_id is not UNSET:
+ field_dict["marketplaceId"] = marketplace_id
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ inventory_item_group_key = d.pop("inventoryItemGroupKey", UNSET)
+
+ marketplace_id = d.pop("marketplaceId", UNSET)
+
+ withdraw_by_inventory_item_group_request = cls(
+ inventory_item_group_key=inventory_item_group_key,
+ marketplace_id=marketplace_id,
+ )
+
+
+ withdraw_by_inventory_item_group_request.additional_properties = d
+ return withdraw_by_inventory_item_group_request
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/models/withdraw_response.py b/ebay_client/generated/inventory/models/withdraw_response.py
new file mode 100644
index 0000000..cafce87
--- /dev/null
+++ b/ebay_client/generated/inventory/models/withdraw_response.py
@@ -0,0 +1,109 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.error import Error
+
+
+
+
+
+T = TypeVar("T", bound="WithdrawResponse")
+
+
+
+@_attrs_define
+class WithdrawResponse:
+ """ The base response of the withdrawOffer call.
+
+ Attributes:
+ listing_id (Union[Unset, str]): The unique identifier of the eBay listing associated with the offer that was
+ withdrawn. This field will not be returned if the eBay listing was not successfully ended.
+ warnings (Union[Unset, list['Error']]): This container will be returned if there were one or more warnings
+ associated with the attempt to withdraw the offer.
+ """
+
+ listing_id: Union[Unset, str] = UNSET
+ warnings: Union[Unset, list['Error']] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.error import Error
+ listing_id = self.listing_id
+
+ warnings: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.warnings, Unset):
+ warnings = []
+ for warnings_item_data in self.warnings:
+ warnings_item = warnings_item_data.to_dict()
+ warnings.append(warnings_item)
+
+
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if listing_id is not UNSET:
+ field_dict["listingId"] = listing_id
+ if warnings is not UNSET:
+ field_dict["warnings"] = warnings
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.error import Error
+ d = dict(src_dict)
+ listing_id = d.pop("listingId", UNSET)
+
+ warnings = []
+ _warnings = d.pop("warnings", UNSET)
+ for warnings_item_data in (_warnings or []):
+ warnings_item = Error.from_dict(warnings_item_data)
+
+
+
+ warnings.append(warnings_item)
+
+
+ withdraw_response = cls(
+ listing_id=listing_id,
+ warnings=warnings,
+ )
+
+
+ withdraw_response.additional_properties = d
+ return withdraw_response
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/inventory/types.py b/ebay_client/generated/inventory/types.py
new file mode 100644
index 0000000..2330892
--- /dev/null
+++ b/ebay_client/generated/inventory/types.py
@@ -0,0 +1,53 @@
+""" Contains some shared types for properties """
+
+from collections.abc import Mapping, MutableMapping
+from http import HTTPStatus
+from typing import BinaryIO, Generic, Optional, TypeVar, Literal, Union, IO
+
+from attrs import define
+
+
+class Unset:
+ def __bool__(self) -> Literal[False]:
+ return False
+
+
+UNSET: Unset = Unset()
+
+# The types that `httpx.Client(files=)` can accept, copied from that library.
+FileContent = Union[IO[bytes], bytes, str]
+FileTypes = Union[
+ # (filename, file (or bytes), content_type)
+ tuple[Optional[str], FileContent, Optional[str]],
+ # (filename, file (or bytes), content_type, headers)
+ tuple[Optional[str], FileContent, Optional[str], Mapping[str, str]],
+]
+RequestFiles = list[tuple[str, FileTypes]]
+
+@define
+class File:
+ """ Contains information for file uploads """
+
+ payload: BinaryIO
+ file_name: Optional[str] = None
+ mime_type: Optional[str] = None
+
+ def to_tuple(self) -> FileTypes:
+ """ Return a tuple representation that httpx will accept for multipart/form-data """
+ return self.file_name, self.payload, self.mime_type
+
+
+T = TypeVar("T")
+
+
+@define
+class Response(Generic[T]):
+ """ A response from an endpoint """
+
+ status_code: HTTPStatus
+ content: bytes
+ headers: MutableMapping[str, str]
+ parsed: Optional[T]
+
+
+__all__ = ["UNSET", "File", "FileTypes", "RequestFiles", "Response", "Unset"]
diff --git a/ebay_client/generated/notification/__init__.py b/ebay_client/generated/notification/__init__.py
new file mode 100644
index 0000000..d005510
--- /dev/null
+++ b/ebay_client/generated/notification/__init__.py
@@ -0,0 +1,8 @@
+
+""" A client library for accessing Notification API """
+from .client import AuthenticatedClient, Client
+
+__all__ = (
+ "AuthenticatedClient",
+ "Client",
+)
diff --git a/ebay_client/generated/notification/api/__init__.py b/ebay_client/generated/notification/api/__init__.py
new file mode 100644
index 0000000..dc035f4
--- /dev/null
+++ b/ebay_client/generated/notification/api/__init__.py
@@ -0,0 +1 @@
+""" Contains methods for accessing the API """
diff --git a/ebay_client/generated/notification/api/config/__init__.py b/ebay_client/generated/notification/api/config/__init__.py
new file mode 100644
index 0000000..c9921b5
--- /dev/null
+++ b/ebay_client/generated/notification/api/config/__init__.py
@@ -0,0 +1 @@
+""" Contains endpoint functions for accessing the API """
diff --git a/ebay_client/generated/notification/api/config/get_config.py b/ebay_client/generated/notification/api/config/get_config.py
new file mode 100644
index 0000000..0980df1
--- /dev/null
+++ b/ebay_client/generated/notification/api/config/get_config.py
@@ -0,0 +1,153 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.config import Config
+from typing import cast
+
+
+
+def _get_kwargs(
+
+) -> dict[str, Any]:
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/config",
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, Config]]:
+ if response.status_code == 200:
+ response_200 = Config.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 404:
+ response_404 = cast(Any, None)
+ return response_404
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, Config]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, Config]]:
+ """ This method allows applications to retrieve a previously created configuration.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, Config]]
+ """
+
+
+ kwargs = _get_kwargs(
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, Config]]:
+ """ This method allows applications to retrieve a previously created configuration.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, Config]
+ """
+
+
+ return sync_detailed(
+ client=client,
+
+ ).parsed
+
+async def asyncio_detailed(
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, Config]]:
+ """ This method allows applications to retrieve a previously created configuration.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, Config]]
+ """
+
+
+ kwargs = _get_kwargs(
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, Config]]:
+ """ This method allows applications to retrieve a previously created configuration.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, Config]
+ """
+
+
+ return (await asyncio_detailed(
+ client=client,
+
+ )).parsed
diff --git a/ebay_client/generated/notification/api/config/update_config.py b/ebay_client/generated/notification/api/config/update_config.py
new file mode 100644
index 0000000..f754247
--- /dev/null
+++ b/ebay_client/generated/notification/api/config/update_config.py
@@ -0,0 +1,136 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.config import Config
+from typing import cast
+
+
+
+def _get_kwargs(
+ *,
+ body: Config,
+ content_type: str,
+
+) -> dict[str, Any]:
+ headers: dict[str, Any] = {}
+ headers["Content-Type"] = content_type
+
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "put",
+ "url": "/config",
+ }
+
+ _kwargs["json"] = body.to_dict()
+
+
+ headers["Content-Type"] = "application/json"
+
+ _kwargs["headers"] = headers
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Any]:
+ if response.status_code == 400:
+ return None
+ if response.status_code == 500:
+ return None
+ if response.status_code == 204:
+ return None
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Any]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ *,
+ client: AuthenticatedClient,
+ body: Config,
+ content_type: str,
+
+) -> Response[Any]:
+ """ This method allows applications to create a new configuration or update an existing configuration.
+ This app-level configuration allows developers to set up alerts.
+
+ Args:
+ content_type (str):
+ body (Config): The type that defines the fields for the alertEmail field.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ body=body,
+content_type=content_type,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+
+async def asyncio_detailed(
+ *,
+ client: AuthenticatedClient,
+ body: Config,
+ content_type: str,
+
+) -> Response[Any]:
+ """ This method allows applications to create a new configuration or update an existing configuration.
+ This app-level configuration allows developers to set up alerts.
+
+ Args:
+ content_type (str):
+ body (Config): The type that defines the fields for the alertEmail field.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ body=body,
+content_type=content_type,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
diff --git a/ebay_client/generated/notification/api/destination/__init__.py b/ebay_client/generated/notification/api/destination/__init__.py
new file mode 100644
index 0000000..c9921b5
--- /dev/null
+++ b/ebay_client/generated/notification/api/destination/__init__.py
@@ -0,0 +1 @@
+""" Contains endpoint functions for accessing the API """
diff --git a/ebay_client/generated/notification/api/destination/create_destination.py b/ebay_client/generated/notification/api/destination/create_destination.py
new file mode 100644
index 0000000..8702dd9
--- /dev/null
+++ b/ebay_client/generated/notification/api/destination/create_destination.py
@@ -0,0 +1,232 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.create_destination_response_201 import CreateDestinationResponse201
+from ...models.destination_request import DestinationRequest
+from typing import cast
+
+
+
+def _get_kwargs(
+ *,
+ body: DestinationRequest,
+ content_type: str,
+
+) -> dict[str, Any]:
+ headers: dict[str, Any] = {}
+ headers["Content-Type"] = content_type
+
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "post",
+ "url": "/destination",
+ }
+
+ _kwargs["json"] = body.to_dict()
+
+
+ headers["Content-Type"] = "application/json"
+
+ _kwargs["headers"] = headers
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, CreateDestinationResponse201]]:
+ if response.status_code == 201:
+ response_201 = CreateDestinationResponse201.from_dict(response.json())
+
+
+
+ return response_201
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 409:
+ response_409 = cast(Any, None)
+ return response_409
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, CreateDestinationResponse201]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ *,
+ client: AuthenticatedClient,
+ body: DestinationRequest,
+ content_type: str,
+
+) -> Response[Union[Any, CreateDestinationResponse201]]:
+ r""" This method allows applications to create a destination. A destination is an endpoint that receives
+ HTTP push notifications.
A single destination for all topics is valid, as is individual
+ destinations for each topic.
To update a destination, use the
+ updateDestination call.
The destination created will need to be referenced
+ while creating or updating a subscription to a topic.
Note:
+ The destination should be created and ready to respond with the expected challengeResponse
+ for the endpoint to be registered successfully. Refer to the Notification API overview for more
+ information.
+
+ Args:
+ content_type (str):
+ body (DestinationRequest): A type that contains information about the destination request.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, CreateDestinationResponse201]]
+ """
+
+
+ kwargs = _get_kwargs(
+ body=body,
+content_type=content_type,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ *,
+ client: AuthenticatedClient,
+ body: DestinationRequest,
+ content_type: str,
+
+) -> Optional[Union[Any, CreateDestinationResponse201]]:
+ r""" This method allows applications to create a destination. A destination is an endpoint that receives
+ HTTP push notifications.
A single destination for all topics is valid, as is individual
+ destinations for each topic.
To update a destination, use the
+ updateDestination call.
The destination created will need to be referenced
+ while creating or updating a subscription to a topic.
Note:
+ The destination should be created and ready to respond with the expected challengeResponse
+ for the endpoint to be registered successfully. Refer to the Notification API overview for more
+ information.
+
+ Args:
+ content_type (str):
+ body (DestinationRequest): A type that contains information about the destination request.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, CreateDestinationResponse201]
+ """
+
+
+ return sync_detailed(
+ client=client,
+body=body,
+content_type=content_type,
+
+ ).parsed
+
+async def asyncio_detailed(
+ *,
+ client: AuthenticatedClient,
+ body: DestinationRequest,
+ content_type: str,
+
+) -> Response[Union[Any, CreateDestinationResponse201]]:
+ r""" This method allows applications to create a destination. A destination is an endpoint that receives
+ HTTP push notifications.
A single destination for all topics is valid, as is individual
+ destinations for each topic.
To update a destination, use the
+ updateDestination call.
The destination created will need to be referenced
+ while creating or updating a subscription to a topic.
Note:
+ The destination should be created and ready to respond with the expected challengeResponse
+ for the endpoint to be registered successfully. Refer to the Notification API overview for more
+ information.
+
+ Args:
+ content_type (str):
+ body (DestinationRequest): A type that contains information about the destination request.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, CreateDestinationResponse201]]
+ """
+
+
+ kwargs = _get_kwargs(
+ body=body,
+content_type=content_type,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ *,
+ client: AuthenticatedClient,
+ body: DestinationRequest,
+ content_type: str,
+
+) -> Optional[Union[Any, CreateDestinationResponse201]]:
+ r""" This method allows applications to create a destination. A destination is an endpoint that receives
+ HTTP push notifications.
A single destination for all topics is valid, as is individual
+ destinations for each topic.
To update a destination, use the
+ updateDestination call.
The destination created will need to be referenced
+ while creating or updating a subscription to a topic.
Note:
+ The destination should be created and ready to respond with the expected challengeResponse
+ for the endpoint to be registered successfully. Refer to the Notification API overview for more
+ information.
+
+ Args:
+ content_type (str):
+ body (DestinationRequest): A type that contains information about the destination request.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, CreateDestinationResponse201]
+ """
+
+
+ return (await asyncio_detailed(
+ client=client,
+body=body,
+content_type=content_type,
+
+ )).parsed
diff --git a/ebay_client/generated/notification/api/destination/delete_destination.py b/ebay_client/generated/notification/api/destination/delete_destination.py
new file mode 100644
index 0000000..b1ad3b7
--- /dev/null
+++ b/ebay_client/generated/notification/api/destination/delete_destination.py
@@ -0,0 +1,124 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+
+
+
+def _get_kwargs(
+ destination_id: str,
+
+) -> dict[str, Any]:
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "delete",
+ "url": "/destination/{destination_id}".format(destination_id=destination_id,),
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Any]:
+ if response.status_code == 400:
+ return None
+ if response.status_code == 500:
+ return None
+ if response.status_code == 204:
+ return None
+ if response.status_code == 404:
+ return None
+ if response.status_code == 409:
+ return None
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Any]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ destination_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Any]:
+ """ This method provides applications a way to delete a destination.
The same destination ID can
+ be used by many destinations.
Trying to delete an active destination results in an error. You
+ can disable a subscription, and when the destination is no longer in use, you can delete it.
+
+ Args:
+ destination_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ destination_id=destination_id,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+
+async def asyncio_detailed(
+ destination_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Any]:
+ """ This method provides applications a way to delete a destination.
The same destination ID can
+ be used by many destinations.
Trying to delete an active destination results in an error. You
+ can disable a subscription, and when the destination is no longer in use, you can delete it.
+
+ Args:
+ destination_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ destination_id=destination_id,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
diff --git a/ebay_client/generated/notification/api/destination/get_destination.py b/ebay_client/generated/notification/api/destination/get_destination.py
new file mode 100644
index 0000000..3018532
--- /dev/null
+++ b/ebay_client/generated/notification/api/destination/get_destination.py
@@ -0,0 +1,181 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.destination import Destination
+from typing import cast
+
+
+
+def _get_kwargs(
+ destination_id: str,
+
+) -> dict[str, Any]:
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/destination/{destination_id}".format(destination_id=destination_id,),
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, Destination]]:
+ if response.status_code == 200:
+ response_200 = Destination.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 404:
+ response_404 = cast(Any, None)
+ return response_404
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, Destination]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ destination_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, Destination]]:
+ """ This method allows applications to fetch the details for a destination. The details include the
+ destination name, status, and configuration, including the endpoint and verification token.
+
+ Args:
+ destination_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, Destination]]
+ """
+
+
+ kwargs = _get_kwargs(
+ destination_id=destination_id,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ destination_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, Destination]]:
+ """ This method allows applications to fetch the details for a destination. The details include the
+ destination name, status, and configuration, including the endpoint and verification token.
+
+ Args:
+ destination_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, Destination]
+ """
+
+
+ return sync_detailed(
+ destination_id=destination_id,
+client=client,
+
+ ).parsed
+
+async def asyncio_detailed(
+ destination_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, Destination]]:
+ """ This method allows applications to fetch the details for a destination. The details include the
+ destination name, status, and configuration, including the endpoint and verification token.
+
+ Args:
+ destination_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, Destination]]
+ """
+
+
+ kwargs = _get_kwargs(
+ destination_id=destination_id,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ destination_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, Destination]]:
+ """ This method allows applications to fetch the details for a destination. The details include the
+ destination name, status, and configuration, including the endpoint and verification token.
+
+ Args:
+ destination_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, Destination]
+ """
+
+
+ return (await asyncio_detailed(
+ destination_id=destination_id,
+client=client,
+
+ )).parsed
diff --git a/ebay_client/generated/notification/api/destination/get_destinations.py b/ebay_client/generated/notification/api/destination/get_destinations.py
new file mode 100644
index 0000000..5d8ad33
--- /dev/null
+++ b/ebay_client/generated/notification/api/destination/get_destinations.py
@@ -0,0 +1,207 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.destination_search_response import DestinationSearchResponse
+from ...types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+
+
+def _get_kwargs(
+ *,
+ continuation_token: Union[Unset, str] = UNSET,
+ limit: Union[Unset, str] = UNSET,
+
+) -> dict[str, Any]:
+
+
+
+
+ params: dict[str, Any] = {}
+
+ params["continuation_token"] = continuation_token
+
+ params["limit"] = limit
+
+
+ params = {k: v for k, v in params.items() if v is not UNSET and v is not None}
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/destination",
+ "params": params,
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, DestinationSearchResponse]]:
+ if response.status_code == 200:
+ response_200 = DestinationSearchResponse.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, DestinationSearchResponse]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ *,
+ client: AuthenticatedClient,
+ continuation_token: Union[Unset, str] = UNSET,
+ limit: Union[Unset, str] = UNSET,
+
+) -> Response[Union[Any, DestinationSearchResponse]]:
+ """ This method allows applications to retrieve a paginated collection of destination resources and
+ related details. The details include the destination names, statuses, and configurations, including
+ the endpoints and verification tokens.
+
+ Args:
+ continuation_token (Union[Unset, str]):
+ limit (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, DestinationSearchResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ continuation_token=continuation_token,
+limit=limit,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ *,
+ client: AuthenticatedClient,
+ continuation_token: Union[Unset, str] = UNSET,
+ limit: Union[Unset, str] = UNSET,
+
+) -> Optional[Union[Any, DestinationSearchResponse]]:
+ """ This method allows applications to retrieve a paginated collection of destination resources and
+ related details. The details include the destination names, statuses, and configurations, including
+ the endpoints and verification tokens.
+
+ Args:
+ continuation_token (Union[Unset, str]):
+ limit (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, DestinationSearchResponse]
+ """
+
+
+ return sync_detailed(
+ client=client,
+continuation_token=continuation_token,
+limit=limit,
+
+ ).parsed
+
+async def asyncio_detailed(
+ *,
+ client: AuthenticatedClient,
+ continuation_token: Union[Unset, str] = UNSET,
+ limit: Union[Unset, str] = UNSET,
+
+) -> Response[Union[Any, DestinationSearchResponse]]:
+ """ This method allows applications to retrieve a paginated collection of destination resources and
+ related details. The details include the destination names, statuses, and configurations, including
+ the endpoints and verification tokens.
+
+ Args:
+ continuation_token (Union[Unset, str]):
+ limit (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, DestinationSearchResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ continuation_token=continuation_token,
+limit=limit,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ *,
+ client: AuthenticatedClient,
+ continuation_token: Union[Unset, str] = UNSET,
+ limit: Union[Unset, str] = UNSET,
+
+) -> Optional[Union[Any, DestinationSearchResponse]]:
+ """ This method allows applications to retrieve a paginated collection of destination resources and
+ related details. The details include the destination names, statuses, and configurations, including
+ the endpoints and verification tokens.
+
+ Args:
+ continuation_token (Union[Unset, str]):
+ limit (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, DestinationSearchResponse]
+ """
+
+
+ return (await asyncio_detailed(
+ client=client,
+continuation_token=continuation_token,
+limit=limit,
+
+ )).parsed
diff --git a/ebay_client/generated/notification/api/destination/update_destination.py b/ebay_client/generated/notification/api/destination/update_destination.py
new file mode 100644
index 0000000..e4af5a5
--- /dev/null
+++ b/ebay_client/generated/notification/api/destination/update_destination.py
@@ -0,0 +1,153 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.destination_request import DestinationRequest
+from typing import cast
+
+
+
+def _get_kwargs(
+ destination_id: str,
+ *,
+ body: DestinationRequest,
+ content_type: str,
+
+) -> dict[str, Any]:
+ headers: dict[str, Any] = {}
+ headers["Content-Type"] = content_type
+
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "put",
+ "url": "/destination/{destination_id}".format(destination_id=destination_id,),
+ }
+
+ _kwargs["json"] = body.to_dict()
+
+
+ headers["Content-Type"] = "application/json"
+
+ _kwargs["headers"] = headers
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Any]:
+ if response.status_code == 400:
+ return None
+ if response.status_code == 500:
+ return None
+ if response.status_code == 204:
+ return None
+ if response.status_code == 404:
+ return None
+ if response.status_code == 409:
+ return None
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Any]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ destination_id: str,
+ *,
+ client: AuthenticatedClient,
+ body: DestinationRequest,
+ content_type: str,
+
+) -> Response[Any]:
+ r""" This method allows applications to update a destination.
Note: The destination should be created and ready to respond with the
+ expected challengeResponse for the endpoint to be registered successfully. Refer to the Notification API overview for more
+ information.
+
+ Args:
+ destination_id (str):
+ content_type (str):
+ body (DestinationRequest): A type that contains information about the destination request.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ destination_id=destination_id,
+body=body,
+content_type=content_type,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+
+async def asyncio_detailed(
+ destination_id: str,
+ *,
+ client: AuthenticatedClient,
+ body: DestinationRequest,
+ content_type: str,
+
+) -> Response[Any]:
+ r""" This method allows applications to update a destination.
Note: The destination should be created and ready to respond with the
+ expected challengeResponse for the endpoint to be registered successfully. Refer to the Notification API overview for more
+ information.
+
+ Args:
+ destination_id (str):
+ content_type (str):
+ body (DestinationRequest): A type that contains information about the destination request.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ destination_id=destination_id,
+body=body,
+content_type=content_type,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
diff --git a/ebay_client/generated/notification/api/public_key/__init__.py b/ebay_client/generated/notification/api/public_key/__init__.py
new file mode 100644
index 0000000..c9921b5
--- /dev/null
+++ b/ebay_client/generated/notification/api/public_key/__init__.py
@@ -0,0 +1 @@
+""" Contains endpoint functions for accessing the API """
diff --git a/ebay_client/generated/notification/api/public_key/get_public_key.py b/ebay_client/generated/notification/api/public_key/get_public_key.py
new file mode 100644
index 0000000..7114eed
--- /dev/null
+++ b/ebay_client/generated/notification/api/public_key/get_public_key.py
@@ -0,0 +1,229 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.public_key import PublicKey
+from typing import cast
+
+
+
+def _get_kwargs(
+ public_key_id: str,
+
+) -> dict[str, Any]:
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/public_key/{public_key_id}".format(public_key_id=public_key_id,),
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, PublicKey]]:
+ if response.status_code == 200:
+ response_200 = PublicKey.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 404:
+ response_404 = cast(Any, None)
+ return response_404
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, PublicKey]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ public_key_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, PublicKey]]:
+ r""" This method allows users to retrieve a public key using a specified key ID. The public key that is
+ returned in the response payload is used to process and validate eBay notifications.
The
+ public key ID, which is a required request parameter for this method, is retrieved from the
+ Base64-encoded X-EBAY-SIGNATURE header that is included in the eBay notification.
Important! The retrieved public key value should be
+ cached for a temporary — but reasonable — amount of time (e.g., one-hour is recommended.) This key
+ should not be requested for every notification since doing so can result in exceeding API call limits if a large number of
+ notification requests is received.
Note: For more
+ details about how to process eBay push notifications and validate notification message payloads, see
+ the Notification API overview.
+
+ Args:
+ public_key_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, PublicKey]]
+ """
+
+
+ kwargs = _get_kwargs(
+ public_key_id=public_key_id,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ public_key_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, PublicKey]]:
+ r""" This method allows users to retrieve a public key using a specified key ID. The public key that is
+ returned in the response payload is used to process and validate eBay notifications.
The
+ public key ID, which is a required request parameter for this method, is retrieved from the
+ Base64-encoded X-EBAY-SIGNATURE header that is included in the eBay notification.
Important! The retrieved public key value should be
+ cached for a temporary — but reasonable — amount of time (e.g., one-hour is recommended.) This key
+ should not be requested for every notification since doing so can result in exceeding API call limits if a large number of
+ notification requests is received.
Note: For more
+ details about how to process eBay push notifications and validate notification message payloads, see
+ the Notification API overview.
+
+ Args:
+ public_key_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, PublicKey]
+ """
+
+
+ return sync_detailed(
+ public_key_id=public_key_id,
+client=client,
+
+ ).parsed
+
+async def asyncio_detailed(
+ public_key_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, PublicKey]]:
+ r""" This method allows users to retrieve a public key using a specified key ID. The public key that is
+ returned in the response payload is used to process and validate eBay notifications.
The
+ public key ID, which is a required request parameter for this method, is retrieved from the
+ Base64-encoded X-EBAY-SIGNATURE header that is included in the eBay notification.
Important! The retrieved public key value should be
+ cached for a temporary — but reasonable — amount of time (e.g., one-hour is recommended.) This key
+ should not be requested for every notification since doing so can result in exceeding API call limits if a large number of
+ notification requests is received.
Note: For more
+ details about how to process eBay push notifications and validate notification message payloads, see
+ the Notification API overview.
+
+ Args:
+ public_key_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, PublicKey]]
+ """
+
+
+ kwargs = _get_kwargs(
+ public_key_id=public_key_id,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ public_key_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, PublicKey]]:
+ r""" This method allows users to retrieve a public key using a specified key ID. The public key that is
+ returned in the response payload is used to process and validate eBay notifications.
The
+ public key ID, which is a required request parameter for this method, is retrieved from the
+ Base64-encoded X-EBAY-SIGNATURE header that is included in the eBay notification.
Important! The retrieved public key value should be
+ cached for a temporary — but reasonable — amount of time (e.g., one-hour is recommended.) This key
+ should not be requested for every notification since doing so can result in exceeding API call limits if a large number of
+ notification requests is received.
Note: For more
+ details about how to process eBay push notifications and validate notification message payloads, see
+ the Notification API overview.
+
+ Args:
+ public_key_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, PublicKey]
+ """
+
+
+ return (await asyncio_detailed(
+ public_key_id=public_key_id,
+client=client,
+
+ )).parsed
diff --git a/ebay_client/generated/notification/api/subscription/__init__.py b/ebay_client/generated/notification/api/subscription/__init__.py
new file mode 100644
index 0000000..c9921b5
--- /dev/null
+++ b/ebay_client/generated/notification/api/subscription/__init__.py
@@ -0,0 +1 @@
+""" Contains endpoint functions for accessing the API """
diff --git a/ebay_client/generated/notification/api/subscription/create_subscription.py b/ebay_client/generated/notification/api/subscription/create_subscription.py
new file mode 100644
index 0000000..4240df1
--- /dev/null
+++ b/ebay_client/generated/notification/api/subscription/create_subscription.py
@@ -0,0 +1,235 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.create_subscription_request import CreateSubscriptionRequest
+from ...models.create_subscription_response_201 import CreateSubscriptionResponse201
+from typing import cast
+
+
+
+def _get_kwargs(
+ *,
+ body: CreateSubscriptionRequest,
+ content_type: str,
+
+) -> dict[str, Any]:
+ headers: dict[str, Any] = {}
+ headers["Content-Type"] = content_type
+
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "post",
+ "url": "/subscription",
+ }
+
+ _kwargs["json"] = body.to_dict()
+
+
+ headers["Content-Type"] = "application/json"
+
+ _kwargs["headers"] = headers
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, CreateSubscriptionResponse201]]:
+ if response.status_code == 201:
+ response_201 = CreateSubscriptionResponse201.from_dict(response.json())
+
+
+
+ return response_201
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 403:
+ response_403 = cast(Any, None)
+ return response_403
+ if response.status_code == 409:
+ response_409 = cast(Any, None)
+ return response_409
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, CreateSubscriptionResponse201]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ *,
+ client: AuthenticatedClient,
+ body: CreateSubscriptionRequest,
+ content_type: str,
+
+) -> Response[Union[Any, CreateSubscriptionResponse201]]:
+ r""" This method allows applications to create a subscription for a topic and supported schema version.
+ Subscriptions allow applications to express interest in notifications and keep receiving the
+ information relevant to their business.
Each application and topic-schema pairing to a
+ subscription should have a 1:1 cardinality.
You can create the subscription in disabled mode,
+ test it (see the test method), and when everything is ready, you can enable the subscription
+ (see the enableSubscription method).
Note: If an
+ application is not authorized to subscribe to a topic, for example, if your authorization does not
+ include the list of scopes required for the topic, an error code of 195011 is returned.
+
+ Args:
+ content_type (str):
+ body (CreateSubscriptionRequest): This type contains information about a subscription
+ request.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, CreateSubscriptionResponse201]]
+ """
+
+
+ kwargs = _get_kwargs(
+ body=body,
+content_type=content_type,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ *,
+ client: AuthenticatedClient,
+ body: CreateSubscriptionRequest,
+ content_type: str,
+
+) -> Optional[Union[Any, CreateSubscriptionResponse201]]:
+ r""" This method allows applications to create a subscription for a topic and supported schema version.
+ Subscriptions allow applications to express interest in notifications and keep receiving the
+ information relevant to their business.
Each application and topic-schema pairing to a
+ subscription should have a 1:1 cardinality.
You can create the subscription in disabled mode,
+ test it (see the test method), and when everything is ready, you can enable the subscription
+ (see the enableSubscription method).
Note: If an
+ application is not authorized to subscribe to a topic, for example, if your authorization does not
+ include the list of scopes required for the topic, an error code of 195011 is returned.
+
+ Args:
+ content_type (str):
+ body (CreateSubscriptionRequest): This type contains information about a subscription
+ request.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, CreateSubscriptionResponse201]
+ """
+
+
+ return sync_detailed(
+ client=client,
+body=body,
+content_type=content_type,
+
+ ).parsed
+
+async def asyncio_detailed(
+ *,
+ client: AuthenticatedClient,
+ body: CreateSubscriptionRequest,
+ content_type: str,
+
+) -> Response[Union[Any, CreateSubscriptionResponse201]]:
+ r""" This method allows applications to create a subscription for a topic and supported schema version.
+ Subscriptions allow applications to express interest in notifications and keep receiving the
+ information relevant to their business.
Each application and topic-schema pairing to a
+ subscription should have a 1:1 cardinality.
You can create the subscription in disabled mode,
+ test it (see the test method), and when everything is ready, you can enable the subscription
+ (see the enableSubscription method).
Note: If an
+ application is not authorized to subscribe to a topic, for example, if your authorization does not
+ include the list of scopes required for the topic, an error code of 195011 is returned.
+
+ Args:
+ content_type (str):
+ body (CreateSubscriptionRequest): This type contains information about a subscription
+ request.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, CreateSubscriptionResponse201]]
+ """
+
+
+ kwargs = _get_kwargs(
+ body=body,
+content_type=content_type,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ *,
+ client: AuthenticatedClient,
+ body: CreateSubscriptionRequest,
+ content_type: str,
+
+) -> Optional[Union[Any, CreateSubscriptionResponse201]]:
+ r""" This method allows applications to create a subscription for a topic and supported schema version.
+ Subscriptions allow applications to express interest in notifications and keep receiving the
+ information relevant to their business.
Each application and topic-schema pairing to a
+ subscription should have a 1:1 cardinality.
You can create the subscription in disabled mode,
+ test it (see the test method), and when everything is ready, you can enable the subscription
+ (see the enableSubscription method).
Note: If an
+ application is not authorized to subscribe to a topic, for example, if your authorization does not
+ include the list of scopes required for the topic, an error code of 195011 is returned.
+
+ Args:
+ content_type (str):
+ body (CreateSubscriptionRequest): This type contains information about a subscription
+ request.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, CreateSubscriptionResponse201]
+ """
+
+
+ return (await asyncio_detailed(
+ client=client,
+body=body,
+content_type=content_type,
+
+ )).parsed
diff --git a/ebay_client/generated/notification/api/subscription/create_subscription_filter.py b/ebay_client/generated/notification/api/subscription/create_subscription_filter.py
new file mode 100644
index 0000000..4d87668
--- /dev/null
+++ b/ebay_client/generated/notification/api/subscription/create_subscription_filter.py
@@ -0,0 +1,296 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.create_subscription_filter_request import CreateSubscriptionFilterRequest
+from ...models.create_subscription_filter_response_201 import CreateSubscriptionFilterResponse201
+from typing import cast
+
+
+
+def _get_kwargs(
+ subscription_id: str,
+ *,
+ body: CreateSubscriptionFilterRequest,
+ content_type: str,
+
+) -> dict[str, Any]:
+ headers: dict[str, Any] = {}
+ headers["Content-Type"] = content_type
+
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "post",
+ "url": "/subscription/{subscription_id}/filter".format(subscription_id=subscription_id,),
+ }
+
+ _kwargs["json"] = body.to_dict()
+
+
+ headers["Content-Type"] = "application/json"
+
+ _kwargs["headers"] = headers
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, CreateSubscriptionFilterResponse201]]:
+ if response.status_code == 201:
+ response_201 = CreateSubscriptionFilterResponse201.from_dict(response.json())
+
+
+
+ return response_201
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 403:
+ response_403 = cast(Any, None)
+ return response_403
+ if response.status_code == 404:
+ response_404 = cast(Any, None)
+ return response_404
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, CreateSubscriptionFilterResponse201]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ subscription_id: str,
+ *,
+ client: AuthenticatedClient,
+ body: CreateSubscriptionFilterRequest,
+ content_type: str,
+
+) -> Response[Union[Any, CreateSubscriptionFilterResponse201]]:
+ r""" This method allows applications to create a filter for a subscription. Filters allow applications to
+ only be sent notifications that match a provided criteria. Notifications that do not match this
+ criteria will not be sent to the destination.
The filterSchema value must be
+ a valid JSON Schema Core document
+ (version 2020-12 or later). The filterSchema provided must describe the
+ subscription's notification payload such that it supplies valid criteria to filter the
+ subscription's notifications. The user does not need to provide $schema and
+ $id definitions.
When a filter is first created, it is not immediately active on
+ the subscription. If the request has a valid JSON body, the successful call returns the HTTP status
+ code 201 Created. Newly created filters are in PENDING status until they
+ are reviewed. If a filter is valid, it will move from PENDING status to
+ ENABLED status. You can find the status of a filter using the getSubscriptionFilter
+ method. See Creating a subscription filter for a topic for additional
+ information.
Note: Only one filter can be in
+ ENABLED (which means active) status on a subscription at a time. If an
+ ENABLED filter is overwritten by a new call to CREATE a filter for
+ the subscription, it stays in ENABLED status until the new PENDING
+ filter becomes the ENABLED filter, and the existing filter then becomes
+ DISABLED.
+
+ Args:
+ subscription_id (str):
+ content_type (str):
+ body (CreateSubscriptionFilterRequest):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, CreateSubscriptionFilterResponse201]]
+ """
+
+
+ kwargs = _get_kwargs(
+ subscription_id=subscription_id,
+body=body,
+content_type=content_type,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ subscription_id: str,
+ *,
+ client: AuthenticatedClient,
+ body: CreateSubscriptionFilterRequest,
+ content_type: str,
+
+) -> Optional[Union[Any, CreateSubscriptionFilterResponse201]]:
+ r""" This method allows applications to create a filter for a subscription. Filters allow applications to
+ only be sent notifications that match a provided criteria. Notifications that do not match this
+ criteria will not be sent to the destination.
The filterSchema value must be
+ a valid JSON Schema Core document
+ (version 2020-12 or later). The filterSchema provided must describe the
+ subscription's notification payload such that it supplies valid criteria to filter the
+ subscription's notifications. The user does not need to provide $schema and
+ $id definitions.
When a filter is first created, it is not immediately active on
+ the subscription. If the request has a valid JSON body, the successful call returns the HTTP status
+ code 201 Created. Newly created filters are in PENDING status until they
+ are reviewed. If a filter is valid, it will move from PENDING status to
+ ENABLED status. You can find the status of a filter using the getSubscriptionFilter
+ method. See Creating a subscription filter for a topic for additional
+ information.
Note: Only one filter can be in
+ ENABLED (which means active) status on a subscription at a time. If an
+ ENABLED filter is overwritten by a new call to CREATE a filter for
+ the subscription, it stays in ENABLED status until the new PENDING
+ filter becomes the ENABLED filter, and the existing filter then becomes
+ DISABLED.
+
+ Args:
+ subscription_id (str):
+ content_type (str):
+ body (CreateSubscriptionFilterRequest):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, CreateSubscriptionFilterResponse201]
+ """
+
+
+ return sync_detailed(
+ subscription_id=subscription_id,
+client=client,
+body=body,
+content_type=content_type,
+
+ ).parsed
+
+async def asyncio_detailed(
+ subscription_id: str,
+ *,
+ client: AuthenticatedClient,
+ body: CreateSubscriptionFilterRequest,
+ content_type: str,
+
+) -> Response[Union[Any, CreateSubscriptionFilterResponse201]]:
+ r""" This method allows applications to create a filter for a subscription. Filters allow applications to
+ only be sent notifications that match a provided criteria. Notifications that do not match this
+ criteria will not be sent to the destination.
The filterSchema value must be
+ a valid JSON Schema Core document
+ (version 2020-12 or later). The filterSchema provided must describe the
+ subscription's notification payload such that it supplies valid criteria to filter the
+ subscription's notifications. The user does not need to provide $schema and
+ $id definitions.
When a filter is first created, it is not immediately active on
+ the subscription. If the request has a valid JSON body, the successful call returns the HTTP status
+ code 201 Created. Newly created filters are in PENDING status until they
+ are reviewed. If a filter is valid, it will move from PENDING status to
+ ENABLED status. You can find the status of a filter using the getSubscriptionFilter
+ method. See Creating a subscription filter for a topic for additional
+ information.
Note: Only one filter can be in
+ ENABLED (which means active) status on a subscription at a time. If an
+ ENABLED filter is overwritten by a new call to CREATE a filter for
+ the subscription, it stays in ENABLED status until the new PENDING
+ filter becomes the ENABLED filter, and the existing filter then becomes
+ DISABLED.
+
+ Args:
+ subscription_id (str):
+ content_type (str):
+ body (CreateSubscriptionFilterRequest):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, CreateSubscriptionFilterResponse201]]
+ """
+
+
+ kwargs = _get_kwargs(
+ subscription_id=subscription_id,
+body=body,
+content_type=content_type,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ subscription_id: str,
+ *,
+ client: AuthenticatedClient,
+ body: CreateSubscriptionFilterRequest,
+ content_type: str,
+
+) -> Optional[Union[Any, CreateSubscriptionFilterResponse201]]:
+ r""" This method allows applications to create a filter for a subscription. Filters allow applications to
+ only be sent notifications that match a provided criteria. Notifications that do not match this
+ criteria will not be sent to the destination.
The filterSchema value must be
+ a valid JSON Schema Core document
+ (version 2020-12 or later). The filterSchema provided must describe the
+ subscription's notification payload such that it supplies valid criteria to filter the
+ subscription's notifications. The user does not need to provide $schema and
+ $id definitions.
When a filter is first created, it is not immediately active on
+ the subscription. If the request has a valid JSON body, the successful call returns the HTTP status
+ code 201 Created. Newly created filters are in PENDING status until they
+ are reviewed. If a filter is valid, it will move from PENDING status to
+ ENABLED status. You can find the status of a filter using the getSubscriptionFilter
+ method. See Creating a subscription filter for a topic for additional
+ information.
Note: Only one filter can be in
+ ENABLED (which means active) status on a subscription at a time. If an
+ ENABLED filter is overwritten by a new call to CREATE a filter for
+ the subscription, it stays in ENABLED status until the new PENDING
+ filter becomes the ENABLED filter, and the existing filter then becomes
+ DISABLED.
+
+ Args:
+ subscription_id (str):
+ content_type (str):
+ body (CreateSubscriptionFilterRequest):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, CreateSubscriptionFilterResponse201]
+ """
+
+
+ return (await asyncio_detailed(
+ subscription_id=subscription_id,
+client=client,
+body=body,
+content_type=content_type,
+
+ )).parsed
diff --git a/ebay_client/generated/notification/api/subscription/delete_subscription.py b/ebay_client/generated/notification/api/subscription/delete_subscription.py
new file mode 100644
index 0000000..573b033
--- /dev/null
+++ b/ebay_client/generated/notification/api/subscription/delete_subscription.py
@@ -0,0 +1,120 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+
+
+
+def _get_kwargs(
+ subscription_id: str,
+
+) -> dict[str, Any]:
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "delete",
+ "url": "/subscription/{subscription_id}".format(subscription_id=subscription_id,),
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Any]:
+ if response.status_code == 400:
+ return None
+ if response.status_code == 500:
+ return None
+ if response.status_code == 204:
+ return None
+ if response.status_code == 404:
+ return None
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Any]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ subscription_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Any]:
+ """ This method allows applications to delete a subscription. Subscriptions can be deleted regardless of
+ status.
+
+ Args:
+ subscription_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ subscription_id=subscription_id,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+
+async def asyncio_detailed(
+ subscription_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Any]:
+ """ This method allows applications to delete a subscription. Subscriptions can be deleted regardless of
+ status.
+
+ Args:
+ subscription_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ subscription_id=subscription_id,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
diff --git a/ebay_client/generated/notification/api/subscription/delete_subscription_filter.py b/ebay_client/generated/notification/api/subscription/delete_subscription_filter.py
new file mode 100644
index 0000000..31ca112
--- /dev/null
+++ b/ebay_client/generated/notification/api/subscription/delete_subscription_filter.py
@@ -0,0 +1,135 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+
+
+
+def _get_kwargs(
+ subscription_id: str,
+ filter_id: str,
+
+) -> dict[str, Any]:
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "delete",
+ "url": "/subscription/{subscription_id}/filter/{filter_id}".format(subscription_id=subscription_id,filter_id=filter_id,),
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Any]:
+ if response.status_code == 400:
+ return None
+ if response.status_code == 500:
+ return None
+ if response.status_code == 204:
+ return None
+ if response.status_code == 403:
+ return None
+ if response.status_code == 404:
+ return None
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Any]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ subscription_id: str,
+ filter_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Any]:
+ r""" This method allows applications to disable the active filter on a subscription, so that a new
+ subscription filter may be added.
Note: Subscription filters
+ in PENDING status can not be disabled. However, a new filter can be created instead
+ with the createSubscriptionFilter method and this new filter will override the
+ PENDING filter.
+
+ Args:
+ subscription_id (str):
+ filter_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ subscription_id=subscription_id,
+filter_id=filter_id,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+
+async def asyncio_detailed(
+ subscription_id: str,
+ filter_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Any]:
+ r""" This method allows applications to disable the active filter on a subscription, so that a new
+ subscription filter may be added.
Note: Subscription filters
+ in PENDING status can not be disabled. However, a new filter can be created instead
+ with the createSubscriptionFilter method and this new filter will override the
+ PENDING filter.
+
+ Args:
+ subscription_id (str):
+ filter_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ subscription_id=subscription_id,
+filter_id=filter_id,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
diff --git a/ebay_client/generated/notification/api/subscription/disable_subscription.py b/ebay_client/generated/notification/api/subscription/disable_subscription.py
new file mode 100644
index 0000000..41159a0
--- /dev/null
+++ b/ebay_client/generated/notification/api/subscription/disable_subscription.py
@@ -0,0 +1,120 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+
+
+
+def _get_kwargs(
+ subscription_id: str,
+
+) -> dict[str, Any]:
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "post",
+ "url": "/subscription/{subscription_id}/disable".format(subscription_id=subscription_id,),
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Any]:
+ if response.status_code == 400:
+ return None
+ if response.status_code == 500:
+ return None
+ if response.status_code == 204:
+ return None
+ if response.status_code == 404:
+ return None
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Any]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ subscription_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Any]:
+ """ This method disables a subscription, which prevents the subscription from providing notifications.
+ To restart a subscription, call enableSubscription.
+
+ Args:
+ subscription_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ subscription_id=subscription_id,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+
+async def asyncio_detailed(
+ subscription_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Any]:
+ """ This method disables a subscription, which prevents the subscription from providing notifications.
+ To restart a subscription, call enableSubscription.
+
+ Args:
+ subscription_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ subscription_id=subscription_id,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
diff --git a/ebay_client/generated/notification/api/subscription/enable_subscription.py b/ebay_client/generated/notification/api/subscription/enable_subscription.py
new file mode 100644
index 0000000..1625075
--- /dev/null
+++ b/ebay_client/generated/notification/api/subscription/enable_subscription.py
@@ -0,0 +1,122 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+
+
+
+def _get_kwargs(
+ subscription_id: str,
+
+) -> dict[str, Any]:
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "post",
+ "url": "/subscription/{subscription_id}/enable".format(subscription_id=subscription_id,),
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Any]:
+ if response.status_code == 400:
+ return None
+ if response.status_code == 500:
+ return None
+ if response.status_code == 204:
+ return None
+ if response.status_code == 404:
+ return None
+ if response.status_code == 409:
+ return None
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Any]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ subscription_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Any]:
+ """ This method allows applications to enable a disabled subscription. To pause (or disable) an enabled
+ subscription, call disableSubscription.
+
+ Args:
+ subscription_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ subscription_id=subscription_id,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+
+async def asyncio_detailed(
+ subscription_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Any]:
+ """ This method allows applications to enable a disabled subscription. To pause (or disable) an enabled
+ subscription, call disableSubscription.
+
+ Args:
+ subscription_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ subscription_id=subscription_id,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
diff --git a/ebay_client/generated/notification/api/subscription/get_subscription.py b/ebay_client/generated/notification/api/subscription/get_subscription.py
new file mode 100644
index 0000000..1d8ce4e
--- /dev/null
+++ b/ebay_client/generated/notification/api/subscription/get_subscription.py
@@ -0,0 +1,197 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.subscription import Subscription
+from typing import cast
+
+
+
+def _get_kwargs(
+ subscription_id: str,
+
+) -> dict[str, Any]:
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/subscription/{subscription_id}".format(subscription_id=subscription_id,),
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, Subscription]]:
+ if response.status_code == 200:
+ response_200 = Subscription.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 404:
+ response_404 = cast(Any, None)
+ return response_404
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, Subscription]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ subscription_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, Subscription]]:
+ """ This method allows applications to retrieve subscription details for the specified
+ subscription.
Specify the subscription to retrieve using the
+ subscription_id. Use the getSubscriptions method to browse all
+ subscriptions if you do not know the subscription_id.
Subscriptions allow
+ applications to express interest in notifications and keep receiving the information relevant to
+ their business.
+
+ Args:
+ subscription_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, Subscription]]
+ """
+
+
+ kwargs = _get_kwargs(
+ subscription_id=subscription_id,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ subscription_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, Subscription]]:
+ """ This method allows applications to retrieve subscription details for the specified
+ subscription.
Specify the subscription to retrieve using the
+ subscription_id. Use the getSubscriptions method to browse all
+ subscriptions if you do not know the subscription_id.
Subscriptions allow
+ applications to express interest in notifications and keep receiving the information relevant to
+ their business.
+
+ Args:
+ subscription_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, Subscription]
+ """
+
+
+ return sync_detailed(
+ subscription_id=subscription_id,
+client=client,
+
+ ).parsed
+
+async def asyncio_detailed(
+ subscription_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, Subscription]]:
+ """ This method allows applications to retrieve subscription details for the specified
+ subscription.
Specify the subscription to retrieve using the
+ subscription_id. Use the getSubscriptions method to browse all
+ subscriptions if you do not know the subscription_id.
Subscriptions allow
+ applications to express interest in notifications and keep receiving the information relevant to
+ their business.
+
+ Args:
+ subscription_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, Subscription]]
+ """
+
+
+ kwargs = _get_kwargs(
+ subscription_id=subscription_id,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ subscription_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, Subscription]]:
+ """ This method allows applications to retrieve subscription details for the specified
+ subscription.
Specify the subscription to retrieve using the
+ subscription_id. Use the getSubscriptions method to browse all
+ subscriptions if you do not know the subscription_id.
Subscriptions allow
+ applications to express interest in notifications and keep receiving the information relevant to
+ their business.
+
+ Args:
+ subscription_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, Subscription]
+ """
+
+
+ return (await asyncio_detailed(
+ subscription_id=subscription_id,
+client=client,
+
+ )).parsed
diff --git a/ebay_client/generated/notification/api/subscription/get_subscription_filter.py b/ebay_client/generated/notification/api/subscription/get_subscription_filter.py
new file mode 100644
index 0000000..92c1665
--- /dev/null
+++ b/ebay_client/generated/notification/api/subscription/get_subscription_filter.py
@@ -0,0 +1,217 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.subscription_filter import SubscriptionFilter
+from typing import cast
+
+
+
+def _get_kwargs(
+ subscription_id: str,
+ filter_id: str,
+
+) -> dict[str, Any]:
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/subscription/{subscription_id}/filter/{filter_id}".format(subscription_id=subscription_id,filter_id=filter_id,),
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, SubscriptionFilter]]:
+ if response.status_code == 200:
+ response_200 = SubscriptionFilter.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 403:
+ response_403 = cast(Any, None)
+ return response_403
+ if response.status_code == 404:
+ response_404 = cast(Any, None)
+ return response_404
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, SubscriptionFilter]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ subscription_id: str,
+ filter_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, SubscriptionFilter]]:
+ """ This method allows applications to retrieve the filter details for the specified subscription
+ filter.
Specify the subscription filter to retrieve by using the
+ subscription_id and the filter_id associated with the subscription
+ filter. The filter_id can be found in the response body for the
+ getSubscription method, if there is a filter applied on the
+ subscription.
Filters allow applications to only be sent notifications that match a provided
+ criteria. Notifications that do not match this criteria will not be sent to the destination.
+
+ Args:
+ subscription_id (str):
+ filter_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, SubscriptionFilter]]
+ """
+
+
+ kwargs = _get_kwargs(
+ subscription_id=subscription_id,
+filter_id=filter_id,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ subscription_id: str,
+ filter_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, SubscriptionFilter]]:
+ """ This method allows applications to retrieve the filter details for the specified subscription
+ filter.
Specify the subscription filter to retrieve by using the
+ subscription_id and the filter_id associated with the subscription
+ filter. The filter_id can be found in the response body for the
+ getSubscription method, if there is a filter applied on the
+ subscription.
Filters allow applications to only be sent notifications that match a provided
+ criteria. Notifications that do not match this criteria will not be sent to the destination.
+
+ Args:
+ subscription_id (str):
+ filter_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, SubscriptionFilter]
+ """
+
+
+ return sync_detailed(
+ subscription_id=subscription_id,
+filter_id=filter_id,
+client=client,
+
+ ).parsed
+
+async def asyncio_detailed(
+ subscription_id: str,
+ filter_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, SubscriptionFilter]]:
+ """ This method allows applications to retrieve the filter details for the specified subscription
+ filter.
Specify the subscription filter to retrieve by using the
+ subscription_id and the filter_id associated with the subscription
+ filter. The filter_id can be found in the response body for the
+ getSubscription method, if there is a filter applied on the
+ subscription.
Filters allow applications to only be sent notifications that match a provided
+ criteria. Notifications that do not match this criteria will not be sent to the destination.
+
+ Args:
+ subscription_id (str):
+ filter_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, SubscriptionFilter]]
+ """
+
+
+ kwargs = _get_kwargs(
+ subscription_id=subscription_id,
+filter_id=filter_id,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ subscription_id: str,
+ filter_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, SubscriptionFilter]]:
+ """ This method allows applications to retrieve the filter details for the specified subscription
+ filter.
Specify the subscription filter to retrieve by using the
+ subscription_id and the filter_id associated with the subscription
+ filter. The filter_id can be found in the response body for the
+ getSubscription method, if there is a filter applied on the
+ subscription.
Filters allow applications to only be sent notifications that match a provided
+ criteria. Notifications that do not match this criteria will not be sent to the destination.
+
+ Args:
+ subscription_id (str):
+ filter_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, SubscriptionFilter]
+ """
+
+
+ return (await asyncio_detailed(
+ subscription_id=subscription_id,
+filter_id=filter_id,
+client=client,
+
+ )).parsed
diff --git a/ebay_client/generated/notification/api/subscription/get_subscriptions.py b/ebay_client/generated/notification/api/subscription/get_subscriptions.py
new file mode 100644
index 0000000..e6b6178
--- /dev/null
+++ b/ebay_client/generated/notification/api/subscription/get_subscriptions.py
@@ -0,0 +1,207 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.subscription_search_response import SubscriptionSearchResponse
+from ...types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+
+
+def _get_kwargs(
+ *,
+ continuation_token: Union[Unset, str] = UNSET,
+ limit: Union[Unset, str] = UNSET,
+
+) -> dict[str, Any]:
+
+
+
+
+ params: dict[str, Any] = {}
+
+ params["continuation_token"] = continuation_token
+
+ params["limit"] = limit
+
+
+ params = {k: v for k, v in params.items() if v is not UNSET and v is not None}
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/subscription",
+ "params": params,
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, SubscriptionSearchResponse]]:
+ if response.status_code == 200:
+ response_200 = SubscriptionSearchResponse.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, SubscriptionSearchResponse]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ *,
+ client: AuthenticatedClient,
+ continuation_token: Union[Unset, str] = UNSET,
+ limit: Union[Unset, str] = UNSET,
+
+) -> Response[Union[Any, SubscriptionSearchResponse]]:
+ """ This method allows applications to retrieve a list of all subscriptions. The list returned is a
+ paginated collection of subscription resources.
Subscriptions allow applications to express
+ interest in notifications and keep receiving the information relevant to their business.
+
+ Args:
+ continuation_token (Union[Unset, str]):
+ limit (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, SubscriptionSearchResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ continuation_token=continuation_token,
+limit=limit,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ *,
+ client: AuthenticatedClient,
+ continuation_token: Union[Unset, str] = UNSET,
+ limit: Union[Unset, str] = UNSET,
+
+) -> Optional[Union[Any, SubscriptionSearchResponse]]:
+ """ This method allows applications to retrieve a list of all subscriptions. The list returned is a
+ paginated collection of subscription resources.
Subscriptions allow applications to express
+ interest in notifications and keep receiving the information relevant to their business.
+
+ Args:
+ continuation_token (Union[Unset, str]):
+ limit (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, SubscriptionSearchResponse]
+ """
+
+
+ return sync_detailed(
+ client=client,
+continuation_token=continuation_token,
+limit=limit,
+
+ ).parsed
+
+async def asyncio_detailed(
+ *,
+ client: AuthenticatedClient,
+ continuation_token: Union[Unset, str] = UNSET,
+ limit: Union[Unset, str] = UNSET,
+
+) -> Response[Union[Any, SubscriptionSearchResponse]]:
+ """ This method allows applications to retrieve a list of all subscriptions. The list returned is a
+ paginated collection of subscription resources.
Subscriptions allow applications to express
+ interest in notifications and keep receiving the information relevant to their business.
+
+ Args:
+ continuation_token (Union[Unset, str]):
+ limit (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, SubscriptionSearchResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ continuation_token=continuation_token,
+limit=limit,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ *,
+ client: AuthenticatedClient,
+ continuation_token: Union[Unset, str] = UNSET,
+ limit: Union[Unset, str] = UNSET,
+
+) -> Optional[Union[Any, SubscriptionSearchResponse]]:
+ """ This method allows applications to retrieve a list of all subscriptions. The list returned is a
+ paginated collection of subscription resources.
Subscriptions allow applications to express
+ interest in notifications and keep receiving the information relevant to their business.
+
+ Args:
+ continuation_token (Union[Unset, str]):
+ limit (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, SubscriptionSearchResponse]
+ """
+
+
+ return (await asyncio_detailed(
+ client=client,
+continuation_token=continuation_token,
+limit=limit,
+
+ )).parsed
diff --git a/ebay_client/generated/notification/api/subscription/test_subscription.py b/ebay_client/generated/notification/api/subscription/test_subscription.py
new file mode 100644
index 0000000..93e4d7e
--- /dev/null
+++ b/ebay_client/generated/notification/api/subscription/test_subscription.py
@@ -0,0 +1,128 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+
+
+
+def _get_kwargs(
+ subscription_id: str,
+
+) -> dict[str, Any]:
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "post",
+ "url": "/subscription/{subscription_id}/test".format(subscription_id=subscription_id,),
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Any]:
+ if response.status_code == 202:
+ return None
+ if response.status_code == 400:
+ return None
+ if response.status_code == 500:
+ return None
+ if response.status_code == 404:
+ return None
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Any]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ subscription_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Any]:
+ r""" This method triggers a mocked test payload that includes a notification ID, publish date, and so on.
+ Use this method to test your subscription end-to-end.
You can create the subscription in
+ disabled mode, test it using this method, and when everything is ready, you can enable the
+ subscription (see the enableSubscription method).
Note: Use the notificationId to tell the difference
+ between a test payload and a real payload.
+
+ Args:
+ subscription_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ subscription_id=subscription_id,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+
+async def asyncio_detailed(
+ subscription_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Any]:
+ r""" This method triggers a mocked test payload that includes a notification ID, publish date, and so on.
+ Use this method to test your subscription end-to-end.
You can create the subscription in
+ disabled mode, test it using this method, and when everything is ready, you can enable the
+ subscription (see the enableSubscription method).
Note: Use the notificationId to tell the difference
+ between a test payload and a real payload.
+
+ Args:
+ subscription_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ subscription_id=subscription_id,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
diff --git a/ebay_client/generated/notification/api/subscription/update_subscription.py b/ebay_client/generated/notification/api/subscription/update_subscription.py
new file mode 100644
index 0000000..c914aa4
--- /dev/null
+++ b/ebay_client/generated/notification/api/subscription/update_subscription.py
@@ -0,0 +1,155 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.update_subscription_request import UpdateSubscriptionRequest
+from typing import cast
+
+
+
+def _get_kwargs(
+ subscription_id: str,
+ *,
+ body: UpdateSubscriptionRequest,
+ content_type: str,
+
+) -> dict[str, Any]:
+ headers: dict[str, Any] = {}
+ headers["Content-Type"] = content_type
+
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "put",
+ "url": "/subscription/{subscription_id}".format(subscription_id=subscription_id,),
+ }
+
+ _kwargs["json"] = body.to_dict()
+
+
+ headers["Content-Type"] = "application/json"
+
+ _kwargs["headers"] = headers
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Any]:
+ if response.status_code == 400:
+ return None
+ if response.status_code == 500:
+ return None
+ if response.status_code == 204:
+ return None
+ if response.status_code == 404:
+ return None
+ if response.status_code == 409:
+ return None
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Any]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ subscription_id: str,
+ *,
+ client: AuthenticatedClient,
+ body: UpdateSubscriptionRequest,
+ content_type: str,
+
+) -> Response[Any]:
+ r""" This method allows applications to update a subscription. Subscriptions allow applications to
+ express interest in notifications and keep receiving the information relevant to their
+ business.
Note: This call returns an error if an application
+ is not authorized to subscribe to a topic.
You can pause and restart a subscription.
+ See the disableSubscription and enableSubscription methods.
+
+ Args:
+ subscription_id (str):
+ content_type (str):
+ body (UpdateSubscriptionRequest): A type that describes the details of the update
+ subscription request.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ subscription_id=subscription_id,
+body=body,
+content_type=content_type,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+
+async def asyncio_detailed(
+ subscription_id: str,
+ *,
+ client: AuthenticatedClient,
+ body: UpdateSubscriptionRequest,
+ content_type: str,
+
+) -> Response[Any]:
+ r""" This method allows applications to update a subscription. Subscriptions allow applications to
+ express interest in notifications and keep receiving the information relevant to their
+ business.
Note: This call returns an error if an application
+ is not authorized to subscribe to a topic.
You can pause and restart a subscription.
+ See the disableSubscription and enableSubscription methods.
+
+ Args:
+ subscription_id (str):
+ content_type (str):
+ body (UpdateSubscriptionRequest): A type that describes the details of the update
+ subscription request.
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Any]
+ """
+
+
+ kwargs = _get_kwargs(
+ subscription_id=subscription_id,
+body=body,
+content_type=content_type,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
diff --git a/ebay_client/generated/notification/api/topic/__init__.py b/ebay_client/generated/notification/api/topic/__init__.py
new file mode 100644
index 0000000..c9921b5
--- /dev/null
+++ b/ebay_client/generated/notification/api/topic/__init__.py
@@ -0,0 +1 @@
+""" Contains endpoint functions for accessing the API """
diff --git a/ebay_client/generated/notification/api/topic/get_topic.py b/ebay_client/generated/notification/api/topic/get_topic.py
new file mode 100644
index 0000000..8ac5996
--- /dev/null
+++ b/ebay_client/generated/notification/api/topic/get_topic.py
@@ -0,0 +1,213 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.topic import Topic
+from typing import cast
+
+
+
+def _get_kwargs(
+ topic_id: str,
+
+) -> dict[str, Any]:
+
+
+
+
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/topic/{topic_id}".format(topic_id=topic_id,),
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, Topic]]:
+ if response.status_code == 200:
+ response_200 = Topic.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if response.status_code == 404:
+ response_404 = cast(Any, None)
+ return response_404
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, Topic]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ topic_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, Topic]]:
+ r""" This method allows applications to retrieve details for the specified topic. This information
+ includes supported schema versions, formats, and other metadata for the topic.
Applications
+ can subscribe to any of the topics for a supported schema version and format, limited by the
+ authorization scopes required to subscribe to the topic.
A topic specifies the type of
+ information to be received and the data types associated with an event. An event occurs in the eBay
+ system, such as when a user requests deletion or revokes access for an application. An event is an
+ instance of an event type (topic).
Specify the topic to retrieve using the topic_id
+ URI parameter.
Note: Use the getTopics method to find a topic
+ if you do not know the topic ID.
+
+ Args:
+ topic_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, Topic]]
+ """
+
+
+ kwargs = _get_kwargs(
+ topic_id=topic_id,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ topic_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, Topic]]:
+ r""" This method allows applications to retrieve details for the specified topic. This information
+ includes supported schema versions, formats, and other metadata for the topic.
Applications
+ can subscribe to any of the topics for a supported schema version and format, limited by the
+ authorization scopes required to subscribe to the topic.
A topic specifies the type of
+ information to be received and the data types associated with an event. An event occurs in the eBay
+ system, such as when a user requests deletion or revokes access for an application. An event is an
+ instance of an event type (topic).
Specify the topic to retrieve using the topic_id
+ URI parameter.
Note: Use the getTopics method to find a topic
+ if you do not know the topic ID.
+
+ Args:
+ topic_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, Topic]
+ """
+
+
+ return sync_detailed(
+ topic_id=topic_id,
+client=client,
+
+ ).parsed
+
+async def asyncio_detailed(
+ topic_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Response[Union[Any, Topic]]:
+ r""" This method allows applications to retrieve details for the specified topic. This information
+ includes supported schema versions, formats, and other metadata for the topic.
Applications
+ can subscribe to any of the topics for a supported schema version and format, limited by the
+ authorization scopes required to subscribe to the topic.
A topic specifies the type of
+ information to be received and the data types associated with an event. An event occurs in the eBay
+ system, such as when a user requests deletion or revokes access for an application. An event is an
+ instance of an event type (topic).
Specify the topic to retrieve using the topic_id
+ URI parameter.
Note: Use the getTopics method to find a topic
+ if you do not know the topic ID.
+
+ Args:
+ topic_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, Topic]]
+ """
+
+
+ kwargs = _get_kwargs(
+ topic_id=topic_id,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ topic_id: str,
+ *,
+ client: AuthenticatedClient,
+
+) -> Optional[Union[Any, Topic]]:
+ r""" This method allows applications to retrieve details for the specified topic. This information
+ includes supported schema versions, formats, and other metadata for the topic.
Applications
+ can subscribe to any of the topics for a supported schema version and format, limited by the
+ authorization scopes required to subscribe to the topic.
A topic specifies the type of
+ information to be received and the data types associated with an event. An event occurs in the eBay
+ system, such as when a user requests deletion or revokes access for an application. An event is an
+ instance of an event type (topic).
Specify the topic to retrieve using the topic_id
+ URI parameter.
Note: Use the getTopics method to find a topic
+ if you do not know the topic ID.
+
+ Args:
+ topic_id (str):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, Topic]
+ """
+
+
+ return (await asyncio_detailed(
+ topic_id=topic_id,
+client=client,
+
+ )).parsed
diff --git a/ebay_client/generated/notification/api/topic/get_topics.py b/ebay_client/generated/notification/api/topic/get_topics.py
new file mode 100644
index 0000000..0af1f37
--- /dev/null
+++ b/ebay_client/generated/notification/api/topic/get_topics.py
@@ -0,0 +1,223 @@
+from http import HTTPStatus
+from typing import Any, Optional, Union, cast
+
+import httpx
+
+from ...client import AuthenticatedClient, Client
+from ...types import Response, UNSET
+from ... import errors
+
+from ...models.topic_search_response import TopicSearchResponse
+from ...types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+
+
+def _get_kwargs(
+ *,
+ continuation_token: Union[Unset, str] = UNSET,
+ limit: Union[Unset, str] = UNSET,
+
+) -> dict[str, Any]:
+
+
+
+
+ params: dict[str, Any] = {}
+
+ params["continuation_token"] = continuation_token
+
+ params["limit"] = limit
+
+
+ params = {k: v for k, v in params.items() if v is not UNSET and v is not None}
+
+
+ _kwargs: dict[str, Any] = {
+ "method": "get",
+ "url": "/topic",
+ "params": params,
+ }
+
+
+ return _kwargs
+
+
+def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Union[Any, TopicSearchResponse]]:
+ if response.status_code == 200:
+ response_200 = TopicSearchResponse.from_dict(response.json())
+
+
+
+ return response_200
+ if response.status_code == 400:
+ response_400 = cast(Any, None)
+ return response_400
+ if response.status_code == 500:
+ response_500 = cast(Any, None)
+ return response_500
+ if client.raise_on_unexpected_status:
+ raise errors.UnexpectedStatus(response.status_code, response.content)
+ else:
+ return None
+
+
+def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Union[Any, TopicSearchResponse]]:
+ return Response(
+ status_code=HTTPStatus(response.status_code),
+ content=response.content,
+ headers=response.headers,
+ parsed=_parse_response(client=client, response=response),
+ )
+
+
+def sync_detailed(
+ *,
+ client: AuthenticatedClient,
+ continuation_token: Union[Unset, str] = UNSET,
+ limit: Union[Unset, str] = UNSET,
+
+) -> Response[Union[Any, TopicSearchResponse]]:
+ """ This method returns a paginated collection of all supported topics, along with the details for the
+ topics. This information includes supported schema versions, formats, and other metadata for the
+ topics.
Applications can subscribe to any of the topics for a supported schema version and
+ format, limited by the authorization scopes required to subscribe to the topic.
A topic
+ specifies the type of information to be received and the data types associated with an event. An
+ event occurs in the eBay system, such as when a user requests deletion or revokes access for an
+ application. An event is an instance of an event type (topic).
+
+ Args:
+ continuation_token (Union[Unset, str]):
+ limit (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, TopicSearchResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ continuation_token=continuation_token,
+limit=limit,
+
+ )
+
+ response = client.get_httpx_client().request(
+ **kwargs,
+ )
+
+ return _build_response(client=client, response=response)
+
+def sync(
+ *,
+ client: AuthenticatedClient,
+ continuation_token: Union[Unset, str] = UNSET,
+ limit: Union[Unset, str] = UNSET,
+
+) -> Optional[Union[Any, TopicSearchResponse]]:
+ """ This method returns a paginated collection of all supported topics, along with the details for the
+ topics. This information includes supported schema versions, formats, and other metadata for the
+ topics.
Applications can subscribe to any of the topics for a supported schema version and
+ format, limited by the authorization scopes required to subscribe to the topic.
A topic
+ specifies the type of information to be received and the data types associated with an event. An
+ event occurs in the eBay system, such as when a user requests deletion or revokes access for an
+ application. An event is an instance of an event type (topic).
+
+ Args:
+ continuation_token (Union[Unset, str]):
+ limit (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, TopicSearchResponse]
+ """
+
+
+ return sync_detailed(
+ client=client,
+continuation_token=continuation_token,
+limit=limit,
+
+ ).parsed
+
+async def asyncio_detailed(
+ *,
+ client: AuthenticatedClient,
+ continuation_token: Union[Unset, str] = UNSET,
+ limit: Union[Unset, str] = UNSET,
+
+) -> Response[Union[Any, TopicSearchResponse]]:
+ """ This method returns a paginated collection of all supported topics, along with the details for the
+ topics. This information includes supported schema versions, formats, and other metadata for the
+ topics.
Applications can subscribe to any of the topics for a supported schema version and
+ format, limited by the authorization scopes required to subscribe to the topic.
A topic
+ specifies the type of information to be received and the data types associated with an event. An
+ event occurs in the eBay system, such as when a user requests deletion or revokes access for an
+ application. An event is an instance of an event type (topic).
+
+ Args:
+ continuation_token (Union[Unset, str]):
+ limit (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Response[Union[Any, TopicSearchResponse]]
+ """
+
+
+ kwargs = _get_kwargs(
+ continuation_token=continuation_token,
+limit=limit,
+
+ )
+
+ response = await client.get_async_httpx_client().request(
+ **kwargs
+ )
+
+ return _build_response(client=client, response=response)
+
+async def asyncio(
+ *,
+ client: AuthenticatedClient,
+ continuation_token: Union[Unset, str] = UNSET,
+ limit: Union[Unset, str] = UNSET,
+
+) -> Optional[Union[Any, TopicSearchResponse]]:
+ """ This method returns a paginated collection of all supported topics, along with the details for the
+ topics. This information includes supported schema versions, formats, and other metadata for the
+ topics.
Applications can subscribe to any of the topics for a supported schema version and
+ format, limited by the authorization scopes required to subscribe to the topic.
A topic
+ specifies the type of information to be received and the data types associated with an event. An
+ event occurs in the eBay system, such as when a user requests deletion or revokes access for an
+ application. An event is an instance of an event type (topic).
+
+ Args:
+ continuation_token (Union[Unset, str]):
+ limit (Union[Unset, str]):
+
+ Raises:
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
+
+ Returns:
+ Union[Any, TopicSearchResponse]
+ """
+
+
+ return (await asyncio_detailed(
+ client=client,
+continuation_token=continuation_token,
+limit=limit,
+
+ )).parsed
diff --git a/ebay_client/generated/notification/client.py b/ebay_client/generated/notification/client.py
new file mode 100644
index 0000000..998cf0b
--- /dev/null
+++ b/ebay_client/generated/notification/client.py
@@ -0,0 +1,271 @@
+import ssl
+from typing import Any, Union, Optional
+
+from attrs import define, field, evolve
+import httpx
+
+
+
+
+
+@define
+class Client:
+ """A class for keeping track of data related to the API
+
+ The following are accepted as keyword arguments and will be used to construct httpx Clients internally:
+
+ ``base_url``: The base URL for the API, all requests are made to a relative path to this URL
+
+ ``cookies``: A dictionary of cookies to be sent with every request
+
+ ``headers``: A dictionary of headers to be sent with every request
+
+ ``timeout``: The maximum amount of a time a request can take. API functions will raise
+ httpx.TimeoutException if this is exceeded.
+
+ ``verify_ssl``: Whether or not to verify the SSL certificate of the API server. This should be True in production,
+ but can be set to False for testing purposes.
+
+ ``follow_redirects``: Whether or not to follow redirects. Default value is False.
+
+ ``httpx_args``: A dictionary of additional arguments to be passed to the ``httpx.Client`` and ``httpx.AsyncClient`` constructor.
+
+
+ Attributes:
+ raise_on_unexpected_status: Whether or not to raise an errors.UnexpectedStatus if the API returns a
+ status code that was not documented in the source OpenAPI document. Can also be provided as a keyword
+ argument to the constructor.
+ """
+ raise_on_unexpected_status: bool = field(default=False, kw_only=True)
+ _base_url: str = field(alias="base_url")
+ _cookies: dict[str, str] = field(factory=dict, kw_only=True, alias="cookies")
+ _headers: dict[str, str] = field(factory=dict, kw_only=True, alias="headers")
+ _timeout: Optional[httpx.Timeout] = field(default=None, kw_only=True, alias="timeout")
+ _verify_ssl: Union[str, bool, ssl.SSLContext] = field(default=True, kw_only=True, alias="verify_ssl")
+ _follow_redirects: bool = field(default=False, kw_only=True, alias="follow_redirects")
+ _httpx_args: dict[str, Any] = field(factory=dict, kw_only=True, alias="httpx_args")
+ _client: Optional[httpx.Client] = field(default=None, init=False)
+ _async_client: Optional[httpx.AsyncClient] = field(default=None, init=False)
+
+ def with_headers(self, headers: dict[str, str]) -> "Client":
+ """Get a new client matching this one with additional headers"""
+ if self._client is not None:
+ self._client.headers.update(headers)
+ if self._async_client is not None:
+ self._async_client.headers.update(headers)
+ return evolve(self, headers={**self._headers, **headers})
+
+ def with_cookies(self, cookies: dict[str, str]) -> "Client":
+ """Get a new client matching this one with additional cookies"""
+ if self._client is not None:
+ self._client.cookies.update(cookies)
+ if self._async_client is not None:
+ self._async_client.cookies.update(cookies)
+ return evolve(self, cookies={**self._cookies, **cookies})
+
+ def with_timeout(self, timeout: httpx.Timeout) -> "Client":
+ """Get a new client matching this one with a new timeout (in seconds)"""
+ if self._client is not None:
+ self._client.timeout = timeout
+ if self._async_client is not None:
+ self._async_client.timeout = timeout
+ return evolve(self, timeout=timeout)
+
+ def set_httpx_client(self, client: httpx.Client) -> "Client":
+ """Manually set the underlying httpx.Client
+
+ **NOTE**: This will override any other settings on the client, including cookies, headers, and timeout.
+ """
+ self._client = client
+ return self
+
+ def get_httpx_client(self) -> httpx.Client:
+ """Get the underlying httpx.Client, constructing a new one if not previously set"""
+ if self._client is None:
+ self._client = httpx.Client(
+ base_url=self._base_url,
+ cookies=self._cookies,
+ headers=self._headers,
+ timeout=self._timeout,
+ verify=self._verify_ssl,
+ follow_redirects=self._follow_redirects,
+ **self._httpx_args,
+ )
+ return self._client
+
+ def __enter__(self) -> "Client":
+ """Enter a context manager for self.client—you cannot enter twice (see httpx docs)"""
+ self.get_httpx_client().__enter__()
+ return self
+
+ def __exit__(self, *args: Any, **kwargs: Any) -> None:
+ """Exit a context manager for internal httpx.Client (see httpx docs)"""
+ self.get_httpx_client().__exit__(*args, **kwargs)
+
+ def set_async_httpx_client(self, async_client: httpx.AsyncClient) -> "Client":
+ """Manually the underlying httpx.AsyncClient
+
+ **NOTE**: This will override any other settings on the client, including cookies, headers, and timeout.
+ """
+ self._async_client = async_client
+ return self
+
+ def get_async_httpx_client(self) -> httpx.AsyncClient:
+ """Get the underlying httpx.AsyncClient, constructing a new one if not previously set"""
+ if self._async_client is None:
+ self._async_client = httpx.AsyncClient(
+ base_url=self._base_url,
+ cookies=self._cookies,
+ headers=self._headers,
+ timeout=self._timeout,
+ verify=self._verify_ssl,
+ follow_redirects=self._follow_redirects,
+ **self._httpx_args,
+ )
+ return self._async_client
+
+ async def __aenter__(self) -> "Client":
+ """Enter a context manager for underlying httpx.AsyncClient—you cannot enter twice (see httpx docs)"""
+ await self.get_async_httpx_client().__aenter__()
+ return self
+
+ async def __aexit__(self, *args: Any, **kwargs: Any) -> None:
+ """Exit a context manager for underlying httpx.AsyncClient (see httpx docs)"""
+ await self.get_async_httpx_client().__aexit__(*args, **kwargs)
+
+
+@define
+class AuthenticatedClient:
+ """A Client which has been authenticated for use on secured endpoints
+
+ The following are accepted as keyword arguments and will be used to construct httpx Clients internally:
+
+ ``base_url``: The base URL for the API, all requests are made to a relative path to this URL
+
+ ``cookies``: A dictionary of cookies to be sent with every request
+
+ ``headers``: A dictionary of headers to be sent with every request
+
+ ``timeout``: The maximum amount of a time a request can take. API functions will raise
+ httpx.TimeoutException if this is exceeded.
+
+ ``verify_ssl``: Whether or not to verify the SSL certificate of the API server. This should be True in production,
+ but can be set to False for testing purposes.
+
+ ``follow_redirects``: Whether or not to follow redirects. Default value is False.
+
+ ``httpx_args``: A dictionary of additional arguments to be passed to the ``httpx.Client`` and ``httpx.AsyncClient`` constructor.
+
+
+ Attributes:
+ raise_on_unexpected_status: Whether or not to raise an errors.UnexpectedStatus if the API returns a
+ status code that was not documented in the source OpenAPI document. Can also be provided as a keyword
+ argument to the constructor.
+ token: The token to use for authentication
+ prefix: The prefix to use for the Authorization header
+ auth_header_name: The name of the Authorization header
+ """
+
+ raise_on_unexpected_status: bool = field(default=False, kw_only=True)
+ _base_url: str = field(alias="base_url")
+ _cookies: dict[str, str] = field(factory=dict, kw_only=True, alias="cookies")
+ _headers: dict[str, str] = field(factory=dict, kw_only=True, alias="headers")
+ _timeout: Optional[httpx.Timeout] = field(default=None, kw_only=True, alias="timeout")
+ _verify_ssl: Union[str, bool, ssl.SSLContext] = field(default=True, kw_only=True, alias="verify_ssl")
+ _follow_redirects: bool = field(default=False, kw_only=True, alias="follow_redirects")
+ _httpx_args: dict[str, Any] = field(factory=dict, kw_only=True, alias="httpx_args")
+ _client: Optional[httpx.Client] = field(default=None, init=False)
+ _async_client: Optional[httpx.AsyncClient] = field(default=None, init=False)
+
+ token: str
+ prefix: str = "Bearer"
+ auth_header_name: str = "Authorization"
+
+ def with_headers(self, headers: dict[str, str]) -> "AuthenticatedClient":
+ """Get a new client matching this one with additional headers"""
+ if self._client is not None:
+ self._client.headers.update(headers)
+ if self._async_client is not None:
+ self._async_client.headers.update(headers)
+ return evolve(self, headers={**self._headers, **headers})
+
+ def with_cookies(self, cookies: dict[str, str]) -> "AuthenticatedClient":
+ """Get a new client matching this one with additional cookies"""
+ if self._client is not None:
+ self._client.cookies.update(cookies)
+ if self._async_client is not None:
+ self._async_client.cookies.update(cookies)
+ return evolve(self, cookies={**self._cookies, **cookies})
+
+ def with_timeout(self, timeout: httpx.Timeout) -> "AuthenticatedClient":
+ """Get a new client matching this one with a new timeout (in seconds)"""
+ if self._client is not None:
+ self._client.timeout = timeout
+ if self._async_client is not None:
+ self._async_client.timeout = timeout
+ return evolve(self, timeout=timeout)
+
+ def set_httpx_client(self, client: httpx.Client) -> "AuthenticatedClient":
+ """Manually set the underlying httpx.Client
+
+ **NOTE**: This will override any other settings on the client, including cookies, headers, and timeout.
+ """
+ self._client = client
+ return self
+
+ def get_httpx_client(self) -> httpx.Client:
+ """Get the underlying httpx.Client, constructing a new one if not previously set"""
+ if self._client is None:
+ self._headers[self.auth_header_name] = f"{self.prefix} {self.token}" if self.prefix else self.token
+ self._client = httpx.Client(
+ base_url=self._base_url,
+ cookies=self._cookies,
+ headers=self._headers,
+ timeout=self._timeout,
+ verify=self._verify_ssl,
+ follow_redirects=self._follow_redirects,
+ **self._httpx_args,
+ )
+ return self._client
+
+ def __enter__(self) -> "AuthenticatedClient":
+ """Enter a context manager for self.client—you cannot enter twice (see httpx docs)"""
+ self.get_httpx_client().__enter__()
+ return self
+
+ def __exit__(self, *args: Any, **kwargs: Any) -> None:
+ """Exit a context manager for internal httpx.Client (see httpx docs)"""
+ self.get_httpx_client().__exit__(*args, **kwargs)
+
+ def set_async_httpx_client(self, async_client: httpx.AsyncClient) -> "AuthenticatedClient":
+ """Manually the underlying httpx.AsyncClient
+
+ **NOTE**: This will override any other settings on the client, including cookies, headers, and timeout.
+ """
+ self._async_client = async_client
+ return self
+
+ def get_async_httpx_client(self) -> httpx.AsyncClient:
+ """Get the underlying httpx.AsyncClient, constructing a new one if not previously set"""
+ if self._async_client is None:
+ self._headers[self.auth_header_name] = f"{self.prefix} {self.token}" if self.prefix else self.token
+ self._async_client = httpx.AsyncClient(
+ base_url=self._base_url,
+ cookies=self._cookies,
+ headers=self._headers,
+ timeout=self._timeout,
+ verify=self._verify_ssl,
+ follow_redirects=self._follow_redirects,
+ **self._httpx_args,
+ )
+ return self._async_client
+
+ async def __aenter__(self) -> "AuthenticatedClient":
+ """Enter a context manager for underlying httpx.AsyncClient—you cannot enter twice (see httpx docs)"""
+ await self.get_async_httpx_client().__aenter__()
+ return self
+
+ async def __aexit__(self, *args: Any, **kwargs: Any) -> None:
+ """Exit a context manager for underlying httpx.AsyncClient (see httpx docs)"""
+ await self.get_async_httpx_client().__aexit__(*args, **kwargs)
+
diff --git a/ebay_client/generated/notification/errors.py b/ebay_client/generated/notification/errors.py
new file mode 100644
index 0000000..b912123
--- /dev/null
+++ b/ebay_client/generated/notification/errors.py
@@ -0,0 +1,14 @@
+""" Contains shared errors types that can be raised from API functions """
+
+class UnexpectedStatus(Exception):
+ """Raised by api functions when the response status an undocumented status and Client.raise_on_unexpected_status is True"""
+
+ def __init__(self, status_code: int, content: bytes):
+ self.status_code = status_code
+ self.content = content
+
+ super().__init__(
+ f"Unexpected status code: {status_code}\n\nResponse content:\n{content.decode(errors='ignore')}"
+ )
+
+__all__ = ["UnexpectedStatus"]
diff --git a/ebay_client/generated/notification/models/__init__.py b/ebay_client/generated/notification/models/__init__.py
new file mode 100644
index 0000000..13999c7
--- /dev/null
+++ b/ebay_client/generated/notification/models/__init__.py
@@ -0,0 +1,55 @@
+""" Contains all the data models used in inputs/outputs """
+
+from .config import Config
+from .create_destination_response_201 import CreateDestinationResponse201
+from .create_subscription_filter_request import CreateSubscriptionFilterRequest
+from .create_subscription_filter_request_filter_schema import CreateSubscriptionFilterRequestFilterSchema
+from .create_subscription_filter_request_filter_schema_additional_property import CreateSubscriptionFilterRequestFilterSchemaAdditionalProperty
+from .create_subscription_filter_response_201 import CreateSubscriptionFilterResponse201
+from .create_subscription_request import CreateSubscriptionRequest
+from .create_subscription_response_201 import CreateSubscriptionResponse201
+from .delivery_config import DeliveryConfig
+from .destination import Destination
+from .destination_request import DestinationRequest
+from .destination_search_response import DestinationSearchResponse
+from .error import Error
+from .error_parameter import ErrorParameter
+from .payload_detail import PayloadDetail
+from .public_key import PublicKey
+from .subscription import Subscription
+from .subscription_filter import SubscriptionFilter
+from .subscription_filter_filter_schema import SubscriptionFilterFilterSchema
+from .subscription_filter_filter_schema_additional_property import SubscriptionFilterFilterSchemaAdditionalProperty
+from .subscription_payload_detail import SubscriptionPayloadDetail
+from .subscription_search_response import SubscriptionSearchResponse
+from .topic import Topic
+from .topic_search_response import TopicSearchResponse
+from .update_subscription_request import UpdateSubscriptionRequest
+
+__all__ = (
+ "Config",
+ "CreateDestinationResponse201",
+ "CreateSubscriptionFilterRequest",
+ "CreateSubscriptionFilterRequestFilterSchema",
+ "CreateSubscriptionFilterRequestFilterSchemaAdditionalProperty",
+ "CreateSubscriptionFilterResponse201",
+ "CreateSubscriptionRequest",
+ "CreateSubscriptionResponse201",
+ "DeliveryConfig",
+ "Destination",
+ "DestinationRequest",
+ "DestinationSearchResponse",
+ "Error",
+ "ErrorParameter",
+ "PayloadDetail",
+ "PublicKey",
+ "Subscription",
+ "SubscriptionFilter",
+ "SubscriptionFilterFilterSchema",
+ "SubscriptionFilterFilterSchemaAdditionalProperty",
+ "SubscriptionPayloadDetail",
+ "SubscriptionSearchResponse",
+ "Topic",
+ "TopicSearchResponse",
+ "UpdateSubscriptionRequest",
+)
diff --git a/ebay_client/generated/notification/models/config.py b/ebay_client/generated/notification/models/config.py
new file mode 100644
index 0000000..b7d5a7c
--- /dev/null
+++ b/ebay_client/generated/notification/models/config.py
@@ -0,0 +1,80 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="Config")
+
+
+
+@_attrs_define
+class Config:
+ """ The type that defines the fields for the alertEmail field.
+
+ Attributes:
+ alert_email (Union[Unset, str]): This field is used to add or modify an email address that will be used for
+ Notification API alerts associated with the application. getConfig can be used to get the email address
+ currently being used for alerts.
+ """
+
+ alert_email: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ alert_email = self.alert_email
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if alert_email is not UNSET:
+ field_dict["alertEmail"] = alert_email
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ alert_email = d.pop("alertEmail", UNSET)
+
+ config = cls(
+ alert_email=alert_email,
+ )
+
+
+ config.additional_properties = d
+ return config
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/notification/models/create_destination_response_201.py b/ebay_client/generated/notification/models/create_destination_response_201.py
new file mode 100644
index 0000000..ec8572a
--- /dev/null
+++ b/ebay_client/generated/notification/models/create_destination_response_201.py
@@ -0,0 +1,63 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+
+
+
+
+
+
+T = TypeVar("T", bound="CreateDestinationResponse201")
+
+
+
+@_attrs_define
+class CreateDestinationResponse201:
+ """
+ """
+
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ create_destination_response_201 = cls(
+ )
+
+
+ create_destination_response_201.additional_properties = d
+ return create_destination_response_201
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/notification/models/create_subscription_filter_request.py b/ebay_client/generated/notification/models/create_subscription_filter_request.py
new file mode 100644
index 0000000..878e644
--- /dev/null
+++ b/ebay_client/generated/notification/models/create_subscription_filter_request.py
@@ -0,0 +1,107 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.create_subscription_filter_request_filter_schema import CreateSubscriptionFilterRequestFilterSchema
+
+
+
+
+
+T = TypeVar("T", bound="CreateSubscriptionFilterRequest")
+
+
+
+@_attrs_define
+class CreateSubscriptionFilterRequest:
+ """
+ Attributes:
+ filter_schema (Union[Unset, CreateSubscriptionFilterRequestFilterSchema]): The content of a subscription filter
+ as a valid JSON Schema Core document (version 2020-12 or
+ later). The filterSchema provided must describe the subscription's notification payload such
+ that it supplies valid criteria to filter the subscription's notifications.
Note: Not all topics can have filters applied to them. Use getTopic and getTopics requests to determine if a specific
+ topic is filterable. Filterable topics have the boolean filterable returned as true in the
+ response.
Note: If the JSON supplied as a subscription filter specifies
+ a field that does not exist in the notifications for a topic, or if the topic is not filterable, the filter will
+ be rejected and become DISABLED. If it is valid, however, the filter will move from
+ PENDING status to ENABLED status.
Initially, when the
+ createSubscriptionFilter request has been made, if the request has a valid JSON body a
+ 201 Created is returned. After that, the validation of the filterSchema happens. See Creating a subscription
+ filter for a topic for additional information.
+ """
+
+ filter_schema: Union[Unset, 'CreateSubscriptionFilterRequestFilterSchema'] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.create_subscription_filter_request_filter_schema import CreateSubscriptionFilterRequestFilterSchema
+ filter_schema: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.filter_schema, Unset):
+ filter_schema = self.filter_schema.to_dict()
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if filter_schema is not UNSET:
+ field_dict["filterSchema"] = filter_schema
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.create_subscription_filter_request_filter_schema import CreateSubscriptionFilterRequestFilterSchema
+ d = dict(src_dict)
+ _filter_schema = d.pop("filterSchema", UNSET)
+ filter_schema: Union[Unset, CreateSubscriptionFilterRequestFilterSchema]
+ if isinstance(_filter_schema, Unset):
+ filter_schema = UNSET
+ else:
+ filter_schema = CreateSubscriptionFilterRequestFilterSchema.from_dict(_filter_schema)
+
+
+
+
+ create_subscription_filter_request = cls(
+ filter_schema=filter_schema,
+ )
+
+
+ create_subscription_filter_request.additional_properties = d
+ return create_subscription_filter_request
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/notification/models/create_subscription_filter_request_filter_schema.py b/ebay_client/generated/notification/models/create_subscription_filter_request_filter_schema.py
new file mode 100644
index 0000000..6c7d607
--- /dev/null
+++ b/ebay_client/generated/notification/models/create_subscription_filter_request_filter_schema.py
@@ -0,0 +1,93 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from typing import cast
+
+if TYPE_CHECKING:
+ from ..models.create_subscription_filter_request_filter_schema_additional_property import CreateSubscriptionFilterRequestFilterSchemaAdditionalProperty
+
+
+
+
+
+T = TypeVar("T", bound="CreateSubscriptionFilterRequestFilterSchema")
+
+
+
+@_attrs_define
+class CreateSubscriptionFilterRequestFilterSchema:
+ """ The content of a subscription filter as a valid JSON Schema Core
+ document (version 2020-12 or later). The filterSchema provided must describe the subscription's
+ notification payload such that it supplies valid criteria to filter the subscription's notifications.
Note: Not all topics can have filters applied to them. Use getTopic and getTopics requests to determine if a specific
+ topic is filterable. Filterable topics have the boolean filterable returned as true in the
+ response.
Note: If the JSON supplied as a subscription filter specifies a
+ field that does not exist in the notifications for a topic, or if the topic is not filterable, the filter will be
+ rejected and become DISABLED. If it is valid, however, the filter will move from
+ PENDING status to ENABLED status.
Initially, when the
+ createSubscriptionFilter request has been made, if the request has a valid JSON body a
+ 201 Created is returned. After that, the validation of the filterSchema happens. See Creating a subscription filter
+ for a topic for additional information.
+
+ """
+
+ additional_properties: dict[str, 'CreateSubscriptionFilterRequestFilterSchemaAdditionalProperty'] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.create_subscription_filter_request_filter_schema_additional_property import CreateSubscriptionFilterRequestFilterSchemaAdditionalProperty
+
+ field_dict: dict[str, Any] = {}
+ for prop_name, prop in self.additional_properties.items():
+ field_dict[prop_name] = prop.to_dict()
+
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.create_subscription_filter_request_filter_schema_additional_property import CreateSubscriptionFilterRequestFilterSchemaAdditionalProperty
+ d = dict(src_dict)
+ create_subscription_filter_request_filter_schema = cls(
+ )
+
+
+ additional_properties = {}
+ for prop_name, prop_dict in d.items():
+ additional_property = CreateSubscriptionFilterRequestFilterSchemaAdditionalProperty.from_dict(prop_dict)
+
+
+
+ additional_properties[prop_name] = additional_property
+
+ create_subscription_filter_request_filter_schema.additional_properties = additional_properties
+ return create_subscription_filter_request_filter_schema
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> 'CreateSubscriptionFilterRequestFilterSchemaAdditionalProperty':
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: 'CreateSubscriptionFilterRequestFilterSchemaAdditionalProperty') -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/notification/models/create_subscription_filter_request_filter_schema_additional_property.py b/ebay_client/generated/notification/models/create_subscription_filter_request_filter_schema_additional_property.py
new file mode 100644
index 0000000..dbf6d46
--- /dev/null
+++ b/ebay_client/generated/notification/models/create_subscription_filter_request_filter_schema_additional_property.py
@@ -0,0 +1,63 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+
+
+
+
+
+
+T = TypeVar("T", bound="CreateSubscriptionFilterRequestFilterSchemaAdditionalProperty")
+
+
+
+@_attrs_define
+class CreateSubscriptionFilterRequestFilterSchemaAdditionalProperty:
+ """
+ """
+
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ create_subscription_filter_request_filter_schema_additional_property = cls(
+ )
+
+
+ create_subscription_filter_request_filter_schema_additional_property.additional_properties = d
+ return create_subscription_filter_request_filter_schema_additional_property
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/notification/models/create_subscription_filter_response_201.py b/ebay_client/generated/notification/models/create_subscription_filter_response_201.py
new file mode 100644
index 0000000..11e8714
--- /dev/null
+++ b/ebay_client/generated/notification/models/create_subscription_filter_response_201.py
@@ -0,0 +1,63 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+
+
+
+
+
+
+T = TypeVar("T", bound="CreateSubscriptionFilterResponse201")
+
+
+
+@_attrs_define
+class CreateSubscriptionFilterResponse201:
+ """
+ """
+
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ create_subscription_filter_response_201 = cls(
+ )
+
+
+ create_subscription_filter_response_201.additional_properties = d
+ return create_subscription_filter_response_201
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/notification/models/create_subscription_request.py b/ebay_client/generated/notification/models/create_subscription_request.py
new file mode 100644
index 0000000..8191a1c
--- /dev/null
+++ b/ebay_client/generated/notification/models/create_subscription_request.py
@@ -0,0 +1,126 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.subscription_payload_detail import SubscriptionPayloadDetail
+
+
+
+
+
+T = TypeVar("T", bound="CreateSubscriptionRequest")
+
+
+
+@_attrs_define
+class CreateSubscriptionRequest:
+ """ This type contains information about a subscription request.
+
+ Attributes:
+ destination_id (Union[Unset, str]): The unique identifier of the destination endpoint that will receive
+ notifications associated with this subscription. Use the getDestinations method to retrieve destination
+ IDs.
+ payload (Union[Unset, SubscriptionPayloadDetail]): A type that describes the details of the subscription
+ payload.
+ status (Union[Unset, str]): Set the status of the subscription to ENABLED or DISABLED.
+ For implementation help, refer to eBay API documentation
+ topic_id (Union[Unset, str]): The unique identifier of the notification topic to subscribe to. Use
+ getTopics to get topic IDs.
+ """
+
+ destination_id: Union[Unset, str] = UNSET
+ payload: Union[Unset, 'SubscriptionPayloadDetail'] = UNSET
+ status: Union[Unset, str] = UNSET
+ topic_id: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.subscription_payload_detail import SubscriptionPayloadDetail
+ destination_id = self.destination_id
+
+ payload: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.payload, Unset):
+ payload = self.payload.to_dict()
+
+ status = self.status
+
+ topic_id = self.topic_id
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if destination_id is not UNSET:
+ field_dict["destinationId"] = destination_id
+ if payload is not UNSET:
+ field_dict["payload"] = payload
+ if status is not UNSET:
+ field_dict["status"] = status
+ if topic_id is not UNSET:
+ field_dict["topicId"] = topic_id
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.subscription_payload_detail import SubscriptionPayloadDetail
+ d = dict(src_dict)
+ destination_id = d.pop("destinationId", UNSET)
+
+ _payload = d.pop("payload", UNSET)
+ payload: Union[Unset, SubscriptionPayloadDetail]
+ if isinstance(_payload, Unset):
+ payload = UNSET
+ else:
+ payload = SubscriptionPayloadDetail.from_dict(_payload)
+
+
+
+
+ status = d.pop("status", UNSET)
+
+ topic_id = d.pop("topicId", UNSET)
+
+ create_subscription_request = cls(
+ destination_id=destination_id,
+ payload=payload,
+ status=status,
+ topic_id=topic_id,
+ )
+
+
+ create_subscription_request.additional_properties = d
+ return create_subscription_request
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/notification/models/create_subscription_response_201.py b/ebay_client/generated/notification/models/create_subscription_response_201.py
new file mode 100644
index 0000000..28d293c
--- /dev/null
+++ b/ebay_client/generated/notification/models/create_subscription_response_201.py
@@ -0,0 +1,63 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+
+
+
+
+
+
+T = TypeVar("T", bound="CreateSubscriptionResponse201")
+
+
+
+@_attrs_define
+class CreateSubscriptionResponse201:
+ """
+ """
+
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ create_subscription_response_201 = cls(
+ )
+
+
+ create_subscription_response_201.additional_properties = d
+ return create_subscription_response_201
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/notification/models/delivery_config.py b/ebay_client/generated/notification/models/delivery_config.py
new file mode 100644
index 0000000..6ba016a
--- /dev/null
+++ b/ebay_client/generated/notification/models/delivery_config.py
@@ -0,0 +1,92 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="DeliveryConfig")
+
+
+
+@_attrs_define
+class DeliveryConfig:
+ """ A type that contains information about the delivery configuration.
+
+ Attributes:
+ endpoint (Union[Unset, str]): The endpoint for this destination.
Note: The
+ provided endpoint URL should use the HTTPS protocol, and it should not contain an internal IP address or
+ localhost in its path.
+ verification_token (Union[Unset, str]): The verification token associated with this endpoint.
Note: The provided verification token must be between 32 and 80 characters. Allowed
+ characters include alphanumeric characters, underscores (_), and hyphens (-); no other
+ characters are allowed.
+ """
+
+ endpoint: Union[Unset, str] = UNSET
+ verification_token: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ endpoint = self.endpoint
+
+ verification_token = self.verification_token
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if endpoint is not UNSET:
+ field_dict["endpoint"] = endpoint
+ if verification_token is not UNSET:
+ field_dict["verificationToken"] = verification_token
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ endpoint = d.pop("endpoint", UNSET)
+
+ verification_token = d.pop("verificationToken", UNSET)
+
+ delivery_config = cls(
+ endpoint=endpoint,
+ verification_token=verification_token,
+ )
+
+
+ delivery_config.additional_properties = d
+ return delivery_config
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/notification/models/destination.py b/ebay_client/generated/notification/models/destination.py
new file mode 100644
index 0000000..bd6cfec
--- /dev/null
+++ b/ebay_client/generated/notification/models/destination.py
@@ -0,0 +1,126 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.delivery_config import DeliveryConfig
+
+
+
+
+
+T = TypeVar("T", bound="Destination")
+
+
+
+@_attrs_define
+class Destination:
+ """ A type that contains information about the destination.
+
+ Attributes:
+ delivery_config (Union[Unset, DeliveryConfig]): A type that contains information about the delivery
+ configuration.
+ destination_id (Union[Unset, str]): The unique identifier for the destination.
+ name (Union[Unset, str]): The name associated with this destination.
+ status (Union[Unset, str]): The status for this destination.
Note: The
+ MARKED_DOWN value is set by eBay systems and cannot be used in a create or update call by
+ applications.
Valid
+ values:ENABLEDDISABLEDMARKED_DOWN
+ For implementation help, refer to eBay API documentation
+ """
+
+ delivery_config: Union[Unset, 'DeliveryConfig'] = UNSET
+ destination_id: Union[Unset, str] = UNSET
+ name: Union[Unset, str] = UNSET
+ status: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.delivery_config import DeliveryConfig
+ delivery_config: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.delivery_config, Unset):
+ delivery_config = self.delivery_config.to_dict()
+
+ destination_id = self.destination_id
+
+ name = self.name
+
+ status = self.status
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if delivery_config is not UNSET:
+ field_dict["deliveryConfig"] = delivery_config
+ if destination_id is not UNSET:
+ field_dict["destinationId"] = destination_id
+ if name is not UNSET:
+ field_dict["name"] = name
+ if status is not UNSET:
+ field_dict["status"] = status
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.delivery_config import DeliveryConfig
+ d = dict(src_dict)
+ _delivery_config = d.pop("deliveryConfig", UNSET)
+ delivery_config: Union[Unset, DeliveryConfig]
+ if isinstance(_delivery_config, Unset):
+ delivery_config = UNSET
+ else:
+ delivery_config = DeliveryConfig.from_dict(_delivery_config)
+
+
+
+
+ destination_id = d.pop("destinationId", UNSET)
+
+ name = d.pop("name", UNSET)
+
+ status = d.pop("status", UNSET)
+
+ destination = cls(
+ delivery_config=delivery_config,
+ destination_id=destination_id,
+ name=name,
+ status=status,
+ )
+
+
+ destination.additional_properties = d
+ return destination
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/notification/models/destination_request.py b/ebay_client/generated/notification/models/destination_request.py
new file mode 100644
index 0000000..cd11fba
--- /dev/null
+++ b/ebay_client/generated/notification/models/destination_request.py
@@ -0,0 +1,116 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.delivery_config import DeliveryConfig
+
+
+
+
+
+T = TypeVar("T", bound="DestinationRequest")
+
+
+
+@_attrs_define
+class DestinationRequest:
+ """ A type that contains information about the destination request.
+
+ Attributes:
+ delivery_config (Union[Unset, DeliveryConfig]): A type that contains information about the delivery
+ configuration.
+ name (Union[Unset, str]): The seller-specified name for the destination endpoint.
+ status (Union[Unset, str]): This field sets the status for the destination endpoint as ENABLED or
+ DISABLED.
Note: The MARKED_DOWN value is set by eBay
+ systems and cannot be used in a create or update call by applications. For implementation help, refer to
+ eBay API
+ documentation
+ """
+
+ delivery_config: Union[Unset, 'DeliveryConfig'] = UNSET
+ name: Union[Unset, str] = UNSET
+ status: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.delivery_config import DeliveryConfig
+ delivery_config: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.delivery_config, Unset):
+ delivery_config = self.delivery_config.to_dict()
+
+ name = self.name
+
+ status = self.status
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if delivery_config is not UNSET:
+ field_dict["deliveryConfig"] = delivery_config
+ if name is not UNSET:
+ field_dict["name"] = name
+ if status is not UNSET:
+ field_dict["status"] = status
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.delivery_config import DeliveryConfig
+ d = dict(src_dict)
+ _delivery_config = d.pop("deliveryConfig", UNSET)
+ delivery_config: Union[Unset, DeliveryConfig]
+ if isinstance(_delivery_config, Unset):
+ delivery_config = UNSET
+ else:
+ delivery_config = DeliveryConfig.from_dict(_delivery_config)
+
+
+
+
+ name = d.pop("name", UNSET)
+
+ status = d.pop("status", UNSET)
+
+ destination_request = cls(
+ delivery_config=delivery_config,
+ name=name,
+ status=status,
+ )
+
+
+ destination_request.additional_properties = d
+ return destination_request
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/notification/models/destination_search_response.py b/ebay_client/generated/notification/models/destination_search_response.py
new file mode 100644
index 0000000..357f4ae
--- /dev/null
+++ b/ebay_client/generated/notification/models/destination_search_response.py
@@ -0,0 +1,137 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.destination import Destination
+
+
+
+
+
+T = TypeVar("T", bound="DestinationSearchResponse")
+
+
+
+@_attrs_define
+class DestinationSearchResponse:
+ """ A type that contains information about the destination search response.
+
+ Attributes:
+ destinations (Union[Unset, list['Destination']]): An array that contains the destination details.
+ href (Union[Unset, str]): The path to the call URI that produced the current page of results.
+ limit (Union[Unset, int]): The number of records to show in the current response.
Default: 20
+ next_ (Union[Unset, str]): The URL to access the next set of results. This field includes a
+ continuation_token. No prev field is returned, but this value is persistent during the
+ session so that you can use it to return to the next page.
This field is not returned if fewer records
+ than specified by the limit field are returned.
+ total (Union[Unset, int]): The total number of matches for the search criteria.
+ """
+
+ destinations: Union[Unset, list['Destination']] = UNSET
+ href: Union[Unset, str] = UNSET
+ limit: Union[Unset, int] = UNSET
+ next_: Union[Unset, str] = UNSET
+ total: Union[Unset, int] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.destination import Destination
+ destinations: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.destinations, Unset):
+ destinations = []
+ for destinations_item_data in self.destinations:
+ destinations_item = destinations_item_data.to_dict()
+ destinations.append(destinations_item)
+
+
+
+ href = self.href
+
+ limit = self.limit
+
+ next_ = self.next_
+
+ total = self.total
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if destinations is not UNSET:
+ field_dict["destinations"] = destinations
+ if href is not UNSET:
+ field_dict["href"] = href
+ if limit is not UNSET:
+ field_dict["limit"] = limit
+ if next_ is not UNSET:
+ field_dict["next"] = next_
+ if total is not UNSET:
+ field_dict["total"] = total
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.destination import Destination
+ d = dict(src_dict)
+ destinations = []
+ _destinations = d.pop("destinations", UNSET)
+ for destinations_item_data in (_destinations or []):
+ destinations_item = Destination.from_dict(destinations_item_data)
+
+
+
+ destinations.append(destinations_item)
+
+
+ href = d.pop("href", UNSET)
+
+ limit = d.pop("limit", UNSET)
+
+ next_ = d.pop("next", UNSET)
+
+ total = d.pop("total", UNSET)
+
+ destination_search_response = cls(
+ destinations=destinations,
+ href=href,
+ limit=limit,
+ next_=next_,
+ total=total,
+ )
+
+
+ destination_search_response.additional_properties = d
+ return destination_search_response
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/notification/models/error.py b/ebay_client/generated/notification/models/error.py
new file mode 100644
index 0000000..d648d93
--- /dev/null
+++ b/ebay_client/generated/notification/models/error.py
@@ -0,0 +1,184 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.error_parameter import ErrorParameter
+
+
+
+
+
+T = TypeVar("T", bound="Error")
+
+
+
+@_attrs_define
+class Error:
+ """ This type defines the fields that can be returned in an error.
+
+ Attributes:
+ category (Union[Unset, str]): Identifies the type of erro.
+ domain (Union[Unset, str]): Name for the primary system where the error occurred. This is relevant for
+ application errors.
+ error_id (Union[Unset, int]): A unique number to identify the error.
+ input_ref_ids (Union[Unset, list[str]]): An array of request elements most closely associated to the error.
+ long_message (Union[Unset, str]): A more detailed explanation of the error.
+ message (Union[Unset, str]): Information on how to correct the problem, in the end user's terms and language
+ where applicable.
+ output_ref_ids (Union[Unset, list[str]]): An array of request elements most closely associated to the error.
+ parameters (Union[Unset, list['ErrorParameter']]): An array of name/value pairs that describe details the error
+ condition. These are useful when multiple errors are returned.
+ subdomain (Union[Unset, str]): Further helps indicate which subsystem the error is coming from. System
+ subcategories include: Initialization, Serialization, Security, Monitoring, Rate Limiting, etc.
+ """
+
+ category: Union[Unset, str] = UNSET
+ domain: Union[Unset, str] = UNSET
+ error_id: Union[Unset, int] = UNSET
+ input_ref_ids: Union[Unset, list[str]] = UNSET
+ long_message: Union[Unset, str] = UNSET
+ message: Union[Unset, str] = UNSET
+ output_ref_ids: Union[Unset, list[str]] = UNSET
+ parameters: Union[Unset, list['ErrorParameter']] = UNSET
+ subdomain: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.error_parameter import ErrorParameter
+ category = self.category
+
+ domain = self.domain
+
+ error_id = self.error_id
+
+ input_ref_ids: Union[Unset, list[str]] = UNSET
+ if not isinstance(self.input_ref_ids, Unset):
+ input_ref_ids = self.input_ref_ids
+
+
+
+ long_message = self.long_message
+
+ message = self.message
+
+ output_ref_ids: Union[Unset, list[str]] = UNSET
+ if not isinstance(self.output_ref_ids, Unset):
+ output_ref_ids = self.output_ref_ids
+
+
+
+ parameters: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.parameters, Unset):
+ parameters = []
+ for parameters_item_data in self.parameters:
+ parameters_item = parameters_item_data.to_dict()
+ parameters.append(parameters_item)
+
+
+
+ subdomain = self.subdomain
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if category is not UNSET:
+ field_dict["category"] = category
+ if domain is not UNSET:
+ field_dict["domain"] = domain
+ if error_id is not UNSET:
+ field_dict["errorId"] = error_id
+ if input_ref_ids is not UNSET:
+ field_dict["inputRefIds"] = input_ref_ids
+ if long_message is not UNSET:
+ field_dict["longMessage"] = long_message
+ if message is not UNSET:
+ field_dict["message"] = message
+ if output_ref_ids is not UNSET:
+ field_dict["outputRefIds"] = output_ref_ids
+ if parameters is not UNSET:
+ field_dict["parameters"] = parameters
+ if subdomain is not UNSET:
+ field_dict["subdomain"] = subdomain
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.error_parameter import ErrorParameter
+ d = dict(src_dict)
+ category = d.pop("category", UNSET)
+
+ domain = d.pop("domain", UNSET)
+
+ error_id = d.pop("errorId", UNSET)
+
+ input_ref_ids = cast(list[str], d.pop("inputRefIds", UNSET))
+
+
+ long_message = d.pop("longMessage", UNSET)
+
+ message = d.pop("message", UNSET)
+
+ output_ref_ids = cast(list[str], d.pop("outputRefIds", UNSET))
+
+
+ parameters = []
+ _parameters = d.pop("parameters", UNSET)
+ for parameters_item_data in (_parameters or []):
+ parameters_item = ErrorParameter.from_dict(parameters_item_data)
+
+
+
+ parameters.append(parameters_item)
+
+
+ subdomain = d.pop("subdomain", UNSET)
+
+ error = cls(
+ category=category,
+ domain=domain,
+ error_id=error_id,
+ input_ref_ids=input_ref_ids,
+ long_message=long_message,
+ message=message,
+ output_ref_ids=output_ref_ids,
+ parameters=parameters,
+ subdomain=subdomain,
+ )
+
+
+ error.additional_properties = d
+ return error
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/notification/models/error_parameter.py b/ebay_client/generated/notification/models/error_parameter.py
new file mode 100644
index 0000000..cf52861
--- /dev/null
+++ b/ebay_client/generated/notification/models/error_parameter.py
@@ -0,0 +1,86 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="ErrorParameter")
+
+
+
+@_attrs_define
+class ErrorParameter:
+ """
+ Attributes:
+ name (Union[Unset, str]): The object of the error.
+ value (Union[Unset, str]): The value of the object.
+ """
+
+ name: Union[Unset, str] = UNSET
+ value: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ name = self.name
+
+ value = self.value
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if name is not UNSET:
+ field_dict["name"] = name
+ if value is not UNSET:
+ field_dict["value"] = value
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ name = d.pop("name", UNSET)
+
+ value = d.pop("value", UNSET)
+
+ error_parameter = cls(
+ name=name,
+ value=value,
+ )
+
+
+ error_parameter.additional_properties = d
+ return error_parameter
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/notification/models/payload_detail.py b/ebay_client/generated/notification/models/payload_detail.py
new file mode 100644
index 0000000..4452f8c
--- /dev/null
+++ b/ebay_client/generated/notification/models/payload_detail.py
@@ -0,0 +1,114 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="PayloadDetail")
+
+
+
+@_attrs_define
+class PayloadDetail:
+ """ A type that describes the details about a topic's payload.
+
+ Attributes:
+ delivery_protocol (Union[Unset, str]): The supported delivery protocols. For implementation help, refer to eBay API
+ documentation
+ deprecated (Union[Unset, bool]): A deprecation indicator.
+ format_ (Union[Unset, list[str]]): The supported format. Presently, JSON is the only supported
+ format.
+ schema_version (Union[Unset, str]): The supported schema version.
+ """
+
+ delivery_protocol: Union[Unset, str] = UNSET
+ deprecated: Union[Unset, bool] = UNSET
+ format_: Union[Unset, list[str]] = UNSET
+ schema_version: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ delivery_protocol = self.delivery_protocol
+
+ deprecated = self.deprecated
+
+ format_: Union[Unset, list[str]] = UNSET
+ if not isinstance(self.format_, Unset):
+ format_ = self.format_
+
+
+
+ schema_version = self.schema_version
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if delivery_protocol is not UNSET:
+ field_dict["deliveryProtocol"] = delivery_protocol
+ if deprecated is not UNSET:
+ field_dict["deprecated"] = deprecated
+ if format_ is not UNSET:
+ field_dict["format"] = format_
+ if schema_version is not UNSET:
+ field_dict["schemaVersion"] = schema_version
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ delivery_protocol = d.pop("deliveryProtocol", UNSET)
+
+ deprecated = d.pop("deprecated", UNSET)
+
+ format_ = cast(list[str], d.pop("format", UNSET))
+
+
+ schema_version = d.pop("schemaVersion", UNSET)
+
+ payload_detail = cls(
+ delivery_protocol=delivery_protocol,
+ deprecated=deprecated,
+ format_=format_,
+ schema_version=schema_version,
+ )
+
+
+ payload_detail.additional_properties = d
+ return payload_detail
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/notification/models/public_key.py b/ebay_client/generated/notification/models/public_key.py
new file mode 100644
index 0000000..ced29d0
--- /dev/null
+++ b/ebay_client/generated/notification/models/public_key.py
@@ -0,0 +1,99 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="PublicKey")
+
+
+
+@_attrs_define
+class PublicKey:
+ """ A type that defines the public key for a unique key ID.
+
+ Attributes:
+ algorithm (Union[Unset, str]): The algorithm associated with the public key that is returned, such as Elliptic
+ Curve Digital Signature Algorithm (ECDSA).
+ digest (Union[Unset, str]): The digest associated with the public key that is returned, such as Secure Hash
+ Algorithm 1 (SHA1).
+ key (Union[Unset, str]): The public key that is returned for the specified key ID.
This value is used to
+ validate the eBay push notification message payload.
+ """
+
+ algorithm: Union[Unset, str] = UNSET
+ digest: Union[Unset, str] = UNSET
+ key: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ algorithm = self.algorithm
+
+ digest = self.digest
+
+ key = self.key
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if algorithm is not UNSET:
+ field_dict["algorithm"] = algorithm
+ if digest is not UNSET:
+ field_dict["digest"] = digest
+ if key is not UNSET:
+ field_dict["key"] = key
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ algorithm = d.pop("algorithm", UNSET)
+
+ digest = d.pop("digest", UNSET)
+
+ key = d.pop("key", UNSET)
+
+ public_key = cls(
+ algorithm=algorithm,
+ digest=digest,
+ key=key,
+ )
+
+
+ public_key.additional_properties = d
+ return public_key
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/notification/models/subscription.py b/ebay_client/generated/notification/models/subscription.py
new file mode 100644
index 0000000..bd12ae3
--- /dev/null
+++ b/ebay_client/generated/notification/models/subscription.py
@@ -0,0 +1,150 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.subscription_payload_detail import SubscriptionPayloadDetail
+
+
+
+
+
+T = TypeVar("T", bound="Subscription")
+
+
+
+@_attrs_define
+class Subscription:
+ """ A type that describes the subscription.
+
+ Attributes:
+ creation_date (Union[Unset, str]): The creation date for this subscription.
+ destination_id (Union[Unset, str]): The unique identifier for the destination associated with this subscription.
+ filter_id (Union[Unset, str]): The unique identifier for the filter associated with this subscription.
+ payload (Union[Unset, SubscriptionPayloadDetail]): A type that describes the details of the subscription
+ payload.
+ status (Union[Unset, str]): The status of this subscription. For implementation help, refer to eBay API
+ documentation
+ subscription_id (Union[Unset, str]): The unique identifier for the subscription.
+ topic_id (Union[Unset, str]): The unique identifier for the topic associated with this subscription.
+ """
+
+ creation_date: Union[Unset, str] = UNSET
+ destination_id: Union[Unset, str] = UNSET
+ filter_id: Union[Unset, str] = UNSET
+ payload: Union[Unset, 'SubscriptionPayloadDetail'] = UNSET
+ status: Union[Unset, str] = UNSET
+ subscription_id: Union[Unset, str] = UNSET
+ topic_id: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.subscription_payload_detail import SubscriptionPayloadDetail
+ creation_date = self.creation_date
+
+ destination_id = self.destination_id
+
+ filter_id = self.filter_id
+
+ payload: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.payload, Unset):
+ payload = self.payload.to_dict()
+
+ status = self.status
+
+ subscription_id = self.subscription_id
+
+ topic_id = self.topic_id
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if creation_date is not UNSET:
+ field_dict["creationDate"] = creation_date
+ if destination_id is not UNSET:
+ field_dict["destinationId"] = destination_id
+ if filter_id is not UNSET:
+ field_dict["filterId"] = filter_id
+ if payload is not UNSET:
+ field_dict["payload"] = payload
+ if status is not UNSET:
+ field_dict["status"] = status
+ if subscription_id is not UNSET:
+ field_dict["subscriptionId"] = subscription_id
+ if topic_id is not UNSET:
+ field_dict["topicId"] = topic_id
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.subscription_payload_detail import SubscriptionPayloadDetail
+ d = dict(src_dict)
+ creation_date = d.pop("creationDate", UNSET)
+
+ destination_id = d.pop("destinationId", UNSET)
+
+ filter_id = d.pop("filterId", UNSET)
+
+ _payload = d.pop("payload", UNSET)
+ payload: Union[Unset, SubscriptionPayloadDetail]
+ if isinstance(_payload, Unset):
+ payload = UNSET
+ else:
+ payload = SubscriptionPayloadDetail.from_dict(_payload)
+
+
+
+
+ status = d.pop("status", UNSET)
+
+ subscription_id = d.pop("subscriptionId", UNSET)
+
+ topic_id = d.pop("topicId", UNSET)
+
+ subscription = cls(
+ creation_date=creation_date,
+ destination_id=destination_id,
+ filter_id=filter_id,
+ payload=payload,
+ status=status,
+ subscription_id=subscription_id,
+ topic_id=topic_id,
+ )
+
+
+ subscription.additional_properties = d
+ return subscription
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/notification/models/subscription_filter.py b/ebay_client/generated/notification/models/subscription_filter.py
new file mode 100644
index 0000000..1ebfef4
--- /dev/null
+++ b/ebay_client/generated/notification/models/subscription_filter.py
@@ -0,0 +1,133 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.subscription_filter_filter_schema import SubscriptionFilterFilterSchema
+
+
+
+
+
+T = TypeVar("T", bound="SubscriptionFilter")
+
+
+
+@_attrs_define
+class SubscriptionFilter:
+ """
+ Attributes:
+ creation_date (Union[Unset, str]): The creation date for this subscription filter.
+ filter_id (Union[Unset, str]): The unique identifier for this subscription filter.
+ filter_schema (Union[Unset, SubscriptionFilterFilterSchema]): The content of this subscription filter as a valid
+ JSON Schema Core document (version 2020-12 or later). The
+ filterSchema provided must describe the subscription's notification payload such that it
+ supplies valid criteria to filter the subscription's notifications.
+ filter_status (Union[Unset, str]): The status of this subscription filter. For implementation help, refer to eBay API
+ documentation
+ subscription_id (Union[Unset, str]): The unique identifier for the subscription.
+ """
+
+ creation_date: Union[Unset, str] = UNSET
+ filter_id: Union[Unset, str] = UNSET
+ filter_schema: Union[Unset, 'SubscriptionFilterFilterSchema'] = UNSET
+ filter_status: Union[Unset, str] = UNSET
+ subscription_id: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.subscription_filter_filter_schema import SubscriptionFilterFilterSchema
+ creation_date = self.creation_date
+
+ filter_id = self.filter_id
+
+ filter_schema: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.filter_schema, Unset):
+ filter_schema = self.filter_schema.to_dict()
+
+ filter_status = self.filter_status
+
+ subscription_id = self.subscription_id
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if creation_date is not UNSET:
+ field_dict["creationDate"] = creation_date
+ if filter_id is not UNSET:
+ field_dict["filterId"] = filter_id
+ if filter_schema is not UNSET:
+ field_dict["filterSchema"] = filter_schema
+ if filter_status is not UNSET:
+ field_dict["filterStatus"] = filter_status
+ if subscription_id is not UNSET:
+ field_dict["subscriptionId"] = subscription_id
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.subscription_filter_filter_schema import SubscriptionFilterFilterSchema
+ d = dict(src_dict)
+ creation_date = d.pop("creationDate", UNSET)
+
+ filter_id = d.pop("filterId", UNSET)
+
+ _filter_schema = d.pop("filterSchema", UNSET)
+ filter_schema: Union[Unset, SubscriptionFilterFilterSchema]
+ if isinstance(_filter_schema, Unset):
+ filter_schema = UNSET
+ else:
+ filter_schema = SubscriptionFilterFilterSchema.from_dict(_filter_schema)
+
+
+
+
+ filter_status = d.pop("filterStatus", UNSET)
+
+ subscription_id = d.pop("subscriptionId", UNSET)
+
+ subscription_filter = cls(
+ creation_date=creation_date,
+ filter_id=filter_id,
+ filter_schema=filter_schema,
+ filter_status=filter_status,
+ subscription_id=subscription_id,
+ )
+
+
+ subscription_filter.additional_properties = d
+ return subscription_filter
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/notification/models/subscription_filter_filter_schema.py b/ebay_client/generated/notification/models/subscription_filter_filter_schema.py
new file mode 100644
index 0000000..7b558dd
--- /dev/null
+++ b/ebay_client/generated/notification/models/subscription_filter_filter_schema.py
@@ -0,0 +1,81 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from typing import cast
+
+if TYPE_CHECKING:
+ from ..models.subscription_filter_filter_schema_additional_property import SubscriptionFilterFilterSchemaAdditionalProperty
+
+
+
+
+
+T = TypeVar("T", bound="SubscriptionFilterFilterSchema")
+
+
+
+@_attrs_define
+class SubscriptionFilterFilterSchema:
+ """ The content of this subscription filter as a valid JSON Schema
+ Core document (version 2020-12 or later). The filterSchema provided must describe the
+ subscription's notification payload such that it supplies valid criteria to filter the subscription's notifications.
+
+ """
+
+ additional_properties: dict[str, 'SubscriptionFilterFilterSchemaAdditionalProperty'] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.subscription_filter_filter_schema_additional_property import SubscriptionFilterFilterSchemaAdditionalProperty
+
+ field_dict: dict[str, Any] = {}
+ for prop_name, prop in self.additional_properties.items():
+ field_dict[prop_name] = prop.to_dict()
+
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.subscription_filter_filter_schema_additional_property import SubscriptionFilterFilterSchemaAdditionalProperty
+ d = dict(src_dict)
+ subscription_filter_filter_schema = cls(
+ )
+
+
+ additional_properties = {}
+ for prop_name, prop_dict in d.items():
+ additional_property = SubscriptionFilterFilterSchemaAdditionalProperty.from_dict(prop_dict)
+
+
+
+ additional_properties[prop_name] = additional_property
+
+ subscription_filter_filter_schema.additional_properties = additional_properties
+ return subscription_filter_filter_schema
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> 'SubscriptionFilterFilterSchemaAdditionalProperty':
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: 'SubscriptionFilterFilterSchemaAdditionalProperty') -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/notification/models/subscription_filter_filter_schema_additional_property.py b/ebay_client/generated/notification/models/subscription_filter_filter_schema_additional_property.py
new file mode 100644
index 0000000..6bd75e3
--- /dev/null
+++ b/ebay_client/generated/notification/models/subscription_filter_filter_schema_additional_property.py
@@ -0,0 +1,63 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+
+
+
+
+
+
+T = TypeVar("T", bound="SubscriptionFilterFilterSchemaAdditionalProperty")
+
+
+
+@_attrs_define
+class SubscriptionFilterFilterSchemaAdditionalProperty:
+ """
+ """
+
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ subscription_filter_filter_schema_additional_property = cls(
+ )
+
+
+ subscription_filter_filter_schema_additional_property.additional_properties = d
+ return subscription_filter_filter_schema_additional_property
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/notification/models/subscription_payload_detail.py b/ebay_client/generated/notification/models/subscription_payload_detail.py
new file mode 100644
index 0000000..f522f3b
--- /dev/null
+++ b/ebay_client/generated/notification/models/subscription_payload_detail.py
@@ -0,0 +1,103 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import Union
+
+
+
+
+
+
+T = TypeVar("T", bound="SubscriptionPayloadDetail")
+
+
+
+@_attrs_define
+class SubscriptionPayloadDetail:
+ """ A type that describes the details of the subscription payload.
+
+ Attributes:
+ delivery_protocol (Union[Unset, str]): The supported delivery protocol of the notification topic.
Note: HTTPS is currently the only supported delivery protocol of all
+ notification topics. For implementation help, refer to eBay API documentation
+ format_ (Union[Unset, str]): The supported data format of the payload.
Note: JSON is currently the only supported format for all notification topics.
+ For implementation help, refer to eBay API documentation
+ schema_version (Union[Unset, str]): The supported schema version for the notification topic. See the
+ supportedPayloads.schemaVersion field for the topic in getTopics or getTopic response.
+ """
+
+ delivery_protocol: Union[Unset, str] = UNSET
+ format_: Union[Unset, str] = UNSET
+ schema_version: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ delivery_protocol = self.delivery_protocol
+
+ format_ = self.format_
+
+ schema_version = self.schema_version
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if delivery_protocol is not UNSET:
+ field_dict["deliveryProtocol"] = delivery_protocol
+ if format_ is not UNSET:
+ field_dict["format"] = format_
+ if schema_version is not UNSET:
+ field_dict["schemaVersion"] = schema_version
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ d = dict(src_dict)
+ delivery_protocol = d.pop("deliveryProtocol", UNSET)
+
+ format_ = d.pop("format", UNSET)
+
+ schema_version = d.pop("schemaVersion", UNSET)
+
+ subscription_payload_detail = cls(
+ delivery_protocol=delivery_protocol,
+ format_=format_,
+ schema_version=schema_version,
+ )
+
+
+ subscription_payload_detail.additional_properties = d
+ return subscription_payload_detail
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/notification/models/subscription_search_response.py b/ebay_client/generated/notification/models/subscription_search_response.py
new file mode 100644
index 0000000..3fc6ba9
--- /dev/null
+++ b/ebay_client/generated/notification/models/subscription_search_response.py
@@ -0,0 +1,140 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.subscription import Subscription
+
+
+
+
+
+T = TypeVar("T", bound="SubscriptionSearchResponse")
+
+
+
+@_attrs_define
+class SubscriptionSearchResponse:
+ """ A type that describes the details of the subscription search response.
+
+ Attributes:
+ href (Union[Unset, str]): The path to the call URI that produced the current page of results.
+ limit (Union[Unset, int]): The value of the limit parameter submitted in the request, which is the maximum
+ number of items to return per page, from the result set. A result set is the complete set of results returned by
+ the method.
Note: Though this parameter is not required to be submitted in
+ the request, the parameter defaults to 20 if omitted.
Default: 20
+ next_ (Union[Unset, str]): The URL to access the next set of results. This field includes a
+ continuation_token. No prev field is returned, but this value is persistent during the
+ session so that you can use it to return to the next page.
This field is not returned if fewer records
+ than specified by the limit field are returned.
+ subscriptions (Union[Unset, list['Subscription']]): The subscriptions that match the search criteria.
+ total (Union[Unset, int]): The total number of matches for the search criteria.
+ """
+
+ href: Union[Unset, str] = UNSET
+ limit: Union[Unset, int] = UNSET
+ next_: Union[Unset, str] = UNSET
+ subscriptions: Union[Unset, list['Subscription']] = UNSET
+ total: Union[Unset, int] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.subscription import Subscription
+ href = self.href
+
+ limit = self.limit
+
+ next_ = self.next_
+
+ subscriptions: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.subscriptions, Unset):
+ subscriptions = []
+ for subscriptions_item_data in self.subscriptions:
+ subscriptions_item = subscriptions_item_data.to_dict()
+ subscriptions.append(subscriptions_item)
+
+
+
+ total = self.total
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if href is not UNSET:
+ field_dict["href"] = href
+ if limit is not UNSET:
+ field_dict["limit"] = limit
+ if next_ is not UNSET:
+ field_dict["next"] = next_
+ if subscriptions is not UNSET:
+ field_dict["subscriptions"] = subscriptions
+ if total is not UNSET:
+ field_dict["total"] = total
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.subscription import Subscription
+ d = dict(src_dict)
+ href = d.pop("href", UNSET)
+
+ limit = d.pop("limit", UNSET)
+
+ next_ = d.pop("next", UNSET)
+
+ subscriptions = []
+ _subscriptions = d.pop("subscriptions", UNSET)
+ for subscriptions_item_data in (_subscriptions or []):
+ subscriptions_item = Subscription.from_dict(subscriptions_item_data)
+
+
+
+ subscriptions.append(subscriptions_item)
+
+
+ total = d.pop("total", UNSET)
+
+ subscription_search_response = cls(
+ href=href,
+ limit=limit,
+ next_=next_,
+ subscriptions=subscriptions,
+ total=total,
+ )
+
+
+ subscription_search_response.additional_properties = d
+ return subscription_search_response
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/notification/models/topic.py b/ebay_client/generated/notification/models/topic.py
new file mode 100644
index 0000000..023b430
--- /dev/null
+++ b/ebay_client/generated/notification/models/topic.py
@@ -0,0 +1,170 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.payload_detail import PayloadDetail
+
+
+
+
+
+T = TypeVar("T", bound="Topic")
+
+
+
+@_attrs_define
+class Topic:
+ """ A type that describes the details of the topic.
+
+ Attributes:
+ authorization_scopes (Union[Unset, list[str]]): The authorization scopes required to subscribe to this topic.
+ context (Union[Unset, str]): The business context associated with this topic. For implementation help, refer to
+ eBay API
+ documentation
+ description (Union[Unset, str]): The description of the topic.
+ filterable (Union[Unset, bool]): The indicator of whether this topic is filterable or not.
+ scope (Union[Unset, str]): The scope of this topic. For implementation help, refer to eBay API documentation
+ status (Union[Unset, str]): The status of this topic. For implementation help, refer to eBay API documentation
+ supported_payloads (Union[Unset, list['PayloadDetail']]): The supported payloads for this topic.
+ topic_id (Union[Unset, str]): The unique identifier for the topic.
+ """
+
+ authorization_scopes: Union[Unset, list[str]] = UNSET
+ context: Union[Unset, str] = UNSET
+ description: Union[Unset, str] = UNSET
+ filterable: Union[Unset, bool] = UNSET
+ scope: Union[Unset, str] = UNSET
+ status: Union[Unset, str] = UNSET
+ supported_payloads: Union[Unset, list['PayloadDetail']] = UNSET
+ topic_id: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.payload_detail import PayloadDetail
+ authorization_scopes: Union[Unset, list[str]] = UNSET
+ if not isinstance(self.authorization_scopes, Unset):
+ authorization_scopes = self.authorization_scopes
+
+
+
+ context = self.context
+
+ description = self.description
+
+ filterable = self.filterable
+
+ scope = self.scope
+
+ status = self.status
+
+ supported_payloads: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.supported_payloads, Unset):
+ supported_payloads = []
+ for supported_payloads_item_data in self.supported_payloads:
+ supported_payloads_item = supported_payloads_item_data.to_dict()
+ supported_payloads.append(supported_payloads_item)
+
+
+
+ topic_id = self.topic_id
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if authorization_scopes is not UNSET:
+ field_dict["authorizationScopes"] = authorization_scopes
+ if context is not UNSET:
+ field_dict["context"] = context
+ if description is not UNSET:
+ field_dict["description"] = description
+ if filterable is not UNSET:
+ field_dict["filterable"] = filterable
+ if scope is not UNSET:
+ field_dict["scope"] = scope
+ if status is not UNSET:
+ field_dict["status"] = status
+ if supported_payloads is not UNSET:
+ field_dict["supportedPayloads"] = supported_payloads
+ if topic_id is not UNSET:
+ field_dict["topicId"] = topic_id
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.payload_detail import PayloadDetail
+ d = dict(src_dict)
+ authorization_scopes = cast(list[str], d.pop("authorizationScopes", UNSET))
+
+
+ context = d.pop("context", UNSET)
+
+ description = d.pop("description", UNSET)
+
+ filterable = d.pop("filterable", UNSET)
+
+ scope = d.pop("scope", UNSET)
+
+ status = d.pop("status", UNSET)
+
+ supported_payloads = []
+ _supported_payloads = d.pop("supportedPayloads", UNSET)
+ for supported_payloads_item_data in (_supported_payloads or []):
+ supported_payloads_item = PayloadDetail.from_dict(supported_payloads_item_data)
+
+
+
+ supported_payloads.append(supported_payloads_item)
+
+
+ topic_id = d.pop("topicId", UNSET)
+
+ topic = cls(
+ authorization_scopes=authorization_scopes,
+ context=context,
+ description=description,
+ filterable=filterable,
+ scope=scope,
+ status=status,
+ supported_payloads=supported_payloads,
+ topic_id=topic_id,
+ )
+
+
+ topic.additional_properties = d
+ return topic
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/notification/models/topic_search_response.py b/ebay_client/generated/notification/models/topic_search_response.py
new file mode 100644
index 0000000..d3a1206
--- /dev/null
+++ b/ebay_client/generated/notification/models/topic_search_response.py
@@ -0,0 +1,140 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.topic import Topic
+
+
+
+
+
+T = TypeVar("T", bound="TopicSearchResponse")
+
+
+
+@_attrs_define
+class TopicSearchResponse:
+ """ A type that describes the details of the topic search response.
+
+ Attributes:
+ href (Union[Unset, str]): The path to the call URI that produced the current page of results.
+ limit (Union[Unset, int]): The value of the limit parameter submitted in the request, which is the maximum
+ number of items to return per page, from the result set. A result set is the complete set of results returned by
+ the method.
Note: Though this parameter is not required to be submitted in
+ the request, the parameter defaults to 20 if omitted.
+ next_ (Union[Unset, str]): The URL to access the next set of results. This field includes a
+ continuation_token. No prev field is returned, but this value is persistent during the
+ session so that you can use it to return to the next page.
This field is not returned if fewer records
+ than specified by the limit field are returned.
+ topics (Union[Unset, list['Topic']]): An array of topics that match the specified criteria.
+ total (Union[Unset, int]): The total number of matches for the search criteria.
+ """
+
+ href: Union[Unset, str] = UNSET
+ limit: Union[Unset, int] = UNSET
+ next_: Union[Unset, str] = UNSET
+ topics: Union[Unset, list['Topic']] = UNSET
+ total: Union[Unset, int] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.topic import Topic
+ href = self.href
+
+ limit = self.limit
+
+ next_ = self.next_
+
+ topics: Union[Unset, list[dict[str, Any]]] = UNSET
+ if not isinstance(self.topics, Unset):
+ topics = []
+ for topics_item_data in self.topics:
+ topics_item = topics_item_data.to_dict()
+ topics.append(topics_item)
+
+
+
+ total = self.total
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if href is not UNSET:
+ field_dict["href"] = href
+ if limit is not UNSET:
+ field_dict["limit"] = limit
+ if next_ is not UNSET:
+ field_dict["next"] = next_
+ if topics is not UNSET:
+ field_dict["topics"] = topics
+ if total is not UNSET:
+ field_dict["total"] = total
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.topic import Topic
+ d = dict(src_dict)
+ href = d.pop("href", UNSET)
+
+ limit = d.pop("limit", UNSET)
+
+ next_ = d.pop("next", UNSET)
+
+ topics = []
+ _topics = d.pop("topics", UNSET)
+ for topics_item_data in (_topics or []):
+ topics_item = Topic.from_dict(topics_item_data)
+
+
+
+ topics.append(topics_item)
+
+
+ total = d.pop("total", UNSET)
+
+ topic_search_response = cls(
+ href=href,
+ limit=limit,
+ next_=next_,
+ topics=topics,
+ total=total,
+ )
+
+
+ topic_search_response.additional_properties = d
+ return topic_search_response
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/notification/models/update_subscription_request.py b/ebay_client/generated/notification/models/update_subscription_request.py
new file mode 100644
index 0000000..e6a883d
--- /dev/null
+++ b/ebay_client/generated/notification/models/update_subscription_request.py
@@ -0,0 +1,115 @@
+from collections.abc import Mapping
+from typing import Any, TypeVar, Optional, BinaryIO, TextIO, TYPE_CHECKING, Generator
+
+from attrs import define as _attrs_define
+from attrs import field as _attrs_field
+
+from ..types import UNSET, Unset
+
+from ..types import UNSET, Unset
+from typing import cast
+from typing import Union
+
+if TYPE_CHECKING:
+ from ..models.subscription_payload_detail import SubscriptionPayloadDetail
+
+
+
+
+
+T = TypeVar("T", bound="UpdateSubscriptionRequest")
+
+
+
+@_attrs_define
+class UpdateSubscriptionRequest:
+ """ A type that describes the details of the update subscription request.
+
+ Attributes:
+ destination_id (Union[Unset, str]): The unique identifier of the destination endpoint that will receive
+ notifications associated with this subscription. Use getDestinations to retrieve destination IDs.
+ payload (Union[Unset, SubscriptionPayloadDetail]): A type that describes the details of the subscription
+ payload.
+ status (Union[Unset, str]): Set the status of the subscription being updated to ENABLED or DISABLED. For
+ implementation help, refer to eBay API documentation
+ """
+
+ destination_id: Union[Unset, str] = UNSET
+ payload: Union[Unset, 'SubscriptionPayloadDetail'] = UNSET
+ status: Union[Unset, str] = UNSET
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
+
+
+
+
+
+ def to_dict(self) -> dict[str, Any]:
+ from ..models.subscription_payload_detail import SubscriptionPayloadDetail
+ destination_id = self.destination_id
+
+ payload: Union[Unset, dict[str, Any]] = UNSET
+ if not isinstance(self.payload, Unset):
+ payload = self.payload.to_dict()
+
+ status = self.status
+
+
+ field_dict: dict[str, Any] = {}
+ field_dict.update(self.additional_properties)
+ field_dict.update({
+ })
+ if destination_id is not UNSET:
+ field_dict["destinationId"] = destination_id
+ if payload is not UNSET:
+ field_dict["payload"] = payload
+ if status is not UNSET:
+ field_dict["status"] = status
+
+ return field_dict
+
+
+
+ @classmethod
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
+ from ..models.subscription_payload_detail import SubscriptionPayloadDetail
+ d = dict(src_dict)
+ destination_id = d.pop("destinationId", UNSET)
+
+ _payload = d.pop("payload", UNSET)
+ payload: Union[Unset, SubscriptionPayloadDetail]
+ if isinstance(_payload, Unset):
+ payload = UNSET
+ else:
+ payload = SubscriptionPayloadDetail.from_dict(_payload)
+
+
+
+
+ status = d.pop("status", UNSET)
+
+ update_subscription_request = cls(
+ destination_id=destination_id,
+ payload=payload,
+ status=status,
+ )
+
+
+ update_subscription_request.additional_properties = d
+ return update_subscription_request
+
+ @property
+ def additional_keys(self) -> list[str]:
+ return list(self.additional_properties.keys())
+
+ def __getitem__(self, key: str) -> Any:
+ return self.additional_properties[key]
+
+ def __setitem__(self, key: str, value: Any) -> None:
+ self.additional_properties[key] = value
+
+ def __delitem__(self, key: str) -> None:
+ del self.additional_properties[key]
+
+ def __contains__(self, key: str) -> bool:
+ return key in self.additional_properties
diff --git a/ebay_client/generated/notification/types.py b/ebay_client/generated/notification/types.py
new file mode 100644
index 0000000..2330892
--- /dev/null
+++ b/ebay_client/generated/notification/types.py
@@ -0,0 +1,53 @@
+""" Contains some shared types for properties """
+
+from collections.abc import Mapping, MutableMapping
+from http import HTTPStatus
+from typing import BinaryIO, Generic, Optional, TypeVar, Literal, Union, IO
+
+from attrs import define
+
+
+class Unset:
+ def __bool__(self) -> Literal[False]:
+ return False
+
+
+UNSET: Unset = Unset()
+
+# The types that `httpx.Client(files=)` can accept, copied from that library.
+FileContent = Union[IO[bytes], bytes, str]
+FileTypes = Union[
+ # (filename, file (or bytes), content_type)
+ tuple[Optional[str], FileContent, Optional[str]],
+ # (filename, file (or bytes), content_type, headers)
+ tuple[Optional[str], FileContent, Optional[str], Mapping[str, str]],
+]
+RequestFiles = list[tuple[str, FileTypes]]
+
+@define
+class File:
+ """ Contains information for file uploads """
+
+ payload: BinaryIO
+ file_name: Optional[str] = None
+ mime_type: Optional[str] = None
+
+ def to_tuple(self) -> FileTypes:
+ """ Return a tuple representation that httpx will accept for multipart/form-data """
+ return self.file_name, self.payload, self.mime_type
+
+
+T = TypeVar("T")
+
+
+@define
+class Response(Generic[T]):
+ """ A response from an endpoint """
+
+ status_code: HTTPStatus
+ content: bytes
+ headers: MutableMapping[str, str]
+ parsed: Optional[T]
+
+
+__all__ = ["UNSET", "File", "FileTypes", "RequestFiles", "Response", "Unset"]
diff --git a/ebay_client/inventory/__init__.py b/ebay_client/inventory/__init__.py
new file mode 100644
index 0000000..429a0e0
--- /dev/null
+++ b/ebay_client/inventory/__init__.py
@@ -0,0 +1,3 @@
+from ebay_client.inventory.client import InventoryClient
+
+__all__ = ["InventoryClient"]
diff --git a/ebay_client/inventory/client.py b/ebay_client/inventory/client.py
new file mode 100644
index 0000000..115154d
--- /dev/null
+++ b/ebay_client/inventory/client.py
@@ -0,0 +1,42 @@
+from __future__ import annotations
+
+from typing import Any
+
+from ebay_client.core.http.transport import ApiTransport
+
+INVENTORY_READ_SCOPE = "https://api.ebay.com/oauth/api_scope/sell.inventory.readonly"
+
+
+class InventoryClient:
+ def __init__(self, transport: ApiTransport) -> None:
+ self.transport = transport
+
+ def get_inventory_item(self, sku: str) -> dict[str, Any]:
+ return self.transport.request_json(
+ "GET",
+ f"/sell/inventory/v1/inventory_item/{sku}",
+ scopes=[INVENTORY_READ_SCOPE],
+ )
+
+ def get_inventory_items(self, *, limit: int | None = None, offset: int | None = None) -> dict[str, Any]:
+ return self.transport.request_json(
+ "GET",
+ "/sell/inventory/v1/inventory_item",
+ scopes=[INVENTORY_READ_SCOPE],
+ params={"limit": limit, "offset": offset},
+ )
+
+ def get_offer(self, offer_id: str) -> dict[str, Any]:
+ return self.transport.request_json(
+ "GET",
+ f"/sell/inventory/v1/offer/{offer_id}",
+ scopes=[INVENTORY_READ_SCOPE],
+ )
+
+ def get_offers(self, *, limit: int | None = None, offset: int | None = None, sku: str | None = None) -> dict[str, Any]:
+ return self.transport.request_json(
+ "GET",
+ "/sell/inventory/v1/offer",
+ scopes=[INVENTORY_READ_SCOPE],
+ params={"limit": limit, "offset": offset, "sku": sku},
+ )
diff --git a/ebay_client/notification/__init__.py b/ebay_client/notification/__init__.py
new file mode 100644
index 0000000..81fc4bc
--- /dev/null
+++ b/ebay_client/notification/__init__.py
@@ -0,0 +1,17 @@
+from ebay_client.notification.client import NotificationClient
+from ebay_client.notification.webhook import (
+ WebhookChallengeHandler,
+ WebhookEventEnvelope,
+ WebhookPublicKeyResolver,
+ WebhookSignatureParser,
+ WebhookSignatureValidator,
+)
+
+__all__ = [
+ "NotificationClient",
+ "WebhookChallengeHandler",
+ "WebhookEventEnvelope",
+ "WebhookPublicKeyResolver",
+ "WebhookSignatureParser",
+ "WebhookSignatureValidator",
+]
diff --git a/ebay_client/notification/client.py b/ebay_client/notification/client.py
new file mode 100644
index 0000000..9cd236a
--- /dev/null
+++ b/ebay_client/notification/client.py
@@ -0,0 +1,77 @@
+from __future__ import annotations
+
+from typing import Any
+
+from ebay_client.core.http.transport import ApiTransport
+
+NOTIFICATION_SCOPE = "https://api.ebay.com/oauth/api_scope"
+NOTIFICATION_SUBSCRIPTION_SCOPE = "https://api.ebay.com/oauth/api_scope/commerce.notification.subscription"
+NOTIFICATION_SUBSCRIPTION_READ_SCOPE = "https://api.ebay.com/oauth/api_scope/commerce.notification.subscription.readonly"
+
+
+class NotificationClient:
+ def __init__(self, transport: ApiTransport) -> None:
+ self.transport = transport
+
+ def get_topics(self, *, limit: int | None = None, continuation_token: str | None = None) -> dict[str, Any]:
+ return self.transport.request_json(
+ "GET",
+ "/commerce/notification/v1/topic",
+ scopes=[NOTIFICATION_SCOPE],
+ params={"limit": limit, "continuation_token": continuation_token},
+ )
+
+ def get_topic(self, topic_id: str) -> dict[str, Any]:
+ return self.transport.request_json(
+ "GET",
+ f"/commerce/notification/v1/topic/{topic_id}",
+ scopes=[NOTIFICATION_SCOPE],
+ )
+
+ def get_destinations(self, *, limit: int | None = None, continuation_token: str | None = None) -> dict[str, Any]:
+ return self.transport.request_json(
+ "GET",
+ "/commerce/notification/v1/destination",
+ scopes=[NOTIFICATION_SCOPE],
+ params={"limit": limit, "continuation_token": continuation_token},
+ )
+
+ def create_destination(self, payload: dict[str, Any]) -> dict[str, Any]:
+ return self.transport.request_json(
+ "POST",
+ "/commerce/notification/v1/destination",
+ scopes=[NOTIFICATION_SCOPE],
+ headers={"Content-Type": "application/json"},
+ json_body=payload,
+ )
+
+ def get_subscriptions(self, *, limit: int | None = None, continuation_token: str | None = None) -> dict[str, Any]:
+ return self.transport.request_json(
+ "GET",
+ "/commerce/notification/v1/subscription",
+ scopes=[NOTIFICATION_SCOPE, NOTIFICATION_SUBSCRIPTION_READ_SCOPE],
+ params={"limit": limit, "continuation_token": continuation_token},
+ )
+
+ def create_subscription(self, payload: dict[str, Any]) -> dict[str, Any]:
+ return self.transport.request_json(
+ "POST",
+ "/commerce/notification/v1/subscription",
+ scopes=[NOTIFICATION_SCOPE, NOTIFICATION_SUBSCRIPTION_SCOPE],
+ headers={"Content-Type": "application/json"},
+ json_body=payload,
+ )
+
+ def test_subscription(self, subscription_id: str) -> None:
+ self.transport.request_json(
+ "POST",
+ f"/commerce/notification/v1/subscription/{subscription_id}/test",
+ scopes=[NOTIFICATION_SCOPE, NOTIFICATION_SUBSCRIPTION_SCOPE],
+ )
+
+ def get_public_key(self, public_key_id: str) -> dict[str, Any]:
+ return self.transport.request_json(
+ "GET",
+ f"/commerce/notification/v1/public_key/{public_key_id}",
+ scopes=[NOTIFICATION_SCOPE],
+ )
diff --git a/ebay_client/notification/webhook.py b/ebay_client/notification/webhook.py
new file mode 100644
index 0000000..e3bc41b
--- /dev/null
+++ b/ebay_client/notification/webhook.py
@@ -0,0 +1,130 @@
+from __future__ import annotations
+
+import base64
+import hashlib
+from collections.abc import Callable
+from dataclasses import dataclass
+from datetime import UTC, datetime, timedelta
+from typing import Any
+
+from cryptography.exceptions import InvalidSignature
+from cryptography.hazmat.primitives import hashes, serialization
+from cryptography.hazmat.primitives.asymmetric import ec
+from pydantic import BaseModel, Field
+
+
+class WebhookEventEnvelope(BaseModel):
+ metadata: dict[str, Any] = Field(default_factory=dict)
+ notification_id: str | None = None
+ publish_date: str | None = None
+ topic_id: str | None = None
+ data: dict[str, Any] | list[Any] | None = None
+
+
+@dataclass(slots=True)
+class ParsedSignatureHeader:
+ key_id: str | None
+ signature: bytes | None
+ algorithm: str | None
+ digest: str | None
+ raw_parts: dict[str, str]
+
+
+class WebhookSignatureParser:
+ KEY_ALIASES = ("kid", "keyid", "key_id", "public_key_id")
+ SIGNATURE_ALIASES = ("sig", "signature")
+ ALGORITHM_ALIASES = ("alg", "algorithm")
+ DIGEST_ALIASES = ("digest",)
+
+ def parse(self, header_value: str) -> ParsedSignatureHeader:
+ separators = header_value.replace(";", ",").split(",")
+ parts: dict[str, str] = {}
+ for item in separators:
+ if "=" not in item:
+ continue
+ key, value = item.split("=", 1)
+ parts[key.strip().lower()] = value.strip().strip('"')
+
+ signature_value = self._first_match(parts, self.SIGNATURE_ALIASES)
+ signature = base64.b64decode(signature_value) if signature_value else None
+ return ParsedSignatureHeader(
+ key_id=self._first_match(parts, self.KEY_ALIASES),
+ signature=signature,
+ algorithm=self._first_match(parts, self.ALGORITHM_ALIASES),
+ digest=self._first_match(parts, self.DIGEST_ALIASES),
+ raw_parts=parts,
+ )
+
+ @staticmethod
+ def _first_match(parts: dict[str, str], aliases: tuple[str, ...]) -> str | None:
+ for alias in aliases:
+ if alias in parts:
+ return parts[alias]
+ return None
+
+
+class WebhookChallengeHandler:
+ @staticmethod
+ def build_challenge_response(*, challenge_code: str, verification_token: str, endpoint: str) -> str:
+ payload = f"{challenge_code}{verification_token}{endpoint}".encode("utf-8")
+ return hashlib.sha256(payload).hexdigest()
+
+ def build_response_body(self, *, challenge_code: str, verification_token: str, endpoint: str) -> dict[str, str]:
+ return {
+ "challengeResponse": self.build_challenge_response(
+ challenge_code=challenge_code,
+ verification_token=verification_token,
+ endpoint=endpoint,
+ )
+ }
+
+
+class WebhookPublicKeyResolver:
+ def __init__(self, fetcher: Callable[[str], dict[str, Any]], *, cache_ttl_seconds: int = 3600) -> None:
+ self.fetcher = fetcher
+ self.cache_ttl = timedelta(seconds=cache_ttl_seconds)
+ self._cache: dict[str, tuple[datetime, dict[str, Any]]] = {}
+
+ def resolve(self, public_key_id: str) -> dict[str, Any]:
+ cached = self._cache.get(public_key_id)
+ now = datetime.now(UTC)
+ if cached and cached[0] > now:
+ return cached[1]
+ payload = self.fetcher(public_key_id)
+ self._cache[public_key_id] = (now + self.cache_ttl, payload)
+ return payload
+
+
+class WebhookSignatureValidator:
+ def __init__(self, resolver: WebhookPublicKeyResolver, *, parser: WebhookSignatureParser | None = None) -> None:
+ self.resolver = resolver
+ self.parser = parser or WebhookSignatureParser()
+
+ def validate(self, *, header_value: str, body: bytes, message_builder: Callable[[bytes], bytes] | None = None) -> bool:
+ parsed = self.parser.parse(header_value)
+ if not parsed.key_id or not parsed.signature:
+ return False
+ key_payload = self.resolver.resolve(parsed.key_id)
+ pem = key_payload.get("key")
+ if not pem:
+ return False
+ public_key = serialization.load_pem_public_key(pem.encode("utf-8"))
+ digest_name = (parsed.digest or key_payload.get("digest") or "SHA256").upper()
+ digest = self._hash_algorithm(digest_name)
+ message = message_builder(body) if message_builder else body
+ try:
+ public_key.verify(parsed.signature, message, ec.ECDSA(digest))
+ return True
+ except InvalidSignature:
+ return False
+
+ @staticmethod
+ def _hash_algorithm(name: str) -> hashes.HashAlgorithm:
+ normalized = name.replace("-", "")
+ if normalized == "SHA1":
+ return hashes.SHA1()
+ if normalized == "SHA384":
+ return hashes.SHA384()
+ if normalized == "SHA512":
+ return hashes.SHA512()
+ return hashes.SHA256()
diff --git a/pyproject.toml b/pyproject.toml
new file mode 100644
index 0000000..7edc9c9
--- /dev/null
+++ b/pyproject.toml
@@ -0,0 +1,30 @@
+[build-system]
+requires = ["setuptools>=69", "wheel"]
+build-backend = "setuptools.build_meta"
+
+[project]
+name = "ebay-rest-client"
+version = "0.1.0"
+description = "REST-first eBay client with shared OAuth core and isolated OpenAPI-generated packages."
+readme = "README.md"
+requires-python = ">=3.11"
+dependencies = [
+ "cryptography>=44,<46",
+ "httpx>=0.27,<1",
+ "pydantic>=2.8,<3",
+ "PyYAML>=6,<7",
+]
+
+[project.optional-dependencies]
+dev = [
+ "openapi-python-client>=0.25,<0.26",
+ "pytest>=8,<9",
+ "pytest-httpx>=0.35,<0.36",
+]
+
+[tool.setuptools.packages.find]
+include = ["ebay_client*"]
+
+[tool.pytest.ini_options]
+testpaths = ["tests"]
+pythonpath = ["."]
diff --git a/scripts/generate_clients.py b/scripts/generate_clients.py
new file mode 100644
index 0000000..e7f4709
--- /dev/null
+++ b/scripts/generate_clients.py
@@ -0,0 +1,134 @@
+from __future__ import annotations
+
+import argparse
+import shutil
+import subprocess
+import sys
+import tempfile
+from dataclasses import dataclass
+from pathlib import Path
+
+import yaml
+
+
+ROOT = Path(__file__).resolve().parent.parent
+GENERATED_ROOT = ROOT / "ebay_client" / "generated"
+
+
+@dataclass(frozen=True)
+class ApiSpec:
+ name: str
+ spec_path: Path
+ output_path: Path
+ project_name: str
+ package_name: str
+
+
+API_SPECS = {
+ "notification": ApiSpec(
+ name="notification",
+ spec_path=ROOT / "commerce_notification_v1_oas3.yaml",
+ output_path=GENERATED_ROOT / "notification",
+ project_name="ebay-notification-generated",
+ package_name="notification_generated",
+ ),
+ "inventory": ApiSpec(
+ name="inventory",
+ spec_path=ROOT / "sell_inventory_v1_oas3.yaml",
+ output_path=GENERATED_ROOT / "inventory",
+ project_name="ebay-inventory-generated",
+ package_name="inventory_generated",
+ ),
+ "fulfillment": ApiSpec(
+ name="fulfillment",
+ spec_path=ROOT / "sell_fulfillment_v1_oas3.yaml",
+ output_path=GENERATED_ROOT / "fulfillment",
+ project_name="ebay-fulfillment-generated",
+ package_name="fulfillment_generated",
+ ),
+ "account": ApiSpec(
+ name="account",
+ spec_path=ROOT / "sell_account_v1_oas3.yaml",
+ output_path=GENERATED_ROOT / "account",
+ project_name="ebay-account-generated",
+ package_name="account_generated",
+ ),
+ "feed": ApiSpec(
+ name="feed",
+ spec_path=ROOT / "sell_feed_v1_oas3.yaml",
+ output_path=GENERATED_ROOT / "feed",
+ project_name="ebay-feed-generated",
+ package_name="feed_generated",
+ ),
+}
+
+
+def parse_args() -> argparse.Namespace:
+ parser = argparse.ArgumentParser(description="Generate isolated low-level clients from the eBay OpenAPI contracts.")
+ parser.add_argument("--api", choices=sorted(API_SPECS), help="Generate only one API package.")
+ parser.add_argument("--fail-on-warning", action="store_true", help="Fail if the generator emits warnings.")
+ return parser.parse_args()
+
+
+def build_config(spec: ApiSpec) -> dict[str, object]:
+ return {
+ "project_name_override": spec.project_name,
+ "package_name_override": spec.package_name,
+ "field_prefix": "field_",
+ "generate_all_tags": False,
+ "http_timeout": 30,
+ "literal_enums": False,
+ "post_hooks": [],
+ "use_path_prefixes_for_title_model_names": False,
+ }
+
+
+def run_generation(spec: ApiSpec, *, fail_on_warning: bool) -> None:
+ if not spec.spec_path.exists():
+ raise FileNotFoundError(f"OpenAPI spec not found: {spec.spec_path}")
+
+ with tempfile.TemporaryDirectory(prefix=f"ebay_{spec.name}_") as temp_dir_name:
+ temp_dir = Path(temp_dir_name)
+ config_path = temp_dir / "config.yaml"
+ temp_output = temp_dir / "output"
+ config_path.write_text(yaml.safe_dump(build_config(spec), sort_keys=True), encoding="utf-8")
+
+ command = [
+ sys.executable,
+ "-m",
+ "openapi_python_client",
+ "generate",
+ "--path",
+ str(spec.spec_path),
+ "--meta",
+ "none",
+ "--overwrite",
+ "--config",
+ str(config_path),
+ "--output-path",
+ str(temp_output),
+ ]
+ if fail_on_warning:
+ command.append("--fail-on-warning")
+
+ subprocess.run(command, check=True, cwd=str(ROOT))
+
+ generated_package = temp_output / spec.package_name
+ if not generated_package.exists():
+ generated_package = temp_output
+ if spec.output_path.exists():
+ shutil.rmtree(spec.output_path)
+ shutil.copytree(generated_package, spec.output_path)
+
+
+def main() -> int:
+ args = parse_args()
+ specs = [API_SPECS[args.api]] if args.api else [API_SPECS[name] for name in sorted(API_SPECS)]
+ for spec in specs:
+ print(f"Generating {spec.name} from {spec.spec_path.name} -> {spec.output_path}")
+ run_generation(spec, fail_on_warning=args.fail_on_warning)
+ return 0
+
+
+if __name__ == "__main__":
+ raise SystemExit(main())
diff --git a/sell_account_v1_oas3.yaml b/sell_account_v1_oas3.yaml
new file mode 100644
index 0000000..d38bd5e
--- /dev/null
+++ b/sell_account_v1_oas3.yaml
@@ -0,0 +1,4895 @@
+---
+openapi: "3.0.0"
+info:
+ title: "Account v1 API"
+ description: "The Account API gives sellers the ability to configure their\
+ \ eBay seller accounts, including the seller's policies (eBay business policies\
+ \ and seller-defined custom policies), opt in and out of eBay seller programs,\
+ \ configure sales tax tables, and get account information.
For details\
+ \ on the availability of the methods in this API, see Account API requirements and restrictions."
+ contact:
+ name: "eBay Inc,"
+ license:
+ name: "eBay API License Agreement"
+ url: "https://developer.ebay.com/join/api-license-agreement"
+ version: "v1.9.3"
+servers:
+- url: "https://api.ebay.com{basePath}"
+ description: "Production"
+ variables:
+ basePath:
+ default: "/sell/account/v1"
+paths:
+ /custom_policy/:
+ get:
+ tags:
+ - "custom_policy"
+ description: "This method retrieves the list of custom policies defined for\
+ \ a seller's account. To limit the returned custom policies, specify the policy_types\
+ \ query parameter."
+ operationId: "getCustomPolicies"
+ parameters:
+ - name: "policy_types"
+ in: "query"
+ description: "This query parameter specifies the type of custom policies to\
+ \ be returned.
Multiple policy types may be requested in a single\
+ \ call by providing a comma-delimited set of all policy types to be returned.
Note: Omitting this query parameter\
+ \ from a request will also return policies of all policy types.
\
+ \ See the CustomPolicyTypeEnum type for a list of supported\
+ \ values."
+ required: false
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/CustomPolicyResponse"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 20411:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid/Missing policyTypes {policyType}"
+ 20415:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid/Missing marketplaceId"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 20500:
+ domain: "API_ACCOUNT"
+ category: "APPLICATION"
+ description: "System error."
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.account"
+ - "https://api.ebay.com/oauth/api_scope/sell.account.readonly"
+ post:
+ tags:
+ - "custom_policy"
+ description: "This method creates a new custom policy that specifies the seller's\
+ \ terms for complying with local governmental regulations. Each Custom Policy\
+ \ targets a policyType. Multiple policies may be created as using the\
+ \ following custom policy types:- PRODUCT_COMPLIANCE: Product Compliance\
+ \ policies disclose product information as required for regulatory compliance.\
+ \
Note: A maximum of\
+ \ 60 Product Compliance policies per seller may be created. - TAKE_BACK:\
+ \ Takeback policies describe the seller's legal obligation to take back a\
+ \ previously purchased item when the buyer purchases a new one.
Note: A maximum of 18 Takeback policies\
+ \ per seller may be created.
A successful create policy call\
+ \ returns an HTTP status code of 201 Created with the system-generated\
+ \ policy ID included in the Location response header."
+ operationId: "createCustomPolicy"
+ parameters:
+ - name: "Content-Type"
+ in: "header"
+ description: "This header indicates the format of the request body provided\
+ \ by the client. Its value should be set to application/json.
\
+ \ For more information, refer to HTTP request headers."
+ required: true
+ schema:
+ type: "string"
+ requestBody:
+ description: "Request to create a new Custom Policy."
+ content:
+ application/json:
+ schema:
+ description: "Request to create a new Custom Policy."
+ $ref: "#/components/schemas/CustomPolicyCreateRequest"
+ required: true
+ responses:
+ "201":
+ description: "Created"
+ headers:
+ Location:
+ schema:
+ type: "string"
+ description: "The location response header contains the URL\
+ \ to the newly created custom policy. The URL includes the eBay-assigned\
+ \ custom_policy_id, which can be used to reference\
+ \ the policy."
+ content:
+ application/json:
+ schema:
+ type: "object"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 20417:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Maximum custom policy per site is reached"
+ 20418:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "This policy name is already used"
+ 20411:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid/Missing policyType {policyType}"
+ 20412:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid/Missing label"
+ 20413:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid/Missing name"
+ 20414:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid/Missing description"
+ 20415:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid/Missing marketplaceId"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 20500:
+ domain: "API_ACCOUNT"
+ category: "APPLICATION"
+ description: "System error."
+ "409":
+ description: "Policy Name already used/ Maximum no of policies per site\
+ \ reached"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.account"
+ /custom_policy/{custom_policy_id}:
+ get:
+ tags:
+ - "custom_policy"
+ description: "This method retrieves the custom policy specified by the custom_policy_id\
+ \ path parameter."
+ operationId: "getCustomPolicy"
+ parameters:
+ - name: "custom_policy_id"
+ in: "path"
+ description: "This path parameter is the unique identifier of the custom policy\
+ \ to retrieve.
This ID can be retrieved for a custom policy by using\
+ \ the getCustomPolicies method."
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/CustomPolicy"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 20416:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid/Missing customPolicyId"
+ 20415:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid/Missing marketplaceId"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 20500:
+ domain: "API_ACCOUNT"
+ category: "APPLICATION"
+ description: "System error."
+ "404":
+ description: "Not Found"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.account"
+ - "https://api.ebay.com/oauth/api_scope/sell.account.readonly"
+ put:
+ tags:
+ - "custom_policy"
+ description: "This method updates an existing custom policy specified by the\
+ \ custom_policy_id path parameter. Since this method overwrites the\
+ \ policy's name, label, and description fields, always\
+ \ include the complete and current text of all three policy fields in the\
+ \ request payload, even if they are not being updated.
For example,\
+ \ the value for the label field is to be updated, but the name\
+ \ and description values will remain unchanged. The existing name\
+ \ and description values, as they are defined in the current policy,\
+ \ must also be passed in.
A successful policy update call returns\
+ \ an HTTP status code of 204 No Content."
+ operationId: "updateCustomPolicy"
+ parameters:
+ - name: "custom_policy_id"
+ in: "path"
+ description: "This path parameter is the unique identifier of the custom policy\
+ \ to update.
Note: A list of custom\
+ \ policies defined for a seller's account that includes this ID can be retrieved\
+ \ by calling the getCustomPolicies method."
+ required: true
+ schema:
+ type: "string"
+ - name: "Content-Type"
+ in: "header"
+ description: "This header indicates the format of the request body provided\
+ \ by the client. Its value should be set to application/json.
\
+ \ For more information, refer to HTTP request headers."
+ required: true
+ schema:
+ type: "string"
+ requestBody:
+ description: "Request to update a current custom policy."
+ content:
+ application/json:
+ schema:
+ description: "Request to update a current custom policy."
+ $ref: "#/components/schemas/CustomPolicyRequest"
+ required: true
+ responses:
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 20416:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid/Missing customPolicyId"
+ 20418:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "This policy name is already used"
+ 20412:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid/Missing label"
+ 20413:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid/Missing name"
+ 20414:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid/Missing description"
+ 20415:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid/Missing marketplaceId"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 20500:
+ domain: "API_ACCOUNT"
+ category: "APPLICATION"
+ description: "System error."
+ "204":
+ description: "No Content"
+ "404":
+ description: "Not Found"
+ "409":
+ description: "Policy Name already used/ Maximum no of policies per site\
+ \ reached"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.account"
+ /fulfillment_policy/:
+ post:
+ tags:
+ - "fulfillment_policy"
+ description: "This method creates a new fulfillment policy for an eBay marketplace\
+ \ where the policy encapsulates seller's terms for fulfilling item purchases.\
+ \ Fulfillment policies include the shipment options that the seller offers\
+ \ to buyers.
A successful request returns the getFulfillmentPolicy\
+ \ URI to the new policy in the Location response header and the ID\
+ \ for the new policy is returned in the response payload. Tip: For details on creating and using the business policies supported\
+ \ by the Account API, see eBay business policies.
"
+ operationId: "createFulfillmentPolicy"
+ parameters:
+ - name: "Content-Type"
+ in: "header"
+ description: "This header indicates the format of the request body provided\
+ \ by the client. Its value should be set to application/json.
\
+ \ For more information, refer to HTTP request headers."
+ required: true
+ schema:
+ type: "string"
+ requestBody:
+ description: "Request to create a seller account fulfillment policy."
+ content:
+ application/json:
+ schema:
+ description: "Request to create a seller account fulfillment policy."
+ $ref: "#/components/schemas/FulfillmentPolicyRequest"
+ required: true
+ responses:
+ "201":
+ description: "Created"
+ headers:
+ Location:
+ schema:
+ type: "string"
+ description: "The location response header contains the URL\
+ \ to the newly created fulfillment policy. The URL includes the\
+ \ eBay-assigned fulfillmentPolicyId, which you can\
+ \ use to reference the policy."
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/SetFulfillmentPolicyResponse"
+ x-response-codes:
+ errors:
+ 20200:
+ domain: "API_ACCOUNT"
+ category: "BUSINESS"
+ description: "Warning. {additionalInfo}"
+ 20201:
+ domain: "API_ACCOUNT"
+ category: "BUSINESS"
+ description: "{fieldName} (Click and Collect Program) can not be enabled\
+ \ for this seller or marketplace."
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 20400:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid request. {additionalInfo}"
+ 20401:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Missing field {fieldName}. {additionalInfo}"
+ 20402:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid input. {additionalInfo}"
+ 20403:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid {fieldName}. {additionalInfo}"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 20500:
+ domain: "API_ACCOUNT"
+ category: "APPLICATION"
+ description: "System error."
+ 20501:
+ domain: "API_ACCOUNT"
+ category: "APPLICATION"
+ description: "Service unavailable. Please try again in next 24 hours."
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.account"
+ /fulfillment_policy/{fulfillmentPolicyId}:
+ get:
+ tags:
+ - "fulfillment_policy"
+ description: "This method retrieves the complete details of a fulfillment policy.\
+ \ Supply the ID of the policy you want to retrieve using the fulfillmentPolicyId\
+ \ path parameter."
+ operationId: "getFulfillmentPolicy"
+ parameters:
+ - name: "fulfillmentPolicyId"
+ in: "path"
+ description: "This path parameter specifies the ID of the fulfillment policy\
+ \ you want to retrieve.
This ID can be retrieved for a fulfillment\
+ \ policy by using the getFulfillmentPolicies method."
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/FulfillmentPolicy"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 20403:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid {fieldName}. {additionalInfo}"
+ 20404:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "{fieldName} not found."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 20500:
+ domain: "API_ACCOUNT"
+ category: "APPLICATION"
+ description: "System error."
+ 20501:
+ domain: "API_ACCOUNT"
+ category: "APPLICATION"
+ description: "Service unavailable. Please try again in next 24 hours."
+ "404":
+ description: "Not Found"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.account"
+ - "https://api.ebay.com/oauth/api_scope/sell.account.readonly"
+ put:
+ tags:
+ - "fulfillment_policy"
+ description: "This method updates an existing fulfillment policy. Specify the\
+ \ policy you want to update using the fulfillment_policy_id path parameter.\
+ \ Supply a complete policy payload with the updates you want to make; this\
+ \ call overwrites the existing policy with the new details specified in the\
+ \ payload."
+ operationId: "updateFulfillmentPolicy"
+ parameters:
+ - name: "fulfillmentPolicyId"
+ in: "path"
+ description: "This path parameter specifies the ID of the fulfillment policy\
+ \ you want to update.
This ID can be retrieved for a specific fulfillment\
+ \ policy by using the getFulfillmentPolicies method."
+ required: true
+ schema:
+ type: "string"
+ - name: "Content-Type"
+ in: "header"
+ description: "This header indicates the format of the request body provided\
+ \ by the client. Its value should be set to application/json.
\
+ \ For more information, refer to HTTP request headers."
+ required: true
+ schema:
+ type: "string"
+ requestBody:
+ description: "Fulfillment policy request"
+ content:
+ application/json:
+ schema:
+ description: "Fulfillment policy request"
+ $ref: "#/components/schemas/FulfillmentPolicyRequest"
+ required: true
+ responses:
+ "200":
+ description: "OK"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/SetFulfillmentPolicyResponse"
+ x-response-codes:
+ errors:
+ 20200:
+ domain: "API_ACCOUNT"
+ category: "BUSINESS"
+ description: "Warning. {additionalInfo}"
+ 20201:
+ domain: "API_ACCOUNT"
+ category: "BUSINESS"
+ description: "{fieldName} (Click and Collect Program) can not be enabled\
+ \ for this seller or marketplace."
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 20400:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid request. {additionalInfo}"
+ 20401:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Missing field {fieldName}. {additionalInfo}"
+ 20402:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid input. {additionalInfo}"
+ 20403:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid {fieldName}. {additionalInfo}"
+ 20404:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "{fieldName} not found."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 20500:
+ domain: "API_ACCOUNT"
+ category: "APPLICATION"
+ description: "System error."
+ 20501:
+ domain: "API_ACCOUNT"
+ category: "APPLICATION"
+ description: "Service unavailable. Please try again in next 24 hours."
+ "404":
+ description: "Not Found"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.account"
+ delete:
+ tags:
+ - "fulfillment_policy"
+ description: "This method deletes a fulfillment policy. Supply the ID of the\
+ \ policy you want to delete in the fulfillmentPolicyId path parameter."
+ operationId: "deleteFulfillmentPolicy"
+ parameters:
+ - name: "fulfillmentPolicyId"
+ in: "path"
+ description: "This path parameter specifies the ID of the fulfillment policy\
+ \ to delete.
This ID can be retrieved for a fulfillment policy by\
+ \ using the getFulfillmentPolicies method."
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 20401:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Missing field {fieldName}. {additionalInfo}"
+ 20402:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid input. {additionalInfo}"
+ 20403:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid {fieldName}. {additionalInfo}"
+ 20404:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "{fieldName} not found."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 20500:
+ domain: "API_ACCOUNT"
+ category: "APPLICATION"
+ description: "System error."
+ 20501:
+ domain: "API_ACCOUNT"
+ category: "APPLICATION"
+ description: "Service unavailable. Please try again in next 24 hours."
+ "204":
+ description: "No Content"
+ "404":
+ description: "Not Found"
+ "409":
+ description: "Conflict"
+ x-response-codes:
+ errors:
+ 21409:
+ domain: "API_ACCOUNT"
+ category: "BUSINESS"
+ description: "Invalid default for category type. {additionalInfo}"
+ 20409:
+ domain: "API_ACCOUNT"
+ category: "BUSINESS"
+ description: "Invalid default policy type. {additionalInfo}"
+ 22409:
+ domain: "API_ACCOUNT"
+ category: "BUSINESS"
+ description: "Invalid target default policy. {additionalInfo}"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.account"
+ /fulfillment_policy:
+ get:
+ tags:
+ - "fulfillment_policy"
+ description: "This method retrieves all the fulfillment policies configured\
+ \ for the marketplace you specify using the marketplace_id query\
+ \ parameter."
+ operationId: "getFulfillmentPolicies"
+ parameters:
+ - name: "Content-Language"
+ in: "header"
+ description: "Get the correct policies for a marketplace that supports multiple\
+ \ locales using the Content-Language request header. For example,\
+ \ get the policies for the French locale of the Canadian marketplace by\
+ \ specifying fr-CA for the Content-Language header.\
+ \ Likewise, target the Dutch locale of the Belgium marketplace by setting\
+ \ Content-Language: nl-BE. For details on header values, see\
+ \ HTTP request headers."
+ required: false
+ schema:
+ type: "string"
+ - name: "marketplace_id"
+ in: "query"
+ description: "This query parameter specifies the eBay marketplace of the policies\
+ \ you want to retrieve. For implementation help, refer to eBay API documentation\
+ \ at https://developer.ebay.com/api-docs/sell/account/types/ba:MarketplaceIdEnum"
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/FulfillmentPolicyResponse"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 20401:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Missing field {fieldName}. {additionalInfo}"
+ 20403:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid {fieldName}. {additionalInfo}"
+ 20404:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "{fieldName} not found."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 20500:
+ domain: "API_ACCOUNT"
+ category: "APPLICATION"
+ description: "System error."
+ 20501:
+ domain: "API_ACCOUNT"
+ category: "APPLICATION"
+ description: "Service unavailable. Please try again in next 24 hours."
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.account"
+ - "https://api.ebay.com/oauth/api_scope/sell.account.readonly"
+ /fulfillment_policy/get_by_policy_name:
+ get:
+ tags:
+ - "fulfillment_policy"
+ description: "This method retrieves the details for a specific fulfillment policy.\
+ \ In the request, supply both the policy name and its associated\
+ \ marketplace_id as query parameters."
+ operationId: "getFulfillmentPolicyByName"
+ parameters:
+ - name: "Content-Language"
+ in: "header"
+ description: "Get the correct policies for a marketplace that supports multiple\
+ \ locales using the Content-Language request header. For example,\
+ \ get the policies for the French locale of the Canadian marketplace by\
+ \ specifying fr-CA for the Content-Language header.\
+ \ Likewise, target the Dutch locale of the Belgium marketplace by setting\
+ \ Content-Language: nl-BE. For details on header values, see\
+ \ HTTP request headers."
+ required: false
+ schema:
+ type: "string"
+ - name: "marketplace_id"
+ in: "query"
+ description: "This query parameter specifies the eBay marketplace of the policy\
+ \ you want to retrieve. For implementation help, refer to eBay API documentation\
+ \ at https://developer.ebay.com/api-docs/sell/account/types/ba:MarketplaceIdEnum"
+ required: true
+ schema:
+ type: "string"
+ - name: "name"
+ in: "query"
+ description: "This query parameter specifies the seller-defined name of the\
+ \ fulfillment policy you want to retrieve.
This value can be retrieved\
+ \ for a fulfillment policy by using the getFulfillmentPolicies method."
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/FulfillmentPolicy"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 20401:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Missing field {fieldName}. {additionalInfo}"
+ 20403:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid {fieldName}. {additionalInfo}"
+ 20404:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "{fieldName} not found."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 20500:
+ domain: "API_ACCOUNT"
+ category: "APPLICATION"
+ description: "System error."
+ 20501:
+ domain: "API_ACCOUNT"
+ category: "APPLICATION"
+ description: "Service unavailable. Please try again in next 24 hours."
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.account"
+ - "https://api.ebay.com/oauth/api_scope/sell.account.readonly"
+ /payment_policy:
+ get:
+ tags:
+ - "payment_policy"
+ description: "This method retrieves all the payment business policies configured\
+ \ for the marketplace you specify using the marketplace_id query\
+ \ parameter."
+ operationId: "getPaymentPolicies"
+ parameters:
+ - name: "marketplace_id"
+ in: "query"
+ description: "This query parameter specifies the eBay marketplace of the policies\
+ \ you want to retrieve. For implementation help, refer to eBay API documentation\
+ \ at https://developer.ebay.com/api-docs/sell/account/types/ba:MarketplaceIdEnum"
+ required: true
+ schema:
+ type: "string"
+ - name: "Content-Language"
+ in: "header"
+ description: "Get the correct policies for a marketplace that supports multiple\
+ \ locales using the Content-Language request header. For example,\
+ \ get the policies for the French locale of the Canadian marketplace by\
+ \ specifying fr-CA for the Content-Language header.\
+ \ Likewise, target the Dutch locale of the Belgium marketplace by setting\
+ \ Content-Language: nl-BE. For details on header values, see\
+ \ HTTP request headers."
+ required: false
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/PaymentPolicyResponse"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 20401:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Missing field {fieldName}. {additionalInfo}"
+ 20403:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid {fieldName}. {additionalInfo}"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 20500:
+ domain: "API_ACCOUNT"
+ category: "APPLICATION"
+ description: "System error."
+ 20501:
+ domain: "API_ACCOUNT"
+ category: "APPLICATION"
+ description: "Service unavailable. Please try again in next 24 hours."
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.account"
+ - "https://api.ebay.com/oauth/api_scope/sell.account.readonly"
+ post:
+ tags:
+ - "payment_policy"
+ description: "This method creates a new payment policy where the policy encapsulates\
+ \ seller's terms for order payments.
A successful request returns\
+ \ the getPaymentPolicy URI to the new policy in the Location\
+ \ response header and the ID for the new policy is returned in the response\
+ \ payload. Tip: For details on creating and\
+ \ using the business policies supported by the Account API, see eBay business\
+ \ policies.
"
+ operationId: "createPaymentPolicy"
+ parameters:
+ - name: "Content-Type"
+ in: "header"
+ description: "This header indicates the format of the request body provided\
+ \ by the client. Its value should be set to application/json.
\
+ \ For more information, refer to HTTP request headers."
+ required: true
+ schema:
+ type: "string"
+ requestBody:
+ description: "Payment policy request"
+ content:
+ application/json:
+ schema:
+ description: "Payment policy request"
+ $ref: "#/components/schemas/PaymentPolicyRequest"
+ required: true
+ responses:
+ "201":
+ description: "Created"
+ headers:
+ Location:
+ schema:
+ type: "string"
+ description: "The location response header contains the URL\
+ \ to the newly created payment policy. The URL includes the eBay-assigned\
+ \ paymentPolicyId, which you can use to reference the\
+ \ policy."
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/SetPaymentPolicyResponse"
+ x-response-codes:
+ errors:
+ 20200:
+ domain: "API_ACCOUNT"
+ category: "BUSINESS"
+ description: "Warning. {additionalInfo}"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 20400:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid request. {additionalInfo}"
+ 20401:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Missing field {fieldName}. {additionalInfo}"
+ 20403:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid {fieldName}. {additionalInfo}"
+ 20404:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "{fieldName} not found."
+ 20405:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid payment method. {fieldName}"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 20500:
+ domain: "API_ACCOUNT"
+ category: "APPLICATION"
+ description: "System error."
+ 20501:
+ domain: "API_ACCOUNT"
+ category: "APPLICATION"
+ description: "Service unavailable. Please try again in next 24 hours."
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.account"
+ /payment_policy/{payment_policy_id}:
+ get:
+ tags:
+ - "payment_policy"
+ description: "This method retrieves the complete details of a payment policy.\
+ \ Supply the ID of the policy you want to retrieve using the paymentPolicyId\
+ \ path parameter."
+ operationId: "getPaymentPolicy"
+ parameters:
+ - name: "payment_policy_id"
+ in: "path"
+ description: "This path parameter specifies the ID of the payment policy you\
+ \ want to retrieve.
This ID can be retrieved for a payment policy\
+ \ by using the getPaymentPolices method."
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/PaymentPolicy"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 20403:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid {fieldName}. {additionalInfo}"
+ 20404:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "{fieldName} not found."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 20500:
+ domain: "API_ACCOUNT"
+ category: "APPLICATION"
+ description: "System error."
+ 20501:
+ domain: "API_ACCOUNT"
+ category: "APPLICATION"
+ description: "Service unavailable. Please try again in next 24 hours."
+ "404":
+ description: "Not Found"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.account"
+ - "https://api.ebay.com/oauth/api_scope/sell.account.readonly"
+ put:
+ tags:
+ - "payment_policy"
+ description: "This method updates an existing payment policy. Specify the policy\
+ \ you want to update using the payment_policy_id path parameter. Supply\
+ \ a complete policy payload with the updates you want to make; this call overwrites\
+ \ the existing policy with the new details specified in the payload."
+ operationId: "updatePaymentPolicy"
+ parameters:
+ - name: "payment_policy_id"
+ in: "path"
+ description: "This path parameter specifies the ID of the payment policy you\
+ \ want to update.
This ID can be retrieved for a payment policy\
+ \ by using the getPaymentPolices method."
+ required: true
+ schema:
+ type: "string"
+ - name: "Content-Type"
+ in: "header"
+ description: "This header indicates the format of the request body provided\
+ \ by the client. Its value should be set to application/json.
\
+ \ For more information, refer to HTTP request headers."
+ required: true
+ schema:
+ type: "string"
+ requestBody:
+ description: "Payment policy request"
+ content:
+ application/json:
+ schema:
+ description: "Payment policy request"
+ $ref: "#/components/schemas/PaymentPolicyRequest"
+ required: true
+ responses:
+ "200":
+ description: "OK"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/SetPaymentPolicyResponse"
+ x-response-codes:
+ errors:
+ 20200:
+ domain: "API_ACCOUNT"
+ category: "BUSINESS"
+ description: "Warning. {additionalInfo}"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 20400:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid request. {additionalInfo}"
+ 20401:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Missing field {fieldName}. {additionalInfo}"
+ 20402:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid input. {additionalInfo}"
+ 20403:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid {fieldName}. {additionalInfo}"
+ 20404:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "{fieldName} not found."
+ 20405:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid payment method. {fieldName}"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 20500:
+ domain: "API_ACCOUNT"
+ category: "APPLICATION"
+ description: "System error."
+ 20501:
+ domain: "API_ACCOUNT"
+ category: "APPLICATION"
+ description: "Service unavailable. Please try again in next 24 hours."
+ "404":
+ description: "Not Found"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.account"
+ delete:
+ tags:
+ - "payment_policy"
+ description: "This method deletes a payment policy. Supply the ID of the policy\
+ \ you want to delete in the paymentPolicyId path parameter. "
+ operationId: "deletePaymentPolicy"
+ parameters:
+ - name: "payment_policy_id"
+ in: "path"
+ description: "This path parameter specifies the unique identifier of the payment\
+ \ policy you want to delete.
This ID can be retrieved for a payment\
+ \ policy by using the getPaymentPolices method."
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 20401:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Missing field {fieldName}. {additionalInfo}"
+ 20402:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid input. {additionalInfo}"
+ 20403:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid {fieldName}. {additionalInfo}"
+ 20404:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "{fieldName} not found."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 20500:
+ domain: "API_ACCOUNT"
+ category: "APPLICATION"
+ description: "System error."
+ 20501:
+ domain: "API_ACCOUNT"
+ category: "APPLICATION"
+ description: "Service unavailable. Please try again in next 24 hours."
+ "204":
+ description: "No Content"
+ "404":
+ description: "Not Found"
+ "409":
+ description: "Conflict"
+ x-response-codes:
+ errors:
+ 21409:
+ domain: "API_ACCOUNT"
+ category: "BUSINESS"
+ description: "Invalid default for category type. {additionalInfo}"
+ 20409:
+ domain: "API_ACCOUNT"
+ category: "BUSINESS"
+ description: "Invalid default policy type. {additionalInfo}"
+ 22409:
+ domain: "API_ACCOUNT"
+ category: "BUSINESS"
+ description: "Invalid target default policy. {additionalInfo}"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.account"
+ /payment_policy/get_by_policy_name:
+ get:
+ tags:
+ - "payment_policy"
+ description: "This method retrieves the details of a specific payment policy.\
+ \ Supply both the policy name and its associated marketplace_id\
+ \ in the request query parameters."
+ operationId: "getPaymentPolicyByName"
+ parameters:
+ - name: "Content-Language"
+ in: "header"
+ description: "Get the correct policy for a marketplace that supports multiple\
+ \ locales using the Content-Language request header. For example,\
+ \ get a policy for the French locale of the Canadian marketplace by specifying\
+ \ fr-CA for the Content-Language header. Likewise,\
+ \ target the Dutch locale of the Belgium marketplace by setting Content-Language:\
+ \ nl-BE. For details on header values, see HTTP request headers."
+ required: false
+ schema:
+ type: "string"
+ - name: "marketplace_id"
+ in: "query"
+ description: "This query parameter specifies the eBay marketplace of the policy\
+ \ you want to retrieve. For implementation help, refer to eBay API documentation\
+ \ at https://developer.ebay.com/api-docs/sell/account/types/ba:MarketplaceIdEnum"
+ required: true
+ schema:
+ type: "string"
+ - name: "name"
+ in: "query"
+ description: "This query parameter specifies the seller-defined name of the\
+ \ payment policy you want to retrieve.
This value can be retrieved\
+ \ for a payment policy by using the getPaymentPolicies method."
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/PaymentPolicy"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 20401:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Missing field {fieldName}. {additionalInfo}"
+ 20403:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid {fieldName}. {additionalInfo}"
+ 20404:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "{fieldName} not found."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 20500:
+ domain: "API_ACCOUNT"
+ category: "APPLICATION"
+ description: "System error."
+ 20501:
+ domain: "API_ACCOUNT"
+ category: "APPLICATION"
+ description: "Service unavailable. Please try again in next 24 hours."
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.account"
+ - "https://api.ebay.com/oauth/api_scope/sell.account.readonly"
+ /payments_program/{marketplace_id}/{payments_program_type}:
+ get:
+ tags:
+ - "payments_program"
+ description: "Note: This method is no longer\
+ \ applicable, as all seller accounts globally have been enabled for the new\
+ \ eBay payment and checkout flow.
This method returns whether or\
+ \ not the user is opted-in to the specified payments program. Sellers opt-in\
+ \ to payments programs by marketplace and you use the marketplace_id\
+ \ path parameter to specify the marketplace of the status flag you want returned."
+ operationId: "getPaymentsProgram"
+ parameters:
+ - name: "marketplace_id"
+ in: "path"
+ description: "This path parameter specifies the eBay marketplace of the payments\
+ \ program for which you want to retrieve the seller's status."
+ required: true
+ schema:
+ type: "string"
+ - name: "payments_program_type"
+ in: "path"
+ description: "This path parameter specifies the payments program whose status\
+ \ is returned by the call."
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/PaymentsProgramResponse"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 20408:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "No payment program available. The user may not be registered\
+ \ to the specified site or the site may not be supported by the\
+ \ payments program."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 20500:
+ domain: "API_ACCOUNT"
+ category: "APPLICATION"
+ description: "Application error"
+ "404":
+ description: "Not Found"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.account"
+ - "https://api.ebay.com/oauth/api_scope/sell.account.readonly"
+ /payments_program/{marketplace_id}/{payments_program_type}/onboarding:
+ get:
+ tags:
+ - "onboarding"
+ description: "Note: This method is no longer\
+ \ applicable, as all seller accounts globally have been enabled for the new\
+ \ eBay payment and checkout flow.
This method retrieves a seller's\
+ \ onboarding status for a payments program for a specified marketplace. The\
+ \ overall onboarding status of the seller and the status of each onboarding\
+ \ step is returned."
+ operationId: "getPaymentsProgramOnboarding"
+ parameters:
+ - name: "marketplace_id"
+ in: "path"
+ description: "The eBay marketplace ID associated with the onboarding status\
+ \ to retrieve."
+ required: true
+ schema:
+ type: "string"
+ - name: "payments_program_type"
+ in: "path"
+ description: "The type of payments program whose status is returned by the\
+ \ method."
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/PaymentsProgramOnboardingResponse"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 20408:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "No payments program available. The user may not be registered\
+ \ to the specified site or the site may not be supported by the\
+ \ payments program."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 20500:
+ domain: "API_ACCOUNT"
+ category: "APPLICATION"
+ description: "Application error"
+ "404":
+ description: "Not Found"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.account"
+ - "https://api.ebay.com/oauth/api_scope/sell.account.readonly"
+ /privilege:
+ get:
+ tags:
+ - "privilege"
+ description: "This method retrieves the seller's current set of privileges,\
+ \ including whether or not the seller's eBay registration has been completed,\
+ \ as well as the details of their site-wide sellingLimit (the amount\
+ \ and quantity they can sell on a given day)."
+ operationId: "getPrivileges"
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/SellingPrivileges"
+ "400":
+ description: "Bad Request"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 20500:
+ domain: "API_ACCOUNT"
+ category: "APPLICATION"
+ description: "System error."
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.account"
+ - "https://api.ebay.com/oauth/api_scope/sell.account.readonly"
+ /program/get_opted_in_programs:
+ get:
+ tags:
+ - "program"
+ description: "This method gets a list of the seller programs that the seller\
+ \ has opted-in to."
+ operationId: "getOptedInPrograms"
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Programs"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 20404:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "{fieldName} not found."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 20500:
+ domain: "API_ACCOUNT"
+ category: "APPLICATION"
+ description: "System error."
+ 20501:
+ domain: "API_ACCOUNT"
+ category: "APPLICATION"
+ description: "Service unavailable. Please try again in next 24 hours."
+ "404":
+ description: "Not Found"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.account"
+ - "https://api.ebay.com/oauth/api_scope/sell.account.readonly"
+ /program/opt_in:
+ post:
+ tags:
+ - "program"
+ description: "This method opts the seller in to an eBay seller program. Refer\
+ \ to the Account API overview for information about available eBay seller\
+ \ programs.
Note: It can take up to\
+ \ 24-hours for eBay to process your request to opt-in to a Seller Program.\
+ \ Use the getOptedInPrograms call to check the status of your\
+ \ request after the processing period has passed."
+ operationId: "optInToProgram"
+ parameters:
+ - name: "Content-Type"
+ in: "header"
+ description: "This header indicates the format of the request body provided\
+ \ by the client. Its value should be set to application/json.
\
+ \ For more information, refer to HTTP request headers."
+ required: true
+ schema:
+ type: "string"
+ requestBody:
+ description: "Program being opted-in to."
+ content:
+ application/json:
+ schema:
+ description: "Program being opted-in to."
+ $ref: "#/components/schemas/Program"
+ required: true
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ type: "object"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 20401:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Missing field {fieldName}. {additionalInfo}"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 20500:
+ domain: "API_ACCOUNT"
+ category: "APPLICATION"
+ description: "System error."
+ 20501:
+ domain: "API_ACCOUNT"
+ category: "APPLICATION"
+ description: "Service unavailable. Please try again in next 24 hours."
+ "404":
+ description: "Not Found"
+ "409":
+ description: "Conflict"
+ x-response-codes:
+ errors:
+ 25803:
+ domain: "API_ACCOUNT"
+ category: "BUSINESS"
+ description: "{fieldName} already exists."
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.account"
+ /program/opt_out:
+ post:
+ tags:
+ - "program"
+ description: "This method opts the seller out of a seller program in which they\
+ \ are currently opted in to. A seller can retrieve a list of the seller programs\
+ \ they are opted-in to using the getOptedInPrograms method."
+ operationId: "optOutOfProgram"
+ parameters:
+ - name: "Content-Type"
+ in: "header"
+ description: "This header indicates the format of the request body provided\
+ \ by the client. Its value should be set to application/json.
\
+ \ For more information, refer to HTTP request headers."
+ required: true
+ schema:
+ type: "string"
+ requestBody:
+ description: "Program being opted-out of."
+ content:
+ application/json:
+ schema:
+ description: "Program being opted-out of."
+ $ref: "#/components/schemas/Program"
+ required: true
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ type: "object"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 20401:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Missing field {fieldName}. {additionalInfo}"
+ 25804:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "{fieldName} already exists"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 20500:
+ domain: "API_ACCOUNT"
+ category: "APPLICATION"
+ description: "System error."
+ 20501:
+ domain: "API_ACCOUNT"
+ category: "APPLICATION"
+ description: "Service unavailable. Please try again in next 24 hours."
+ "404":
+ description: "Not Found"
+ "409":
+ description: "Conflict"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.account"
+ /rate_table:
+ get:
+ tags:
+ - "rate_table"
+ description: "This method retrieves a seller's shipping rate tables for\
+ \ the country specified in the country_code query parameter. If you\
+ \ call this method without specifying a country code, the call returns all\
+ \ of the seller's shipping rate tables.
The method's response includes\
+ \ a rateTableId for each table defined by the seller. This rateTableId\
+ \ value is used in add/revise item call or in create/update fulfillment business\
+ \ policy call to specify the shipping rate table to use for that policy's\
+ \ domestic or international shipping options.
This call currently\
+ \ supports getting rate tables related to the following marketplaces: United\
+ \ States, Canada, United Kingdom, Germany, Australia, France, Italy, and Spain.\
+ \ Note: Rate tables created with the Trading\
+ \ API might not have been assigned a rateTableId at the time of their\
+ \ creation. This method can assign and return rateTableId values for\
+ \ rate tables with missing IDs if you make a request using the country_code\
+ \ where the seller has defined rate tables.
Sellers can define\
+ \ up to 40 shipping rate tables for their account, which lets them set up\
+ \ different rate tables for each of the marketplaces they sell into. Go to\
+ \ Shipping rate tables in My\
+ \ eBay to create and update rate tables."
+ operationId: "getRateTables"
+ parameters:
+ - name: "country_code"
+ in: "query"
+ description: "This query parameter specifies the two-letter ISO 3166 code\
+ \ of country for which you want shipping rate table information. If you\
+ \ do not specify a country code, the request returns all of the seller's\
+ \ defined shipping rate tables for all eBay marketplaces. For implementation\
+ \ help, refer to eBay API documentation at https://developer.ebay.com/api-docs/sell/account/types/ba:CountryCodeEnum"
+ required: false
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/RateTableResponse"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 20403:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid {fieldName}. {additionalInfo}"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 20500:
+ domain: "API_ACCOUNT"
+ category: "APPLICATION"
+ description: "System error."
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.account"
+ - "https://api.ebay.com/oauth/api_scope/sell.account.readonly"
+ /return_policy:
+ get:
+ tags:
+ - "return_policy"
+ description: "This method retrieves all the return policies configured for the\
+ \ marketplace you specify using the marketplace_id query parameter."
+ operationId: "getReturnPolicies"
+ parameters:
+ - name: "Content-Language"
+ in: "header"
+ description: "Get the correct policies for a marketplace that supports multiple\
+ \ locales using the Content-Language request header. For example,\
+ \ get the policies for the French locale of the Canadian marketplace by\
+ \ specifying fr-CA for the Content-Language header.\
+ \ Likewise, target the Dutch locale of the Belgium marketplace by setting\
+ \ Content-Language: nl-BE. For details on header values, see\
+ \ HTTP request headers."
+ required: false
+ schema:
+ type: "string"
+ - name: "marketplace_id"
+ in: "query"
+ description: "This query parameter specifies the ID of the eBay marketplace\
+ \ of the policies you want to retrieve. For implementation help, refer to\
+ \ eBay API documentation at https://developer.ebay.com/api-docs/sell/account/types/ba:MarketplaceIdEnum"
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ReturnPolicyResponse"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 20401:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Missing field {fieldName}. {additionalInfo}"
+ 20403:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid {fieldName}. {additionalInfo}"
+ 20404:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "{fieldName} not found."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 20500:
+ domain: "API_ACCOUNT"
+ category: "APPLICATION"
+ description: "System error."
+ 20501:
+ domain: "API_ACCOUNT"
+ category: "APPLICATION"
+ description: "Service unavailable. Please try again in next 24 hours."
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.account"
+ - "https://api.ebay.com/oauth/api_scope/sell.account.readonly"
+ post:
+ tags:
+ - "return_policy"
+ description: "This method creates a new return policy where the policy encapsulates\
+ \ seller's terms for returning items.
Each policy targets a specific\
+ \ marketplace, and you can create multiple policies for each marketplace.\
+ \ Return policies are not applicable to motor-vehicle listings.
A successful\
+ \ request returns the getReturnPolicy URI to the new policy in the\
+ \ Location response header and the ID for the new policy is returned\
+ \ in the response payload. Tip: For details\
+ \ on creating and using the business policies supported by the Account API,\
+ \ see eBay business policies.
"
+ operationId: "createReturnPolicy"
+ parameters:
+ - name: "Content-Type"
+ in: "header"
+ description: "This header indicates the format of the request body provided\
+ \ by the client. Its value should be set to application/json.
\
+ \ For more information, refer to HTTP request headers."
+ required: true
+ schema:
+ type: "string"
+ requestBody:
+ description: "Return policy request"
+ content:
+ application/json:
+ schema:
+ description: "Return policy request"
+ $ref: "#/components/schemas/ReturnPolicyRequest"
+ required: true
+ responses:
+ "201":
+ description: "Created"
+ headers:
+ Location:
+ schema:
+ type: "string"
+ description: "The location response header contains the URL\
+ \ to the newly created return policy. The URL includes the eBay-assigned\
+ \ returnPolicyId, which you can use to reference the\
+ \ policy."
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/SetReturnPolicyResponse"
+ x-response-codes:
+ errors:
+ 20200:
+ domain: "API_ACCOUNT"
+ category: "BUSINESS"
+ description: "Warning. {additionalInfo}"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 20400:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid request. {additionalInfo}"
+ 20401:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Missing field ."
+ 20406:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid return option"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 20500:
+ domain: "API_ACCOUNT"
+ category: "APPLICATION"
+ description: "System error."
+ 20501:
+ domain: "API_ACCOUNT"
+ category: "APPLICATION"
+ description: "Service unavailable. Please try again in next 24 hours."
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.account"
+ /return_policy/{return_policy_id}:
+ get:
+ tags:
+ - "return_policy"
+ description: "This method retrieves the complete details of the return policy\
+ \ specified by the returnPolicyId path parameter."
+ operationId: "getReturnPolicy"
+ parameters:
+ - name: "return_policy_id"
+ in: "path"
+ description: "This path parameter specifies the unique identifier of the return\
+ \ policy you want to retrieve.
This ID can be retrieved for a return\
+ \ policy by using the getReturnPolicies method."
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ReturnPolicy"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 20403:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid {fieldName}. {additionalInfo}"
+ 20404:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "{fieldName} not found."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 20500:
+ domain: "API_ACCOUNT"
+ category: "APPLICATION"
+ description: "System error."
+ 20501:
+ domain: "API_ACCOUNT"
+ category: "APPLICATION"
+ description: "Service unavailable. Please try again in next 24 hours."
+ "404":
+ description: "Not Found"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.account"
+ - "https://api.ebay.com/oauth/api_scope/sell.account.readonly"
+ put:
+ tags:
+ - "return_policy"
+ description: "This method updates an existing return policy. Specify the policy\
+ \ you want to update using the return_policy_id path parameter. Supply\
+ \ a complete policy payload with the updates you want to make; this call overwrites\
+ \ the existing policy with the new details specified in the payload."
+ operationId: "updateReturnPolicy"
+ parameters:
+ - name: "return_policy_id"
+ in: "path"
+ description: "This path parameter specifies the ID of the return policy you\
+ \ want to update.
This ID can be retrieved for a return policy\
+ \ by using the getReturnPolicies method."
+ required: true
+ schema:
+ type: "string"
+ - name: "Content-Type"
+ in: "header"
+ description: "This header indicates the format of the request body provided\
+ \ by the client. Its value should be set to application/json.
\
+ \ For more information, refer to HTTP request headers."
+ required: true
+ schema:
+ type: "string"
+ requestBody:
+ description: "Container for a return policy request."
+ content:
+ application/json:
+ schema:
+ description: "Container for a return policy request."
+ $ref: "#/components/schemas/ReturnPolicyRequest"
+ required: true
+ responses:
+ "200":
+ description: "OK"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/SetReturnPolicyResponse"
+ x-response-codes:
+ errors:
+ 20200:
+ domain: "API_ACCOUNT"
+ category: "BUSINESS"
+ description: "Warning. {additionalInfo}"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 20400:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid request. {additionalInfo}"
+ 20401:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Missing field {fieldName}."
+ 20402:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid input. {additionalInfo}"
+ 20404:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "{fieldName} not found."
+ 20406:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid return option. {fieldName}"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 20500:
+ domain: "API_ACCOUNT"
+ category: "APPLICATION"
+ description: "System error."
+ 20501:
+ domain: "API_ACCOUNT"
+ category: "APPLICATION"
+ description: "Service unavailable. Please try again in next 24 hours."
+ "404":
+ description: "Not Found"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.account"
+ delete:
+ tags:
+ - "return_policy"
+ description: "This method deletes a return policy. Supply the ID of the policy\
+ \ you want to delete in the returnPolicyId path parameter."
+ operationId: "deleteReturnPolicy"
+ parameters:
+ - name: "return_policy_id"
+ in: "path"
+ description: "This path parameter specifies the unique identifier of the return\
+ \ policy you want to delete.
This ID can be retrieved for a return\
+ \ policy by using the getReturnPolicies method."
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 20401:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Missing field {fieldName}. {additionalInfo}"
+ 20402:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid input. {additionalInfo}"
+ 20404:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "{fieldName} not found."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 20500:
+ domain: "API_ACCOUNT"
+ category: "APPLICATION"
+ description: "System error."
+ 20501:
+ domain: "API_ACCOUNT"
+ category: "APPLICATION"
+ description: "Service unavailable. Please try again in next 24 hours."
+ "204":
+ description: "No Content"
+ "404":
+ description: "Not Found"
+ "409":
+ description: "Conflict"
+ x-response-codes:
+ errors:
+ 21409:
+ domain: "API_ACCOUNT"
+ category: "BUSINESS"
+ description: "Invalid default for category type. {additionalInfo}"
+ 20409:
+ domain: "API_ACCOUNT"
+ category: "BUSINESS"
+ description: "Invalid default policy type. {additionalInfo}"
+ 22409:
+ domain: "API_ACCOUNT"
+ category: "BUSINESS"
+ description: "Invalid target default policy. {additionalInfo}"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.account"
+ /return_policy/get_by_policy_name:
+ get:
+ tags:
+ - "return_policy"
+ description: "This method retrieves the details of a specific return policy.\
+ \ Supply both the policy name and its associated marketplace_id\
+ \ in the request query parameters."
+ operationId: "getReturnPolicyByName"
+ parameters:
+ - name: "Content-Language"
+ in: "header"
+ description: "Get the correct policy for a marketplace that supports multiple\
+ \ locales using the Content-Language request header. For example,\
+ \ get a policy for the French locale of the Canadian marketplace by specifying\
+ \ fr-CA for the Content-Language header. Likewise,\
+ \ target the Dutch locale of the Belgium marketplace by setting Content-Language:\
+ \ nl-BE. For details on header values, see HTTP request headers."
+ required: false
+ schema:
+ type: "string"
+ - name: "marketplace_id"
+ in: "query"
+ description: "This query parameter specifies the ID of the eBay marketplace\
+ \ of the policy you want to retrieve. For implementation help, refer to\
+ \ eBay API documentation at https://developer.ebay.com/api-docs/sell/account/types/ba:MarketplaceIdEnum"
+ required: true
+ schema:
+ type: "string"
+ - name: "name"
+ in: "query"
+ description: "This query parameter specifies the seller-defined name of the\
+ \ return policy you want to retrieve.
This value can be retrieved\
+ \ for a return policy by using the getReturnPolicies method."
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ReturnPolicy"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 20401:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Missing field {fieldName}. {additionalInfo}"
+ 20403:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid {fieldName}. {additionalInfo}"
+ 20404:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "{fieldName} not found."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 20500:
+ domain: "API_ACCOUNT"
+ category: "APPLICATION"
+ description: "System error."
+ 20501:
+ domain: "API_ACCOUNT"
+ category: "APPLICATION"
+ description: "Service unavailable. Please try again in next 24 hours."
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.account"
+ - "https://api.ebay.com/oauth/api_scope/sell.account.readonly"
+ /bulk_create_or_replace_sales_tax:
+ post:
+ tags:
+ - "sales_tax"
+ description: "This method creates or updates multiple sales-tax table entries.
Sales-tax\
+ \ tables can be set up for countries that support different tax jurisdictions.
Note: Sales-tax tables are only available for\
+ \ the US (EBAY_US) and Canada (EBAY_CA) marketplaces.
Each sales-tax\
+ \ table entry comprises the following parameters:countryCodejurisdictionIdsalesTaxPercentageshippingAndHandlingTaxed
Valid\
+ \ jurisdiction IDs are retrieved using getSalesTaxJurisdictions in the Metadata API.
For\
+ \ details about using this call, refer to Establishing sales-tax tables.
Important! In the US, eBay now calculates,\
+ \ collects, and remits sales tax to the proper taxing authorities in all 50\
+ \ states and Washington, DC. Sellers can no longer specify sales-tax rates\
+ \ for these jurisdictions using a tax table.
However, sellers may continue\
+ \ to use a sales-tax table to set rates for the following US territories:
- American\
+ \ Samoa (AS)
- Guam (GU)
- Northern Mariana Islands (MP)
- Palau\
+ \ (PW)
- US Virgin Islands (VI)
For additional information,\
+ \ refer to
Taxes and import charges.
"
+ operationId: "bulkCreateOrReplaceSalesTax"
+ requestBody:
+ description: "List of sales taxes to be updated"
+ content:
+ application/json:
+ schema:
+ description: "List of sales taxes to be updated"
+ $ref: "#/components/schemas/BulkSalesTaxInput"
+ required: true
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/UpdatedSalesTaxResponse"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 20400:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid request. {additionalInfo}"
+ 20401:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Missing field {fieldName}. {additionalInfo}"
+ 20403:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid {fieldName}. {additionalInfo}"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 20500:
+ domain: "API_ACCOUNT"
+ category: "APPLICATION"
+ description: "System error."
+ "207":
+ description: "partial success"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.account"
+ /sales_tax/{countryCode}/{jurisdictionId}:
+ get:
+ tags:
+ - "sales_tax"
+ description: "This call retrieves the current sales-tax table entry for a specific\
+ \ tax jurisdiction. Specify the jurisdiction to retrieve using the countryCode\
+ \ and jurisdictionId path parameters. All four response fields will\
+ \ be returned if a sales-tax entry exists for the tax jurisdiction. Otherwise,\
+ \ the response will be returned as empty.
Note: Sales-tax tables are only available for the US (EBAY_US) and\
+ \ Canada (EBAY_CA) marketplaces.
Important! In the US, eBay now calculates,\
+ \ collects, and remits sales tax to the proper taxing authorities in all 50\
+ \ states and Washington, DC. Sellers can no longer specify sales-tax rates\
+ \ for these jurisdictions using a tax table.
However, sellers may continue\
+ \ to use a sales-tax table to set rates for the following US territories:
- American\
+ \ Samoa (AS)
- Guam (GU)
- Northern Mariana Islands (MP)
- Palau\
+ \ (PW)
- US Virgin Islands (VI)
For additional information,\
+ \ refer to
Taxes and import charges.
"
+ operationId: "getSalesTax"
+ parameters:
+ - name: "countryCode"
+ in: "path"
+ description: "This path parameter specifies the two-letter ISO 3166 code\
+ \ for the country whose sales tax table you want to retrieve.
Note: Sales-tax tables are available only for\
+ \ the US and Canada marketplaces. Therefore, the only supported values are:"
+ required: true
+ schema:
+ type: "string"
+ - name: "jurisdictionId"
+ in: "path"
+ description: "This path parameter specifies the ID of the sales tax jurisdiction\
+ \ for the tax table entry to be retrieved.
Valid jurisdiction IDs\
+ \ can be retrieved using the getSalesTaxJurisdiction method of the Metadata\
+ \ API.
Note: When countryCode\
+ \ is set to US, the only supported values for jurisdictionId\
+ \ are:AS (American Samoa)GU (GuamMP\
+ \ Northern Mariana IslandsPW (Palau)VI\
+ \ (US Virgin Islands)
"
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/SalesTax"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 20400:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid request. {additionalInfo}"
+ 20401:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Missing field {fieldName}. {additionalInfo}"
+ 20403:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid {fieldName}. {additionalInfo}"
+ 20407:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Tax table not supported for {fieldName}."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 20500:
+ domain: "API_ACCOUNT"
+ category: "APPLICATION"
+ description: "System error."
+ "204":
+ description: "No content"
+ "404":
+ description: "Not Found"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.account"
+ - "https://api.ebay.com/oauth/api_scope/sell.account.readonly"
+ put:
+ tags:
+ - "sales_tax"
+ description: "This method creates or updates a sales-tax table entry for a jurisdiction.\
+ \ Specify the tax table entry you want to configure using the two path parameters:\
+ \ countryCode and jurisdictionId.
A tax table entry\
+ \ for a jurisdiction is comprised of two fields: one for the jurisdiction's\
+ \ sales-tax rate and another that's a boolean value indicating whether or\
+ \ not shipping and handling are taxed in the jurisdiction.
You can\
+ \ set up sales-tax tables for countries that support different tax\
+ \ jurisdictions.
Note: Sales-tax\
+ \ tables are only available for the US (EBAY_US) and Canada (EBAY_CA) marketplaces.
Retrieve\
+ \ valid jurisdiction IDs using getSalesTaxJurisdictions in the Metadata API.
For\
+ \ details about using this call, refer to Establishing sales-tax tables.
Important! In the US, eBay now calculates,\
+ \ collects, and remits sales tax to the proper taxing authorities in all 50\
+ \ states and Washington, DC. Sellers can no longer specify sales-tax rates\
+ \ for these jurisdictions using a tax table.
However, sellers may continue\
+ \ to use a sales-tax table to set rates for the following US territories:
- American\
+ \ Samoa (AS)
- Guam (GU)
- Northern Mariana Islands (MP)
- Palau\
+ \ (PW)
- US Virgin Islands (VI)
For additional information,\
+ \ refer to
Taxes and import charges.
"
+ operationId: "createOrReplaceSalesTax"
+ parameters:
+ - name: "countryCode"
+ in: "path"
+ description: "This path parameter specifies the two-letter ISO 3166 code\
+ \ for the country for which you want to create a sales tax table entry.
Note: Sales-tax tables are available only for\
+ \ the US and Canada marketplaces. Therefore, the only supported values are:"
+ required: true
+ schema:
+ type: "string"
+ - name: "jurisdictionId"
+ in: "path"
+ description: "This path parameter specifies the ID of the tax jurisdiction\
+ \ for the table entry to be created.
Valid jurisdiction IDs can be\
+ \ retrieved using the getSalesTaxJurisdiction method of the Metadata\
+ \ API.
Note: When countryCode\
+ \ is set to US, the only supported values for jurisdictionId\
+ \ are:AS (American Samoa)GU (Guam)MP\
+ \ (Northern Mariana Islands)PW (Palau)VI\
+ \ (US Virgin Islands)
"
+ required: true
+ schema:
+ type: "string"
+ - name: "Content-Type"
+ in: "header"
+ description: "This header indicates the format of the request body provided\
+ \ by the client. Its value should be set to application/json.
For\
+ \ more information, refer to HTTP request headers."
+ required: true
+ schema:
+ type: "string"
+ requestBody:
+ description: "A container that describes the how the sales tax is calculated."
+ content:
+ application/json:
+ schema:
+ description: "A container that describes the how the sales tax is calculated."
+ $ref: "#/components/schemas/SalesTaxBase"
+ required: true
+ responses:
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 20400:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid request. {additionalInfo}"
+ 20401:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Missing field {fieldName}. {additionalInfo}"
+ 20403:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid {fieldName}. {additionalInfo}"
+ 20404:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "{fieldName} not found."
+ 20407:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Tax table not supported for {fieldName}."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 20500:
+ domain: "API_ACCOUNT"
+ category: "APPLICATION"
+ description: "System error."
+ "204":
+ description: "No Content"
+ "404":
+ description: "Not Found"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.account"
+ delete:
+ tags:
+ - "sales_tax"
+ description: "This call deletes a sales-tax table entry for a jurisdiction.\
+ \ Specify the jurisdiction to delete using the countryCode and jurisdictionId\
+ \ path parameters.
Note: Sales-tax\
+ \ tables are only available for the US (EBAY_US) and Canada (EBAY_CA) marketplaces."
+ operationId: "deleteSalesTax"
+ parameters:
+ - name: "countryCode"
+ in: "path"
+ description: "This path parameter specifies the two-letter ISO 3166 code\
+ \ for the country whose sales tax table entry you want to delete.
Note: Sales-tax tables are available only for\
+ \ the US and Canada marketplaces. Therefore, the only supported values are:"
+ required: true
+ schema:
+ type: "string"
+ - name: "jurisdictionId"
+ in: "path"
+ description: "This path parameter specifies the ID of the sales tax jurisdiction\
+ \ whose table entry you want to delete.
Valid jurisdiction IDs can\
+ \ be retrieved using the getSalesTaxJurisdiction method of the Metadata\
+ \ API.
Note: When countryCode\
+ \ is set to US, the only supported values for jurisdictionId\
+ \ are:AS (American Samoa)GU (Guam)MP\
+ \ (Northern Mariana Islands)PW (Palau)VI\
+ \ (US Virgin Islands)
"
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 20400:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid request. {additionalInfo}"
+ 20401:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Missing field {fieldName}. {additionalInfo}"
+ 20403:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid {fieldName}. {additionalInfo}"
+ 20407:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Tax table not supported for {fieldName}."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 20500:
+ domain: "API_ACCOUNT"
+ category: "APPLICATION"
+ description: "System error."
+ "204":
+ description: "Success"
+ "404":
+ description: "Not Found"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.account"
+ /sales_tax:
+ get:
+ tags:
+ - "sales_tax"
+ description: "Use this call to retrieve all sales tax table entries that the\
+ \ seller has defined for a specific country. All four response fields will\
+ \ be returned for each tax jurisdiction that matches the search criteria.\
+ \ If no sales tax rates are defined for the specified, a 204 No Content\
+ \ status code is returned with no response payload.
Note: Sales-tax tables are only available for the US (EBAY_US)\
+ \ and Canada (EBAY_CA) marketplaces.
Important! In the US, eBay now calculates,\
+ \ collects, and remits sales tax to the proper taxing authorities in all 50\
+ \ states and Washington, DC. Sellers can no longer specify sales-tax rates\
+ \ for these jurisdictions using a tax table.
However, sellers may continue\
+ \ to use a sales-tax table to set rates for the following US territories:
- American\
+ \ Samoa (AS)
- Guam (GU)
- Northern Mariana Islands (MP)
- Palau\
+ \ (PW)
- US Virgin Islands (VI)
For additional information,\
+ \ refer to
Taxes and import charges.
"
+ operationId: "getSalesTaxes"
+ parameters:
+ - name: "country_code"
+ in: "query"
+ description: "This path parameter specifies the two-letter ISO 3166 code\
+ \ for the country whose tax table you want to retrieve.
Note: Sales-tax tables are available only for the US\
+ \ and Canada marketplaces. Therefore, the only supported values are:\
+ \ For implementation help, refer to eBay API documentation at https://developer.ebay.com/api-docs/sell/account/types/ba:CountryCodeEnum"
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/SalesTaxes"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 20400:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid request. {additionalInfo}"
+ 20401:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Missing field {fieldName}. {additionalInfo}"
+ 20403:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid {fieldName}. {additionalInfo}"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 20500:
+ domain: "API_ACCOUNT"
+ category: "APPLICATION"
+ description: "System error."
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.account"
+ - "https://api.ebay.com/oauth/api_scope/sell.account.readonly"
+ /subscription:
+ get:
+ tags:
+ - "subscription"
+ description: "This method retrieves a list of subscriptions associated with\
+ \ the seller account."
+ operationId: "getSubscription"
+ parameters:
+ - name: "limit"
+ in: "query"
+ description: "This field is for future use."
+ required: false
+ schema:
+ type: "string"
+ - name: "continuation_token"
+ in: "query"
+ description: "This field is for future use."
+ required: false
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/SubscriptionResponse"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 20400:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid request"
+ 20403:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid {fieldName}. {additionalInfo}"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 20500:
+ domain: "API_ACCOUNT"
+ category: "APPLICATION"
+ description: "System error."
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.account"
+ - "https://api.ebay.com/oauth/api_scope/sell.account.readonly"
+ /kyc:
+ get:
+ tags:
+ - "kyc"
+ description: "Note: This method was originally\
+ \ created to see which onboarding requirements were still pending for sellers\
+ \ being onboarded for eBay managed payments, but now that all seller accounts\
+ \ are onboarded globally, this method should now just return an empty payload\
+ \ with a 204 No Content HTTP status code. "
+ operationId: "getKYC"
+ responses:
+ "200":
+ description: "OK"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/KycResponse"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 21400:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "This marketplace is not supported. Please refer to documentation."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 20500:
+ domain: "API_ACCOUNT"
+ category: "APPLICATION"
+ description: "There was a problem with an eBay internal system or\
+ \ process. Contact eBay developer support for assistance."
+ "204":
+ description: "No Content"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.account"
+ - "https://api.ebay.com/oauth/api_scope/sell.account.readonly"
+ /advertising_eligibility:
+ get:
+ tags:
+ - "advertising_eligibility"
+ description: "This method allows developers to check the seller eligibility\
+ \ status for eBay advertising programs."
+ operationId: "getAdvertisingEligibility"
+ parameters:
+ - name: "program_types"
+ in: "query"
+ description: "A comma-separated list of eBay advertising programs for which\
+ \ eligibility status will be returned.
See the AdvertisingProgramEnum type for a list of supported\
+ \ values.
If no programs are specified, the results will be returned\
+ \ for all programs."
+ required: false
+ schema:
+ type: "string"
+ - name: "X-EBAY-C-MARKETPLACE-ID"
+ in: "header"
+ description: "The unique identifier of the eBay marketplace for which the\
+ \ seller eligibility status shall be checked. This header is required or\
+ \ the call will fail.
See the MarketplaceIdEnum type for the supported marketplace\
+ \ ID values."
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/SellerEligibilityMultiProgramResponse"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 50114:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "The HTTP request header 'X-EBAY-C-MARKETPLACE-ID' is\
+ \ required."
+ 50116:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid program_type(s) {programTypes}."
+ 50117:
+ domain: "API_ACCOUNT"
+ category: "REQUEST"
+ description: "Invalid marketplaceId in HTTP request header 'X-EBAY-C-MARKETPLACE-ID'\
+ \ {marketplaceId}."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 35001:
+ domain: "API_ACCOUNT"
+ category: "APPLICATION"
+ description: "There was a problem with an eBay internal system or\
+ \ process. Contact eBay developer support for assistance."
+ 35002:
+ domain: "API_ACCOUNT"
+ category: "APPLICATION"
+ description: "Internal error. Please wait a few minutes and try the\
+ \ call again."
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.account"
+ - "https://api.ebay.com/oauth/api_scope/sell.account.readonly"
+components:
+ schemas:
+ Amount:
+ type: "object"
+ properties:
+ currency:
+ type: "string"
+ description: "The base currency applied to the value field to establish\
+ \ a monetary amount.
The currency is represented as a 3-letter\
+ \ ISO 4217 currency code. For\
+ \ example, the code for the Canadian Dollar is CAD.
Default:\
+ \ The default currency of the eBay marketplace that hosts the listing.\
+ \ For implementation help, refer to eBay\
+ \ API documentation"
+ value:
+ type: "string"
+ description: "The monetary amount in the specified currency."
+ description: "A complex type that describes the value of a monetary amount as\
+ \ represented by a global currency. When passing in an amount in a request\
+ \ payload, both currency and value fields are required, and\
+ \ both fields are also always returned for an amount in a response field."
+ BulkSalesTaxInput:
+ type: "object"
+ properties:
+ salesTaxInputList:
+ type: "array"
+ description: "The array of sales-tax table entries to be created or updated."
+ items:
+ $ref: "#/components/schemas/SalesTaxInput"
+ CategoryType:
+ type: "object"
+ properties:
+ default:
+ type: "boolean"
+ description: "Note: This field\
+ \ has been deprecated and is no longer used.- Do not include this\
+ \ field in any create or update method.
- This field\
+ \ may be returned within the payload of a get method, but it can\
+ \ be ignored.
"
+ name:
+ type: "string"
+ description: "The category type to which the policy applies (motor vehicles\
+ \ or non-motor vehicles).
Note:\
+ \ The MOTORS_VEHICLES category type is not valid for return\
+ \ policies. eBay flows do not support the return of motor vehicles.\
+ \ For implementation help, refer to eBay\
+ \ API documentation"
+ description: "The category type discerns whether the policy applies to motor\
+ \ vehicle listings, or to any other items except motor vehicle listings.
Each\
+ \ business policy can be associated with either or both categories ('MOTORS_VEHICLES'\
+ \ and 'ALL_EXCLUDING_MOTORS_VEHICLES'); however, return business policies\
+ \ are not applicable for motor vehicle listings."
+ CompactCustomPolicyResponse:
+ type: "object"
+ properties:
+ customPolicyId:
+ type: "string"
+ description: "The unique custom policy identifier for the policy being returned.
Note: This value is automatically\
+ \ assigned by the system when the policy is created."
+ label:
+ type: "string"
+ description: "Customer-facing label shown on View Item pages for items to\
+ \ which the policy applies. This seller-defined string is displayed as\
+ \ a system-generated hyperlink pointing to the seller's policy information.
Max\
+ \ length: 65"
+ name:
+ type: "string"
+ description: "The seller-defined name for the custom policy. Names must\
+ \ be unique for policies assigned to the same seller and policy type.
Note: This field is visible only\
+ \ to the seller.
Max length: 65"
+ policyType:
+ type: "string"
+ description: "Specifies the type of Custom Policy being returned. For implementation\
+ \ help, refer to eBay\
+ \ API documentation"
+ description: "The response payload for requests that return a list of custom\
+ \ policies."
+ CustomPolicy:
+ type: "object"
+ properties:
+ customPolicyId:
+ type: "string"
+ description: "The unique custom policy identifier for a policy."
+ description:
+ type: "string"
+ description: "Contains the seller's policy and policy terms. Buyers access\
+ \ this information from the View Item page for items to which the policy\
+ \ has been applied.
Max length: 15,000"
+ label:
+ type: "string"
+ description: "Customer-facing label shown on View Item pages for items to\
+ \ which the policy applies. This seller-defined string is displayed as\
+ \ a system-generated hyperlink pointing to the seller's policy information.
Max\
+ \ length: 65"
+ name:
+ type: "string"
+ description: "The seller-defined name for the custom policy. Names must\
+ \ be unique for policies assigned to the same seller and policy type.
Note: This field is visible only\
+ \ to the seller.
Max length: 65"
+ policyType:
+ type: "string"
+ description: "Specifies the type of Custom Policy being returned. For implementation\
+ \ help, refer to eBay\
+ \ API documentation"
+ description: "This container defines a seller's custom policy identified by\
+ \ policy ID for the selected eBay marketplace. A successful call returns the\
+ \ requested policy information."
+ CustomPolicyCreateRequest:
+ type: "object"
+ properties:
+ description:
+ type: "string"
+ description: "Contains the seller's policy and policy terms.
Max\
+ \ length: 15,000"
+ label:
+ type: "string"
+ description: "Customer-facing label shown on View Item pages for items to\
+ \ which the policy applies. This seller-defined string is displayed as\
+ \ a system-generated hyperlink pointing to the seller's policy information.
Max\
+ \ length: 65"
+ name:
+ type: "string"
+ description: "The seller-defined name for the custom policy. Names must\
+ \ be unique for policies assigned to the same seller and policy type.
Note: This field is visible only\
+ \ to the seller.
Max length: 65"
+ policyType:
+ type: "string"
+ description: "Specifies the type of custom policy being created.
Two\
+ \ Custom Policy types are supported: - Product Compliance (PRODUCT_COMPLIANCE)
\
+ \ - Takeback (TAKE_BACK)
For implementation help, refer to\
+ \ eBay\
+ \ API documentation"
+ description: "This type is used by the request payload of the createCustomPolicy\
+ \ method to define a new custom policy for a specific marketplace."
+ CustomPolicyRequest:
+ type: "object"
+ properties:
+ description:
+ type: "string"
+ description: "Contains the seller specified policy and policy terms.
Note: Always supply this field.\
+ \ If this field is not specified, any previous value is removed. Call\
+ \ the getCustomPolicy method to return the present field value for this\
+ \ policy.
Max length: 15,000"
+ label:
+ type: "string"
+ description: "Customer-facing label shown on View Item pages for items to\
+ \ which the policy applies. This seller-defined string is displayed as\
+ \ a system-generated hyperlink pointing to seller specified policy information.
Note: Always supply this field.\
+ \ If this field is not specified, any previous value is removed. Call\
+ \ the getCustomPolicy method to return the present field value for this\
+ \ policy.
Max length: 65"
+ name:
+ type: "string"
+ description: "The seller-defined name for the custom policy. Names must\
+ \ be unique for policies assigned to the same seller and policy type.
Note: This field is visible only\
+ \ to the seller.
Note:\
+ \ Always supply this field. If this field is not specified, any previous\
+ \ value is removed. Call the getCustomPolicy method to return the present field value for this\
+ \ policy.
Max length: 65"
+ CustomPolicyResponse:
+ type: "object"
+ properties:
+ customPolicies:
+ type: "array"
+ description: "This array contains the custom policies that match the input\
+ \ criteria."
+ items:
+ $ref: "#/components/schemas/CompactCustomPolicyResponse"
+ href:
+ type: "string"
+ description: "This field is for future use."
+ limit:
+ type: "integer"
+ description: "This field is for future use."
+ format: "int32"
+ next:
+ type: "string"
+ description: "This field is for future use."
+ offset:
+ type: "integer"
+ description: "This field is for future use."
+ format: "int32"
+ prev:
+ type: "string"
+ description: "This field is for future use."
+ total:
+ type: "integer"
+ description: "This field is for future use."
+ format: "int32"
+ Deposit:
+ type: "object"
+ properties:
+ amount:
+ description: "This value indicates the initial deposit amount required from\
+ \ the buyer in order to purchase a motor vehicle. This value can be as\
+ \ high as $2,000.00 if immediate payment is not required, and up to $500.00\
+ \ if immediate payment is required.
Max: 2000.0"
+ $ref: "#/components/schemas/Amount"
+ dueIn:
+ description: "This value indicates the number of hours that the buyer has\
+ \ (after they commit to buy) to pay the initial deposit on a motor vehicle.\
+ \ Valid dueIn times are 24, 48, and 72 hours. HOUR\
+ \ is set as the unit value, and 24, 48\
+ \ or 72 are set in the value field.
Note: The dueIn value is overridden if the seller\
+ \ has set the motor vehicle listing to require immediate payment. If the\
+ \ listing requires immediate payment, the buyer must pay the deposit immediately\
+ \ in order to be eligible to purchase the motor vehicle.
Min=24\
+ \ (hours)Max=72 (hours), Default=48 (hours)"
+ $ref: "#/components/schemas/TimeDuration"
+ paymentMethods:
+ type: "array"
+ description: "This array is no longer applicable and should not be used\
+ \ since eBay now manages the electronic payment options available to buyers\
+ \ to pay the deposit."
+ items:
+ $ref: "#/components/schemas/PaymentMethod"
+ description: "This type is used to specify/indicate that an initial deposit\
+ \ is required for a motor vehicle listing."
+ Error:
+ type: "object"
+ properties:
+ category:
+ type: "string"
+ description: "The category type for this error or warning. It is a string\
+ \ that can have one of three values:Application:\
+ \ Indicates an exception or error occurred in the application code or\
+ \ at runtime. Examples include catching an exception in a service's business\
+ \ logic, system failures, or request errors from a dependency.Business:\
+ \ Used when your service or a dependent service refused to continue processing\
+ \ on the resource because of a business rule violation such as \"Seller\
+ \ does not ship item to Antarctica\" or \"Buyer ineligible to purchase\
+ \ an alcoholic item\". Business errors are not syntactical input errors.Request:\
+ \ Used when there is anything wrong with the request, such as authentication,\
+ \ syntactical errors, rate limiting or missing headers, bad HTTP header\
+ \ values, and so on.
"
+ domain:
+ type: "string"
+ description: "Name of the domain ,or primary system, of the service or application\
+ \ where the error occurred."
+ errorId:
+ type: "integer"
+ description: "A positive integer that uniquely identifies the specific error\
+ \ condition that occurred. Your application can use error codes as identifiers\
+ \ in your customized error-handling algorithms."
+ format: "int32"
+ inputRefIds:
+ type: "array"
+ description: "Identifies specific request elements associated with the error,\
+ \ if any. inputRefId's response is format specific. For JSON, use JSONPath\
+ \ notation."
+ items:
+ type: "string"
+ longMessage:
+ type: "string"
+ description: "A more detailed explanation of the error than given in the\
+ \ message error field."
+ message:
+ type: "string"
+ description: "Information on how to correct the problem, in the end user's\
+ \ terms and language where applicable. Its value is at most 50 characters\
+ \ long. If applicable, the value is localized in the end user's requested\
+ \ locale."
+ outputRefIds:
+ type: "array"
+ description: "Identifies specific response elements associated with the\
+ \ error, if any. Path format is the same as inputRefId."
+ items:
+ type: "string"
+ parameters:
+ type: "array"
+ description: "This optional list of name/value pairs that contain context-specific\
+ \ ErrorParameter objects, with each item in the list being\
+ \ a parameter (or input field name) that caused an error condition. Each\
+ \ ErrorParameter object consists of two fields, a name\
+ \ and a value."
+ items:
+ $ref: "#/components/schemas/ErrorParameter"
+ subdomain:
+ type: "string"
+ description: "If present, indicates the subsystem in which the error occurred."
+ description: "A container that defines the elements of error and warning messages."
+ ErrorParameter:
+ type: "object"
+ properties:
+ name:
+ type: "string"
+ description: "Name of the parameter that caused the error."
+ value:
+ type: "string"
+ description: "The value of the parameter that caused the error."
+ description: "A complex type that indicates a parameter that caused an error\
+ \ and the value of the parameter which caused the error."
+ FulfillmentPolicy:
+ type: "object"
+ properties:
+ categoryTypes:
+ type: "array"
+ description: "This container indicates whether the fulfillment policy applies\
+ \ to motor vehicle listings, or if it applies to non-motor vehicle listings."
+ items:
+ $ref: "#/components/schemas/CategoryType"
+ description:
+ type: "string"
+ description: "A seller-defined description of the fulfillment policy. This\
+ \ description is only for the seller's use, and is not exposed on any\
+ \ eBay pages. This field is returned if set for the policy.
Max\
+ \ length: 250"
+ freightShipping:
+ type: "boolean"
+ description: "If returned as true, the seller offers freight\
+ \ shipping. Freight shipping can be used for large items over 150 lbs."
+ fulfillmentPolicyId:
+ type: "string"
+ description: "A unique eBay-assigned ID for the fulfillment policy. This\
+ \ ID is generated when the policy is created."
+ globalShipping:
+ type: "boolean"
+ description: "Note: This field is only\
+ \ applicable for the eBay United Kingdom marketplace (EBAY_GB).
If\
+ \ returned as true, eBay's Global Shipping Program will be\
+ \ used by the seller to ship items to international locations.
eBay\
+ \ International Shipping is an account level setting; no field needs to\
+ \ be set in a Fulfillment business policy to enable eBay International\
+ \ Shipping. If a US seller's account is opted in to eBay International\
+ \ Shipping, this shipping option will be enabled automatically for all\
+ \ listings where international shipping is available. A US seller who\
+ \ is opted in to eBay International Shipping can also specify individual\
+ \ international shipping service options for a Fulfillment business policy."
+ handlingTime:
+ description: "Specifies the maximum number of business days the seller commits\
+ \ to for preparing and shipping an order after receiving a cleared payment\
+ \ for the order. This time does not include the transit time it takes\
+ \ the shipping carrier to deliver the order. If only local pickup or\
+ \ freight shipping is available for the item, this container may not get\
+ \ returned.
"
+ $ref: "#/components/schemas/TimeDuration"
+ localPickup:
+ type: "boolean"
+ description: "If returned as true, local pickup is available\
+ \ for this policy."
+ marketplaceId:
+ type: "string"
+ description: "The ID of the eBay marketplace to which this fulfillment policy\
+ \ applies. For implementation help, refer to eBay\
+ \ API documentation"
+ name:
+ type: "string"
+ description: "A seller-defined name for this fulfillment policy. Names must\
+ \ be unique for policies assigned to the same marketplace.
Max\
+ \ length: 64"
+ pickupDropOff:
+ type: "boolean"
+ description: "If returned as true, the seller offers the \"\
+ Click and Collect\" option.
Currently, \"Click and Collect\" is\
+ \ available only to large retail merchants the eBay AU, UK, DE, FR, and\
+ \ IT marketplaces."
+ shippingOptions:
+ type: "array"
+ description: "This array is used to provide detailed information on the\
+ \ domestic and international shipping options available for the policy.\
+ \ A separate ShippingOption object covers domestic shipping service\
+ \ options and international shipping service options (if the seller ships\
+ \ to international locations).
The optionType field indicates\
+ \ whether the ShippingOption object applies to domestic or international\
+ \ shipping, and the costType field indicates whether flat-rate\
+ \ shipping or calculated shipping will be used. A separate ShippingServices\
+ \ object is used to specify cost and other details for every available\
+ \ domestic and international shipping service option.
"
+ items:
+ $ref: "#/components/schemas/ShippingOption"
+ shipToLocations:
+ description: "This container consists of the regionIncluded and regionExcluded\
+ \ containers, which define the geographical regions/countries/states or\
+ \ provinces/domestic regions where the seller does and doesn't ship to\
+ \ with this fulfillment policy."
+ $ref: "#/components/schemas/RegionSet"
+ description: "This type is used by the fulfillmentPolicy response container,\
+ \ a container which defines a seller's fulfillment policy for a specific marketplace."
+ FulfillmentPolicyRequest:
+ type: "object"
+ properties:
+ categoryTypes:
+ type: "array"
+ description: "This container is used to specify whether the fulfillment\
+ \ business policy applies to motor vehicle listings, or if it applies\
+ \ to non-motor vehicle listings."
+ items:
+ $ref: "#/components/schemas/CategoryType"
+ description:
+ type: "string"
+ description: "A seller-defined description of the fulfillment policy. This\
+ \ description is only for the seller's use, and is not exposed on any\
+ \ eBay pages.
Max length: 250"
+ freightShipping:
+ type: "boolean"
+ description: "This field is included and set to true if freight\
+ \ shipping is available for the item. Freight shipping can be used for\
+ \ large items over 150 lbs.
Default: false"
+ globalShipping:
+ type: "boolean"
+ description: "Note: This field is only\
+ \ applicable for the eBay United Kingdom marketplace (EBAY_GB).
This\
+ \ field is included and set to true if the seller wants to\
+ \ use the Global Shipping Program for international shipments. See the\
+ \ Global Shipping Program help topic for more details and requirements\
+ \ on the Global Shipping Program.
A seller can use a combination\
+ \ of the Global Shipping Program and other international shipping services.\
+ \
If set to false or if the field is omitted, the\
+ \ seller has to manually specifying individual international shipping\
+ \ services (if the seller ships internationally), as described in Setting up worldwide shipping.
Sellers opt in or out\
+ \ of the Global Shipping Program through the Shipping preferences in My\
+ \ eBay.
eBay International Shipping is an account level setting;\
+ \ no field needs to be set in a Fulfillment business policy to enable\
+ \ eBay International Shipping. If a US seller's account is opted in to\
+ \ eBay International Shipping, this shipping option will be enabled automatically\
+ \ for all listings where international shipping is available. A US seller\
+ \ who is opted in to eBay International Shipping can also specify individual\
+ \ international shipping service options for a Fulfillment business policy.Default:\
+ \ false
"
+ handlingTime:
+ description: "This container is used to specify the maximum number of business\
+ \ days the seller commits to for preparing and shipping an order after\
+ \ receiving a cleared payment for the order. This time does not include\
+ \ the transit time it takes the shipping carrier to deliver the order.
Valid\
+ \ values can vary by site and by category. To obtain the supported values\
+ \ for a site, call GeteBayDetails in the Trading API with DetailName set to DispatchTimeMaxDetails,\
+ \ then inspect the DispatchTimeMaxDetails container in the response\
+ \ for the time values supported by the site (typical handling times are\
+ \ 0, 1, 2, 3, 4,\
+ \ 5, 10, 15, and 20,\
+ \ but these can vary by site and may change over time.) This field\
+ \ is conditionally required when the seller is offering one or more domestic\
+ \ or international shipping options, but it is not applicable when the\
+ \ item is only available through local pickup (\"localPickup\":\
+ \ \"true\"), or if it will be shipped through a freight shipping\
+ \ service (\"freightShipping\": \"true\").
Note: Top-Rated sellers must offer same-day or one-day\
+ \ handling for a listing in order for that listing to receive a Top Rated\
+ \ Plus seal on the View Item or Search Results pages. To offer zero-day\
+ \ or one-day handling, set field to '0' or '1', respectively."
+ $ref: "#/components/schemas/TimeDuration"
+ localPickup:
+ type: "boolean"
+ description: "This field should be included and set to true\
+ \ if local pickup is one of the fulfillment options available to the buyer.\
+ \ It is possible for the seller to make local pickup and some shipping\
+ \ service options available to the buyer.
With local pickup, the\
+ \ buyer and seller make arrangements for pickup time and location.
Default:\
+ \ false"
+ marketplaceId:
+ type: "string"
+ description: "The ID of the eBay marketplace to which this fulfillment policy\
+ \ applies. For implementation help, refer to eBay\
+ \ API documentation"
+ name:
+ type: "string"
+ description: "A seller-defined name for this fulfillment policy. Names must\
+ \ be unique for policies assigned to the same marketplace.
Max\
+ \ length: 64"
+ pickupDropOff:
+ type: "boolean"
+ description: "This field should be included and set to true\
+ \ if the seller offers the \"Click and Collect\" feature for an item.\
+ \ To enable \"Click and Collect\" on a listing, a seller must be eligible\
+ \ for Click and Collect. Currently, Click and Collect is available to\
+ \ only large retail merchants selling in the eBay AU, UK, DE, FR, and\
+ \ IT marketplaces.
In addition to setting this field to true,\
+ \ the merchant must also do the following to enable the \"Click and Collect\"\
+ \ option on a listing:
When\
+ \ a merchant successfully lists an item with Click and Collect, prospective\
+ \ buyers within a reasonable distance from one of the merchant's stores\
+ \ (that has stock available) will see the \"Available for Click and Collect\"\
+ \ option on the listing, along with information on the closest store that\
+ \ has the item.
Default: false"
+ shippingOptions:
+ type: "array"
+ description: "This array is used to provide detailed information on the\
+ \ domestic and international shipping options available for the policy.\
+ \
A separate ShippingOption object is required for domestic\
+ \ shipping service options and for international shipping service options\
+ \ (if the seller ships to international locations). - The optionType\
+ \ field is used to indicate whether the ShippingOption object applies\
+ \ to domestic or international shipping, and the costType field\
+ \ is used to indicate whether flat-rate shipping or calculated shipping\
+ \ will be used.
- The rateTableId field can be used to associate\
+ \ a defined shipping rate table to the policy, and the packageHandlingCost\
+ \ container can be used to set a handling charge for the policy.
\
+ \ A separate ShippingServices object will be used to specify\
+ \ cost and other details for every available domestic and international\
+ \ shipping service option.
"
+ items:
+ $ref: "#/components/schemas/ShippingOption"
+ shipToLocations:
+ description: "This container consists of the regionIncluded and regionExcluded\
+ \ arrays, which are used to define the geographical regions/countries/states\
+ \ or provinces/domestic regions that a seller does and does not ship to\
+ \ for the associated fulfillment policy. Note that this container can\
+ \ be considered the master list of where the seller ships and does not\
+ \ ship, but there is also a shipToLocations container that can\
+ \ be set at the shipping service option level.
Note: Any shipping exclusions specified through this container\
+ \ can be overridden by the eBay International Shipping exclusions toggle\
+ \ located under Shipping Preferences in My eBay. For more\
+ \ information on eBay International Shipping, see eBay International Shipping program.
To\
+ \ retrieve the valid geographical shipping region values, two-digit country\
+ \ values, or special domestic regions for an eBay marketplace, call GeteBayDetails\
+ \ with DetailName value set to ExcludeShippingLocationDetails,\
+ \ then review the ExcludeShippingLocationDetails containers in\
+ \ the response for the strings you use in both the regionIncluded.regionName\
+ \ and in the regionExcluded.regionName fields.
For valid\
+ \ geographical region names, look for the ExcludeShippingLocationDetails\
+ \ containers in the GeteBayDetails response where the Region\
+ \ value is Worldwide, and the valid values will be shown\
+ \ in the corresponding Location fields.
For valid two-digit\
+ \ country codes, look for ExcludeShippingLocationDetails\
+ \ in the GeteBayDetails response where the Region value\
+ \ is one of the defined geographical regions, and the valid values will\
+ \ be shown in the corresponding Location fields. Alternatively,\
+ \ you can find the two-digit country code values in the CountryCodeEnum type definition. For valid domestic region values,\
+ \ look for ExcludeShippingLocationDetails in the GeteBayDetails\
+ \ response where the Region value is either Domestic Location\
+ \ or Additional Locations, and the valid values will be shown\
+ \ in the corresponding Location fields.
The STATE_OR_PROVINCE\
+ \ region type is only applicable to the US and Canada, and valid values\
+ \ for US states are the same two-digit abbreviations used by the United States Postal Service,\
+ \ and valid values for Canadian provinces and territories are the same\
+ \ two-digit abbreviations used by the Canada Post."
+ $ref: "#/components/schemas/RegionSet"
+ description: "This root container defines a seller's fulfillment policy for\
+ \ a specific marketplace and category group. This type is used when creating\
+ \ or updating a fulfillment business policy."
+ FulfillmentPolicyResponse:
+ type: "object"
+ properties:
+ fulfillmentPolicies:
+ type: "array"
+ description: "A list of all of the seller's fulfillment policies defined\
+ \ for the specified marketplace. This array will be returned as empty\
+ \ if no fulfillment policies are defined for the specified marketplace."
+ items:
+ $ref: "#/components/schemas/FulfillmentPolicy"
+ href:
+ type: "string"
+ description: "This field is for future use."
+ limit:
+ type: "integer"
+ description: "This field is for future use."
+ format: "int32"
+ next:
+ type: "string"
+ description: "This field is for future use."
+ offset:
+ type: "integer"
+ description: "This field is for future use."
+ format: "int32"
+ prev:
+ type: "string"
+ description: "This field is for future use."
+ total:
+ type: "integer"
+ description: "The total number of fulfillment policies retrieved in the\
+ \ result set.
If no fulfillment policies are defined for the\
+ \ specified marketplace, this field is returned with a value of 0."
+ format: "int32"
+ description: "The response payload for the getFulfillmentPolicies method.
Note: Pagination has not yet been enabled for\
+ \ getFulfillmentPolicies, so all of the pagination-related fields are\
+ \ for future use."
+ InternationalReturnOverrideType:
+ type: "object"
+ properties:
+ returnMethod:
+ type: "string"
+ description: "This field sets/indicates if the seller offers replacement\
+ \ items to the buyer in the case of an international return. The buyer\
+ \ must be willing to accept a replacement item; otherwise, the seller\
+ \ will need to issue a refund for a return. For implementation help, refer\
+ \ to eBay\
+ \ API documentation"
+ returnPeriod:
+ description: "This container indicates the number of calendar days that\
+ \ the buyer has to return an item. The return period begins when the item\
+ \ is marked \"delivered\" at the buyer's specified ship-to location. \
+ \
You must set the value to one that's accepted by the marketplace\
+ \ and category where the item is listed. Most categories support 30-day\
+ \ and 60-day return periods. For a definitive list of return periods for\
+ \ one or more categories, call getReturnPolicies method of the Metadata API.
The\
+ \ TimeDuration type is used to set/indicate the return period,\
+ \ and you set the unit value to DAY and the value\
+ \ field to either 30 or 60 (or other value,\
+ \ as appropriate).
Note that this value cannot be modified if\
+ \ the listing has bids or sales, or if the listing ends within 12 hours.\
+ \
This field is conditionally required if the internationalOverride.returnsAccepted\
+ \ field is set to true."
+ $ref: "#/components/schemas/TimeDuration"
+ returnsAccepted:
+ type: "boolean"
+ description: "If set to true, the seller accepts international\
+ \ returns. If set to false, the seller does not accept international\
+ \ returns.
This field is conditionally required if the seller\
+ \ chooses to have a separate international return policy."
+ returnShippingCostPayer:
+ type: "string"
+ description: "This field indicates who is responsible for paying for the\
+ \ shipping charges for returned items. The field can be set to either\
+ \ BUYER or SELLER.
Depending on the\
+ \ return policy and specifics of the return, either the buyer or the seller\
+ \ can be responsible for the return shipping costs. Note that the seller\
+ \ is always responsible for return shipping costs for 'significantly not\
+ \ as described' (SNAD) issues.
This field is conditionally required\
+ \ if the internationalOverride.returnsAccepted field is set to\
+ \ true. For implementation help, refer to eBay\
+ \ API documentation"
+ description: "This type defines the fields for a seller's international return\
+ \ policy. Sellers have the ability to set separate domestic and international\
+ \ return policies, but if an international return policy is not set, the same\
+ \ return policy settings specified for the domestic return policy are also\
+ \ used for returns for international buyers. "
+ KycCheck:
+ type: "object"
+ properties:
+ dataRequired:
+ type: "string"
+ description: "The enumeration value returned in this field categorizes the\
+ \ type of details needed for the KYC check. More information about the\
+ \ check is shown in the detailMessage and other applicable, corresponding\
+ \ fields. For implementation help, refer to eBay\
+ \ API documentation"
+ dueDate:
+ type: "string"
+ description: "The timestamp in this field indicates the date by which the\
+ \ seller should resolve the KYC requirement.
The timestamp in this\
+ \ field uses the UTC date and time format described in the ISO 8601 Standard. See below for this format and an example:
MM-DD-YYYY\
+ \ HH:MM:SS
06-05-2020 10:34:18"
+ remedyUrl:
+ type: "string"
+ description: "If applicable and available, a URL will be returned in this\
+ \ field, and the link will take the seller to an eBay page where they\
+ \ can provide the requested information."
+ alert:
+ type: "string"
+ description: "This field gives a short summary of what is required from\
+ \ the seller. An example might be, 'Upload bank document now.'.\
+ \ The detailMessage field will often provide more details on what\
+ \ is required of the seller."
+ detailMessage:
+ type: "string"
+ description: "This field gives a detailed message about what is required\
+ \ from the seller. An example might be, 'Please upload a bank document\
+ \ by 2020-08-01 to get your account back in good standing.'."
+ description: "This type is used to provide details about any KYC check that\
+ \ is applicable to the managed payments seller."
+ KycResponse:
+ type: "object"
+ properties:
+ kycChecks:
+ type: "array"
+ description: "This array contains one or more KYC checks required from a\
+ \ managed payments seller. The seller may need to provide more documentation\
+ \ and/or information about themselves, their company, or the bank account\
+ \ they are using for seller payouts.
If no KYC checks are currently\
+ \ required from the seller, this array is not returned, and the seller\
+ \ only receives a 204 No Content HTTP status code."
+ items:
+ $ref: "#/components/schemas/KycCheck"
+ description: "This is the base response type of the getKYC method."
+ PaymentMethod:
+ type: "object"
+ properties:
+ brands:
+ type: "array"
+ description: "Note: This array is no longer\
+ \ applicable and should not be used. eBay now controls all electronic\
+ \ payment methods available for a marketplace, and a seller never has\
+ \ to specify any electronic payment methods, including any credit card\
+ \ brands accepted. "
+ items:
+ type: "string"
+ description: " For implementation help, refer to eBay\
+ \ API documentation"
+ paymentMethodType:
+ type: "string"
+ description: "This array is only applicable for listings supporting offline\
+ \ payment methods. See the PaymentMethodTypeEnum type for supported\
+ \ offline payment method enum values. If offline payments are enabled\
+ \ for the policy, provide at least one offline payment method. For\
+ \ implementation help, refer to eBay\
+ \ API documentation"
+ recipientAccountReference:
+ description: "Note: This container is no\
+ \ longer applicable and should not be used. eBay now controls all electronic\
+ \ payment methods available for a marketplace, and a seller never has\
+ \ to specify any electronic payment methods, including PayPal. "
+ $ref: "#/components/schemas/RecipientAccountReference"
+ description: "This type is used by the paymentMethods container, which\
+ \ is used by the seller to specify one or more offline payment methods.
\
+ \ Note: eBay now controls all electronic\
+ \ payment methods available for a marketplace, so a seller will no longer\
+ \ use this type to specify any electronic payment methods."
+ PaymentPolicy:
+ type: "object"
+ properties:
+ categoryTypes:
+ type: "array"
+ description: "This container indicates whether the payment policy applies\
+ \ to motor vehicle listings, or if it applies to non-motor vehicle listings."
+ items:
+ $ref: "#/components/schemas/CategoryType"
+ deposit:
+ description: "This container is applicable only if the categoryTypes.name\
+ \ field is set to MOTORS_VEHICLES, and is only returned if\
+ \ the seller requires an initial deposit on motor vehicles.
The\
+ \ container shows the amount due for the deposit and when it is due (within\
+ \ 1-3 days after commitment to purchase, unless the listing requires immediate\
+ \ payment). Note: The due date that is specified\
+ \ in the deposit container will be overridden if the payment business\
+ \ policy requires immediate payment (in this case, for the deposit), and\
+ \ the buyer commits to purchasing the motor vehicle through a fixed-price\
+ \ listing or through the 'Buy it Now' option of an auction listing.
"
+ $ref: "#/components/schemas/Deposit"
+ description:
+ type: "string"
+ description: "A seller-defined description of the payment policy. This description\
+ \ is only for the seller's use, and is not exposed on any eBay pages.\
+ \
Max length: 250"
+ fullPaymentDueIn:
+ description: "This container applies to motor vehicles listings only and\
+ \ indicates when a final payment for the vehicle is due. This value is\
+ \ always returned if categoryTypes is set to MOTORS_VEHICLES.\
+ \
This container indicates the number of days that a buyer has\
+ \ to make their full payment to the seller and close the remaining balance\
+ \ on a motor vehicle transaction. The period starts when the buyer commits\
+ \ to buy. The valid values, as specified with TimeDuration, are:- 3\
+ \ DAYS
- 7 DAYS (the default)
- 10 DAYS
- 14 DAYS
A\
+ \ MOTORS_VEHICLES) payment business policy must specify at\
+ \ least one of the following paymentMethods values for the final\
+ \ payment: - CASH_ON_PICKUP
Note:\
+ \ This payment method is only available to sellers outside the US. \
+ \ - CASHIER_CHECK
- MONEY_ORDER
- PERSONAL_CHECK
"
+ $ref: "#/components/schemas/TimeDuration"
+ immediatePay:
+ type: "boolean"
+ description: "If this field is returned as true, immediate\
+ \ payment is required from the buyer for: - A fixed-price item
- An\
+ \ auction item where the buyer uses the 'Buy it Now' option
- A\
+ \ deposit for a motor vehicle listing
It is possible for\
+ \ the seller to set this field as true in the payment business\
+ \ policy, but it will not apply in some scenarios. For example, immediate\
+ \ payment is not applicable for auction listings that have a winning bidder,\
+ \ for buyer purchases that involve the Best Offer feature, or for transactions\
+ \ that happen offline between the buyer and seller."
+ marketplaceId:
+ type: "string"
+ description: "The ID of the eBay marketplace to which the payment business\
+ \ policy applies. For implementation help, refer to eBay\
+ \ API documentation"
+ name:
+ type: "string"
+ description: "A seller-defined name for this payment policy. Names must\
+ \ be unique for policies assigned to the same marketplace.
Max\
+ \ length: 64"
+ paymentInstructions:
+ type: "string"
+ description: "Although this field may be returned for some older payment\
+ \ business policies, payment instructions are no longer supported by payment\
+ \ business policies. If this field is returned, it can be ignored and\
+ \ these payment instructions will not appear in any listings that use\
+ \ the corresponding business policy.
Max length: 1000"
+ paymentMethods:
+ type: "array"
+ description: "This container is returned to show the payment methods that\
+ \ are accepted for the payment business policy.
Sellers do not\
+ \ have to specify any electronic payment methods for listings, so this\
+ \ array will often be returned empty unless the payment business policy\
+ \ is intended for motor vehicle listings or other items in categories\
+ \ where offline payments are required or supported. "
+ items:
+ $ref: "#/components/schemas/PaymentMethod"
+ paymentPolicyId:
+ type: "string"
+ description: "A unique eBay-assigned ID for a payment business policy. This\
+ \ ID is generated when the policy is created."
+ description: "This type is used by the paymentPolicy response container,\
+ \ a container which defines a seller's payment business policy for a specific\
+ \ marketplace."
+ PaymentPolicyRequest:
+ type: "object"
+ properties:
+ categoryTypes:
+ type: "array"
+ description: "This container is used to specify whether the payment business\
+ \ policy applies to motor vehicle listings, or if it applies to non-motor\
+ \ vehicle listings."
+ items:
+ $ref: "#/components/schemas/CategoryType"
+ deposit:
+ description: "This container is used if the seller wants to require an initial\
+ \ deposit on a motor vehicle listing. In this container, the seller sets\
+ \ the deposit amount and the due date for the deposit.
Because\
+ \ eBay controls all electronic payment methods, sellers do not need to\
+ \ specify a payment method and the deposit.paymentMethods array\
+ \ is not needed.Note: The 'due date' specified\
+ \ in the deposit container will be overridden if the payment business\
+ \ policy requires immediate payment (in this case, for the deposit), and\
+ \ the buyer commits to purchase the motor vehicle through a fixed-price\
+ \ listing or through the 'Buy it Now' option of an auction listing. See\
+ \ immediatePay.
"
+ $ref: "#/components/schemas/Deposit"
+ description:
+ type: "string"
+ description: "A seller-defined description of the payment business policy.\
+ \ This description is only for the seller's use, and is not exposed on\
+ \ any eBay pages.
Max length: 250"
+ fullPaymentDueIn:
+ description: "This container is used to specify the number of days that\
+ \ a buyer has to make their full payment to the seller and close the remaining\
+ \ balance on a motor vehicle transaction. This container must be specified\
+ \ for motor vehicles listings.
The period starts when the buyer\
+ \ commits to buy. The valid values, as specified with TimeDuration,\
+ \ are:3 DAYS7 DAYS (the default)10\
+ \ DAYS14 DAYS
In order for a buyer\
+ \ to make a full payment on a motor vehicle, at least one of the following\
+ \ paymentMethods values must be specified for the corresponding\
+ \ payment business policy: CASH_ON_PICKUP CASHIER_CHECK \
+ \ MONEY_ORDER PERSONAL_CHECK
Default:\
+ \ 7 DAYS"
+ $ref: "#/components/schemas/TimeDuration"
+ immediatePay:
+ type: "boolean"
+ description: "This field should be included and set to true\
+ \ if the seller wants to require immediate payment from the buyer for:\
+ \ - A fixed-price item
- An auction item where the buyer is\
+ \ using the 'Buy it Now' option
- A deposit for a motor vehicle\
+ \ listing
Default: False"
+ marketplaceId:
+ type: "string"
+ description: "The ID of the eBay marketplace to which this payment business\
+ \ policy applies. For implementation help, refer to eBay\
+ \ API documentation"
+ name:
+ type: "string"
+ description: "A seller-defined name for this payment business policy. Names\
+ \ must be unique for policies assigned to the same marketplace.
Max\
+ \ length: 64"
+ paymentInstructions:
+ type: "string"
+ description: "Note: DO NOT USE THIS FIELD.\
+ \ Payment instructions are no longer supported by payment business policies.
A\
+ \ free-form string field that allows sellers to add detailed payment instructions\
+ \ to their listings."
+ paymentMethods:
+ type: "array"
+ description: "Note: This field applies only\
+ \ when the seller needs to specify one or more offline payment methods.\
+ \ eBay now manages the electronic payment options available to buyers\
+ \ to pay for the item.
This array is used to specify one or more offline\
+ \ payment methods that will be accepted for payment that occurs off of\
+ \ eBay's platform."
+ items:
+ $ref: "#/components/schemas/PaymentMethod"
+ description: "This root container defines a seller's payment business policy\
+ \ for a specific marketplace and category group. This type is used when creating\
+ \ or updating a payment business policy."
+ PaymentPolicyResponse:
+ type: "object"
+ properties:
+ href:
+ type: "string"
+ description: "This field is for future use."
+ limit:
+ type: "integer"
+ description: "This field is for future use."
+ format: "int32"
+ next:
+ type: "string"
+ description: "This field is for future use."
+ offset:
+ type: "integer"
+ description: "This field is for future use."
+ format: "int32"
+ paymentPolicies:
+ type: "array"
+ description: "A list of all of the seller's payment business policies defined\
+ \ for the specified marketplace. This array will be returned as empty\
+ \ if no payment business policies are defined for the specified marketplace."
+ items:
+ $ref: "#/components/schemas/PaymentPolicy"
+ prev:
+ type: "string"
+ description: "This field is for future use."
+ total:
+ type: "integer"
+ description: "The total number of payment business policies retrieved in\
+ \ the result set.
If no payment business policies are defined\
+ \ for the specified marketplace, this field is returned with a value of\
+ \ 0."
+ format: "int32"
+ description: "The response payload for the getPaymentPolicies method.\
+ \
Note: Pagination has not yet been\
+ \ enabled for getPaymentPolicies, so all of the pagination-related\
+ \ fields are for future use."
+ PaymentsProgramOnboardingResponse:
+ type: "object"
+ properties:
+ onboardingStatus:
+ type: "string"
+ description: "This enumeration value indicates the eligibility of payment\
+ \ onboarding for the registered site. For implementation help, refer to\
+ \ eBay\
+ \ API documentation"
+ steps:
+ type: "array"
+ description: "An array of the active process steps for payment onboarding\
+ \ and the status of each step. This array includes the step name,\
+ \ step status, and a webUrl to the IN_PROGRESS\
+ \ step. The step names are returned in sequential order. "
+ items:
+ $ref: "#/components/schemas/PaymentsProgramOnboardingSteps"
+ description: "Type used by the payments program onboarding response"
+ PaymentsProgramOnboardingSteps:
+ type: "object"
+ properties:
+ name:
+ type: "string"
+ description: "The name of the step in the steps array. Over time, these\
+ \ names are subject to change as processes change. The output sample contains\
+ \ example step names. Review an actual call response for updated step\
+ \ names. "
+ status:
+ type: "string"
+ description: "This enumeration value indicates the status of the associated\
+ \ step. Note: Only one\
+ \ step can be IN_PROGRESS at a time.
For implementation\
+ \ help, refer to eBay\
+ \ API documentation"
+ webUrl:
+ type: "string"
+ description: "This URL provides access to the IN_PROGRESS step."
+ description: "The payments program onboarding steps, status, and link."
+ PaymentsProgramResponse:
+ type: "object"
+ properties:
+ marketplaceId:
+ type: "string"
+ description: "The ID of the eBay marketplace to which the payment program\
+ \ applies. For implementation help, refer to eBay\
+ \ API documentation"
+ paymentsProgramType:
+ type: "string"
+ description: "This parameter specifies the payment program whose status\
+ \ is returned by the call.
Currently the only supported payments\
+ \ program is EBAY_PAYMENTS. For implementation help, refer\
+ \ to eBay\
+ \ API documentation"
+ status:
+ type: "string"
+ description: "The enumeration value returned in this field indicates whether\
+ \ or not the seller's account is enabled for the payments program. For\
+ \ implementation help, refer to eBay\
+ \ API documentation"
+ wasPreviouslyOptedIn:
+ type: "boolean"
+ description: "If returned as true, the seller was at one point\
+ \ opted-in to the associated payment program, but they later opted out\
+ \ of the program. A value of false indicates the seller never\
+ \ opted-in to the program or if they did opt-in to the program, they never\
+ \ opted-out of it.
It's important to note that the setting of\
+ \ this field does not indicate the seller's current status regarding the\
+ \ payment program. It is possible for this field to return true\
+ \ while the status field returns OPTED_IN."
+ description: "The response object containing the sellers status with regards\
+ \ to the specified payment program."
+ Program:
+ type: "object"
+ properties:
+ programType:
+ type: "string"
+ description: "The seller program to opt in to when part of an optInToProgram\
+ \ request, or out of when part of an optOutOfProgram request.\
+ \ When returned in an getOptedInPrograms response, a separate programType\
+ \ field is returned for each seller program that the seller is opted in\
+ \ to. For implementation help, refer to eBay\
+ \ API documentation"
+ description: "The seller program to opt in to when part of an optInToProgram\
+ \ request, or out of when part of an optOutOfProgram request."
+ Programs:
+ type: "object"
+ properties:
+ programs:
+ type: "array"
+ description: "An array of seller programs that the seller's account is opted\
+ \ in to. An empty array is returned if the seller is not opted in to any\
+ \ of the seller programs."
+ items:
+ $ref: "#/components/schemas/Program"
+ description: "The base response type of the getOptedInPrograms method."
+ RateTable:
+ type: "object"
+ properties:
+ countryCode:
+ type: "string"
+ description: "A two-letter ISO 3166 country\
+ \ code representing the eBay marketplace where the shipping rate table\
+ \ is defined. For implementation help, refer to eBay\
+ \ API documentation"
+ locality:
+ type: "string"
+ description: "This enumeration value returned here indicates whether the\
+ \ shipping rate table is a domestic or international shipping rate table.\
+ \ For implementation help, refer to eBay\
+ \ API documentation"
+ name:
+ type: "string"
+ description: "The seller-defined name for the shipping rate table."
+ rateTableId:
+ type: "string"
+ description: "A unique eBay-assigned ID for a seller's shipping rate table.\
+ \ These rateTableId values are used to associate shipping rate\
+ \ tables to fulfillment business policies or directly to listings through\
+ \ an add/revise/relist call in the Trading API."
+ description: "This type is used to provide details about each shipping rate\
+ \ table that is returned in the getRateTables response."
+ RateTableResponse:
+ type: "object"
+ properties:
+ rateTables:
+ type: "array"
+ description: "An array of all shipping rate tables defined for a marketplace\
+ \ (or all marketplaces if no country_code query parameter is used).\
+ \ This array will be returned as empty if the seller has no defined shipping\
+ \ rate tables for the specified marketplace."
+ items:
+ $ref: "#/components/schemas/RateTable"
+ description: "This type is the base response of the getRateTables method."
+ RecipientAccountReference:
+ type: "object"
+ properties:
+ referenceId:
+ type: "string"
+ description: "Note: DO NOT USE THIS FIELD.\
+ \ eBay now controls all electronic payment methods available for a marketplace,\
+ \ and a seller never has to specify any electronic payment methods."
+ referenceType:
+ type: "string"
+ description: "Note: DO NOT USE THIS FIELD.\
+ \ eBay now controls all electronic payment methods available for a marketplace,\
+ \ and a seller never has to specify any electronic payment methods.\
+ \ For implementation help, refer to eBay\
+ \ API documentation"
+ description: "Note: This type is no longer\
+ \ applicable. eBay now controls all electronic payment methods available for\
+ \ a marketplace, and a seller never has to specify any electronic payment\
+ \ methods."
+ Region:
+ type: "object"
+ properties:
+ regionName:
+ type: "string"
+ description: "A string that indicates the name of a region, as defined by\
+ \ eBay. A \"region\" can be either a 'world region' (e.g., the \"Middle\
+ \ East\" or \"Southeast Asia\"), a country (represented with a two-letter\
+ \ country code), a state or province (represented with a two-letter code),\
+ \ or a special domestic region within a country.
The GeteBayDetails\
+ \ call in the Trading API can be used to retrieve the world regions and\
+ \ special domestic regions within a specific country. To get these enumeration\
+ \ values, call GeteBayDetails with the DetailName value\
+ \ set to ExcludeShippingLocationDetails."
+ regionType:
+ type: "string"
+ description: "Reserved for future use. For implementation help, refer to\
+ \ eBay\
+ \ API documentation"
+ description: "This type is used to define specific shipping regions. There are\
+ \ four 'levels' of shipping regions, including large geographical regions\
+ \ (like 'Asia', 'Europe', or 'Middle East'), individual countries, US states\
+ \ or Canadian provinces, and special locations/domestic regions within a country\
+ \ (like 'Alaska/Hawaii' or 'PO Box')."
+ RegionSet:
+ type: "object"
+ properties:
+ regionExcluded:
+ type: "array"
+ description: "An array of one or more regionName values that specify\
+ \ the areas to where a seller does not ship. A regionExcluded list\
+ \ should only be set in the top-level shipToLocations container\
+ \ and not within the shippingServices.shipToLocations container\
+ \ used to specify which shipping regions are serviced by each available\
+ \ shipping service option. Many sellers are willing to ship to many\
+ \ international locations, but they may want to exclude some world regions\
+ \ or some countries as places they are willing to ship to.
This\
+ \ array will be returned as empty if no shipping regions are excluded\
+ \ with the fulfillment business policy.
Note: The regionExcluded array is not applicable for motor\
+ \ vehicle business policies on the US, CA, or UK marketplaces. If this\
+ \ array is used in a createFulfillmentPolicy or updateFulfillmentPolicy\
+ \ request, it will be ignored."
+ items:
+ $ref: "#/components/schemas/Region"
+ regionIncluded:
+ type: "array"
+ description: "An array of one or more regionName fields that specify\
+ \ the areas to where a seller ships.
Each eBay marketplace supports\
+ \ its own set of allowable shipping locations.
Note: The regionIncluded array is not applicable\
+ \ for motor vehicle business policies on the US, CA, or UK marketplaces.\
+ \ If this array is used in a createFulfillmentPolicy or updateFulfillmentPolicy\
+ \ request, it will be ignored."
+ items:
+ $ref: "#/components/schemas/Region"
+ description: "This type consists of the regionIncluded and regionExcluded\
+ \ arrays, which indicate the areas to where the seller does and doesn't ship."
+ ReturnPolicy:
+ type: "object"
+ properties:
+ categoryTypes:
+ type: "array"
+ description: "This container indicates which category group that the return\
+ \ policy applies to.
Note: Return\
+ \ business policies are not applicable to motor vehicle listings, so the\
+ \ categoryTypes.name value will always be ALL_EXCLUDING_MOTORS_VEHICLES\
+ \ for return business policies."
+ items:
+ $ref: "#/components/schemas/CategoryType"
+ description:
+ type: "string"
+ description: "A seller-defined description of the return business policy.\
+ \ This description is only for the seller's use, and is not exposed on\
+ \ any eBay pages.
Max length: 250"
+ extendedHolidayReturnsOffered:
+ type: "boolean"
+ description: "
Important!\
+ \ This field is deprecated, since eBay no longer supports extended holiday\
+ \ returns. Any value supplied in this field is neither read nor returned.
"
+ internationalOverride:
+ description: "This container shows the seller's international return policy\
+ \ settings. This container is only returned if the seller has set a separate\
+ \ international return policy for the business policy. International return\
+ \ policies are optional, even if the seller ships to international locations.\
+ \ If a separate international return policy is not set, all of the domestic\
+ \ return policy settings also apply to international orders."
+ $ref: "#/components/schemas/InternationalReturnOverrideType"
+ marketplaceId:
+ type: "string"
+ description: "The ID of the eBay marketplace to which this return business\
+ \ policy applies. For implementation help, refer to eBay\
+ \ API documentation"
+ name:
+ type: "string"
+ description: "A seller-defined name for this return business policy. Names\
+ \ must be unique for policies assigned to the same marketplace.
Max\
+ \ length: 64"
+ refundMethod:
+ type: "string"
+ description: "This field indicates the refund method offered by the seller.\
+ \ Its value will be MONEY_BACK unless the seller is enabled\
+ \ for Buy online, Pickup in Store or Click and Collect,\
+ \ and then it might be MERCHANDISE_CREDIT. Getting their\
+ \ money back for returned items is always an option for buyers, regardless\
+ \ of what the seller sets in this field. For implementation help, refer\
+ \ to eBay\
+ \ API documentation"
+ restockingFeePercentage:
+ type: "string"
+ description: "Important!\
+ \ This field is deprecated, since eBay no longer allows sellers to charge\
+ \ a restocking fee for buyer remorse returns. If this field is included,\
+ \ it is ignored and it is no longer returned.
"
+ returnInstructions:
+ type: "string"
+ description: "This text-based field provides more details on seller-specified\
+ \ return instructions. This field is only returned if set for the return\
+ \ business policy.
Important! This field is no longer supported on many eBay\
+ \ marketplaces. To see if a marketplace and eBay category does support\
+ \ this field, call getReturnPolicies method of the Metadata API. Then you will\
+ \ look for the policyDescriptionEnabled field with a value of true\
+ \ for the eBay category.
Max length: 5000 (8000 for\
+ \ DE)"
+ returnMethod:
+ type: "string"
+ description: "This field is only returned if the seller is willing to offer\
+ \ a replacement item as an alternative to 'Money Back'. For implementation\
+ \ help, refer to eBay\
+ \ API documentation"
+ returnPeriod:
+ description: "This container indicates the number of calendar days that\
+ \ the buyer has to return an item. The return period begins when the item\
+ \ is marked \"delivered\" at the buyer's specified ship-to location. \
+ \
Most categories support 30-day and 60-day return periods.
Note: Unless the seller has set a separate\
+ \ international return policy through the internationalOverride\
+ \ container, this return period will be valid for domestic and international\
+ \ returns (if the seller ships internationally)."
+ $ref: "#/components/schemas/TimeDuration"
+ returnPolicyId:
+ type: "string"
+ description: "A unique eBay-assigned ID for a return business policy. This\
+ \ ID is generated when the policy is created."
+ returnsAccepted:
+ type: "boolean"
+ description: "If this field is returned as true, the seller\
+ \ accepts returns. If set to false, the seller does not accept\
+ \ returns.
Note: Top-Rated\
+ \ sellers must accept item returns and the handlingTime should\
+ \ be set to zero days or one day for a listing to receive a Top-Rated\
+ \ Plus badge on the View Item or search result pages. For more information\
+ \ on eBay's Top-Rated seller program, see Becoming a Top Rated Seller and qualifying for Top Rated Plus benefits."
+ returnShippingCostPayer:
+ type: "string"
+ description: "This field indicates who is responsible for paying for the\
+ \ shipping charges for returned items. The field can be set to either\
+ \ BUYER or SELLER.
Depending on the\
+ \ return policy and specifics of the return, either the buyer or the seller\
+ \ can be responsible for the return shipping costs. Note that the seller\
+ \ is always responsible for return shipping costs for SNAD-related issues.\
+ \ For implementation help, refer to eBay\
+ \ API documentation"
+ description: "This type is used by the returnPolicy response container,\
+ \ a container which defines a seller's return business policy for a specific\
+ \ marketplace."
+ ReturnPolicyRequest:
+ type: "object"
+ properties:
+ categoryTypes:
+ type: "array"
+ description: "This container indicates which category group that the return\
+ \ policy applies to.
Note: Return\
+ \ business policies are not applicable to motor vehicle listings, so the\
+ \ categoryTypes.name value must be set to ALL_EXCLUDING_MOTORS_VEHICLES\
+ \ for return business policies."
+ items:
+ $ref: "#/components/schemas/CategoryType"
+ description:
+ type: "string"
+ description: "A seller-defined description of the return business policy.\
+ \ This description is only for the seller's use, and is not exposed on\
+ \ any eBay pages.
Max length: 250"
+ extendedHolidayReturnsOffered:
+ type: "boolean"
+ description: "Important!\
+ \ This field is deprecated, since eBay no longer supports extended holiday\
+ \ returns. Any value supplied in this field is neither read nor returned.
"
+ internationalOverride:
+ description: "This container is used by the seller to specify a separate\
+ \ international return policy. If a separate international return policy\
+ \ is not defined by a seller, all of the domestic return policy settings\
+ \ will also apply to international orders."
+ $ref: "#/components/schemas/InternationalReturnOverrideType"
+ marketplaceId:
+ type: "string"
+ description: "The ID of the eBay marketplace to which this return business\
+ \ policy applies. For implementation help, refer to eBay\
+ \ API documentation"
+ name:
+ type: "string"
+ description: "A seller-defined name for this return business policy. Names\
+ \ must be unique for policies assigned to the same marketplace.
Max\
+ \ length: 64"
+ refundMethod:
+ type: "string"
+ description: "This field sets the refund method to use for returned items.\
+ \ Its value defaults to MONEY_BACK if omitted, so this field\
+ \ is only needed for Buy online, Pickup in Store or Click and\
+ \ Collect items where the seller is willing to offer merchandise credit\
+ \ as an additional refund method to buyers. Getting their money back for\
+ \ returned items is always an option for buyers, regardless of what the\
+ \ seller sets in this field.Important! If this field is not included in\
+ \ a return business policy, it will default to MONEY_BACK.
\
+ \ For implementation help, refer to eBay\
+ \ API documentation"
+ restockingFeePercentage:
+ type: "string"
+ description: "Important!\
+ \ This field is deprecated, since eBay no longer allows sellers to charge\
+ \ a restocking fee for buyer remorse returns. If this field is included,\
+ \ it is ignored.
"
+ returnInstructions:
+ type: "string"
+ description: "This text-based field provides more details on seller-specified\
+ \ return instructions.
Important! This field is no longer supported\
+ \ on many eBay marketplaces. To see if a marketplace and eBay category\
+ \ does support this field, call getReturnPolicies method of the Metadata API. Then you will\
+ \ look for the policyDescriptionEnabled field with a value of true\
+ \ for the eBay category.
Max length: 5000 (8000 for\
+ \ DE)"
+ returnMethod:
+ type: "string"
+ description: "This field can be used if the seller is willing and able to\
+ \ offer a replacement item as an alternative to 'Money Back'. For implementation\
+ \ help, refer to eBay\
+ \ API documentation"
+ returnPeriod:
+ description: "This container is used to specify the number of days that\
+ \ the buyer has to return an item. The return period begins when the item\
+ \ is marked \"delivered\" at the buyer's specified ship-to location. \
+ \
You must set the value to one that's accepted by the marketplace\
+ \ and category where the item is listed. Most categories support 30-day\
+ \ and 60-day return periods. Note: Eligible Parts & Accessories (P&A)\
+ \ listings require sellers to offer buyers free returns with a minimum\
+ \ return period of 30 days. See Support for easy returns in Parts and Accessories\
+ \ for details.
For a definitive list of return periods\
+ \ for one or more categories, call getReturnPolicies method of the Metadata API.
The return\
+ \ period is set using the TimeDuration type, where you set unit\
+ \ to DAY and value to either 30 or 60\
+ \ (or other value, as appropriate).
Note that this value cannot\
+ \ be modified if the listing has bids or sales, or if the listing ends\
+ \ within 12 hours.
Required if returnsAccepted\
+ \ is set to true."
+ $ref: "#/components/schemas/TimeDuration"
+ returnsAccepted:
+ type: "boolean"
+ description: "If set to true, the seller accepts returns. If\
+ \ set to false, the seller does not accept returns.
Note:Top-Rated sellers must accept\
+ \ item returns and the handlingTime should be set to zero days\
+ \ or one day for a listing to receive a Top-Rated Plus badge on the View\
+ \ Item or search result pages. For more information on eBay's Top-Rated\
+ \ seller program, see Becoming a Top Rated Seller and qualifying for Top Rated Plus benefits.
"
+ returnShippingCostPayer:
+ type: "string"
+ description: "This field indicates who is responsible for paying for the\
+ \ shipping charges for returned items. The field can be set to either\
+ \ BUYER or SELLER. Note: Eligible Parts &\
+ \ Accessories (P&A) listings require sellers to offer buyers free returns\
+ \ with a minimum return period of 30 days. See Support for easy returns in Parts and Accessories\
+ \ for details.
Depending on the return policy and specifics\
+ \ of the return, either the buyer or the seller can be responsible for\
+ \ the return shipping costs. Note that the seller is always responsible\
+ \ for return shipping costs for SNAD-related issues.
This field\
+ \ is conditionally required if returnsAccepted is set to true.\
+ \ For implementation help, refer to eBay\
+ \ API documentation"
+ description: "This root container defines a seller's return business policy\
+ \ for a specific marketplace and category group. This type is used when creating\
+ \ or updating a return business policy."
+ ReturnPolicyResponse:
+ type: "object"
+ properties:
+ href:
+ type: "string"
+ description: "This field is for future use."
+ limit:
+ type: "integer"
+ description: "This field is for future use."
+ format: "int32"
+ next:
+ type: "string"
+ description: "This field is for future use."
+ offset:
+ type: "integer"
+ description: "This field is for future use."
+ format: "int32"
+ prev:
+ type: "string"
+ description: "This field is for future use."
+ returnPolicies:
+ type: "array"
+ description: "A list of all of the seller's return business policies defined\
+ \ for the specified marketplace. This array will be returned as empty\
+ \ if no return business policies are defined for the specified marketplace."
+ items:
+ $ref: "#/components/schemas/ReturnPolicy"
+ total:
+ type: "integer"
+ description: "The total number of return business policies retrieved in\
+ \ the result set.
If no return business policies are defined\
+ \ for the specified marketplace, this field is returned with a value of\
+ \ 0."
+ format: "int32"
+ description: "The response payload for the getReturnPolicies method.\
+ \
Note: Pagination has not yet been\
+ \ enabled for getReturnPolicies, so all of the pagination-related fields\
+ \ are for future use."
+ SalesTax:
+ type: "object"
+ properties:
+ countryCode:
+ type: "string"
+ description: "The country code enumeration value identifies the country\
+ \ to which this sales tax rate applies.
Note: Sales-tax tables are available only for the US and Canada\
+ \ marketplaces. Therefore, the only supported values are:\
+ \ For implementation help, refer to eBay\
+ \ API documentation"
+ salesTaxJurisdictionId:
+ type: "string"
+ description: "A unique ID that identifies the sales tax jurisdiction to\
+ \ which the sales tax rate applies.
Note:\
+ \ When the returned countryCode is US, the only\
+ \ supported return values for salesTaxJurisdictionId are:AS\
+ \ (American Samoa)GU (GuamMP\
+ \ Northern Mariana IslandsPW (Palau)VI\
+ \ (US Virgin Islands)
"
+ salesTaxPercentage:
+ type: "string"
+ description: "The sales tax rate that will be applied to sales price. The\
+ \ shippingAndHandlingTaxed value will indicate whether or not sales\
+ \ tax is also applied to shipping and handling charges
Although\
+ \ it is a string, a percentage value is returned here, such as 7.75"
+ shippingAndHandlingTaxed:
+ type: "boolean"
+ description: "If returned as true, sales tax is also applied\
+ \ to shipping and handling charges, and not just the total sales price\
+ \ of the order."
+ description: "This type is used to provide sales tax settings for a specific\
+ \ tax jurisdiction."
+ SalesTaxBase:
+ type: "object"
+ properties:
+ salesTaxPercentage:
+ type: "string"
+ description: "This field is used to set the sales tax rate for the tax jurisdiction\
+ \ set in the call URI. When applicable to an order, this sales tax rate\
+ \ will be applied to sales price. The shippingAndHandlingTaxed\
+ \ value will indicate whether or not sales tax is also applied to shipping\
+ \ and handling charges
Although it is a string, a percentage value\
+ \ is set here, such as 7.75."
+ shippingAndHandlingTaxed:
+ type: "boolean"
+ description: "This field is set to true if the seller wishes\
+ \ to apply sales tax to shipping and handling charges, and not just the\
+ \ total sales price of the order. Otherwise, this field's value should\
+ \ be set to false."
+ description: "This type is used by the base request of the createOrReplaceSalesTax. "
+ SalesTaxInput:
+ type: "object"
+ properties:
+ countryCode:
+ type: "string"
+ description: "This parameter specifies the two-letter ISO 3166 code\
+ \ of the country for which a sales-tax table entry is to be created or\
+ \ updated.
Note: Sales-tax tables\
+ \ are available only for the US and Canada marketplaces. Therefore, the\
+ \ only supported values are:"
+ salesTaxJurisdictionId:
+ type: "string"
+ description: "This parameter specifies the ID of the tax jurisdiction for\
+ \ which a sales-tax table entry is to be created or updated.
Valid\
+ \ jurisdiction IDs can be retrieved using the getSalesTaxJurisdiction method of the Metadata\
+ \ API.
Note: When countryCode\
+ \ is set to US, the only supported values for jurisdictionId\
+ \ are:AS (American Samoa)GU\
+ \ (Guam)MP (Northern Mariana Islands)PW\
+ \ (Palau)VI (US Virgin Islands)
"
+ salesTaxPercentage:
+ type: "string"
+ description: "This parameter specifies the sales tax rate for the specified\
+ \ salesTaxJurisdictionId. When applicable to an order, this sales\
+ \ tax rate will be applied to the sales price. The shippingAndHandlingTaxed\
+ \ value indicates whether or not sales tax is also applied to shipping\
+ \ and handling charges
Although it is a string, a percentage value\
+ \ is set here, such as 7.75."
+ shippingAndHandlingTaxed:
+ type: "boolean"
+ description: "This parameter is set to true if the seller wishes\
+ \ to apply sales tax to shipping and handling charges and not just the\
+ \ total sales price of an order. Otherwise, this parameter's value should\
+ \ be set to false."
+ SalesTaxes:
+ type: "object"
+ properties:
+ salesTaxes:
+ type: "array"
+ description: "An array of one or more sales-tax rate entries for a specified\
+ \ country.
If no sales-tax rate entries are set up, no response\
+ \ payload is returned, but an HTTP status code of 204 No Content\
+ \ is returned."
+ items:
+ $ref: "#/components/schemas/SalesTax"
+ description: "This type is used by the root response of the getSalesTaxes\
+ \ method."
+ SellerEligibilityMultiProgramResponse:
+ type: "object"
+ properties:
+ advertisingEligibility:
+ type: "array"
+ description: "An array of response fields that define the seller eligibility\
+ \ for eBay advertising programs."
+ items:
+ $ref: "#/components/schemas/SellerEligibilityResponse"
+ description: "The base response of the getAdvertisingEligibility method\
+ \ that contains the seller eligibility information for one or more advertising\
+ \ programs."
+ SellerEligibilityResponse:
+ type: "object"
+ properties:
+ programType:
+ type: "string"
+ description: "The eBay advertising program for which a seller may be eligible.\
+ \ For implementation help, refer to eBay\
+ \ API documentation"
+ reason:
+ type: "string"
+ description: "The reason why a seller is ineligible for the specified eBay\
+ \ advertising program.
This field is only returned if the seller\
+ \ is ineligible for the eBay advertising program. For implementation help,\
+ \ refer to eBay\
+ \ API documentation"
+ status:
+ type: "string"
+ description: "The seller eligibility status for the specified eBay advertising\
+ \ program. For implementation help, refer to eBay\
+ \ API documentation"
+ description: "A type that is used to provide the seller's eligibility status\
+ \ for an eBay advertising program."
+ SellingLimit:
+ type: "object"
+ properties:
+ amount:
+ description: "This container shows the monthly cap for total sales amount\
+ \ allowed for the seller's account. This container may not be returned\
+ \ if a seller does not have a monthly cap for total sales amount."
+ $ref: "#/components/schemas/Amount"
+ quantity:
+ type: "integer"
+ description: "This field shows the monthly cap for total quantity sold allowed\
+ \ for the seller's account. This field may not be returned if a seller\
+ \ does not have a monthly cap for total quantity sold."
+ format: "int32"
+ description: "Type used by the sellingLimit container, a container that\
+ \ lists the monthly cap for the quantity of items sold and total sales amount\
+ \ allowed for the seller's account."
+ SellingPrivileges:
+ type: "object"
+ properties:
+ sellerRegistrationCompleted:
+ type: "boolean"
+ description: "If this field is returned as true, the seller's\
+ \ registration is completed. If this field is returned as false,\
+ \ the registration process is not complete."
+ sellingLimit:
+ description: "This container lists the monthly cap for the quantity of items\
+ \ sold and total sales amount allowed for the seller's account. This container\
+ \ may not be returned if a seller does not have a monthly cap for total\
+ \ quantity sold and total sales amount. Note: The selling limit value\
+ \ returned in getPrivileges may vary slightly from the value displayed\
+ \ in Seller Hub. The value in Seller Hub is an abbreviated figure, where\
+ \ rounding is applied.
"
+ $ref: "#/components/schemas/SellingLimit"
+ description: "This type is used by the base response of the getPrivileges\
+ \ method."
+ SetFulfillmentPolicyResponse:
+ type: "object"
+ properties:
+ categoryTypes:
+ type: "array"
+ description: "This container indicates whether the fulfillment business\
+ \ policy applies to motor vehicle listings, or if it applies to non-motor\
+ \ vehicle listings."
+ items:
+ $ref: "#/components/schemas/CategoryType"
+ description:
+ type: "string"
+ description: "A seller-defined description of the fulfillment policy. This\
+ \ description is only for the seller's use, and is not exposed on any\
+ \ eBay pages. This field is returned if set for the policy.
Max\
+ \ length: 250"
+ freightShipping:
+ type: "boolean"
+ description: "If returned as true, the seller offers freight\
+ \ shipping. Freight shipping can be used for large items over 150 lbs."
+ fulfillmentPolicyId:
+ type: "string"
+ description: "A unique eBay-assigned ID for a fulfillment business policy.\
+ \ This ID is generated when the policy is created."
+ globalShipping:
+ type: "boolean"
+ description: "Note: This field is only\
+ \ applicable for the eBay United Kingdom marketplace (EBAY_GB).
This\
+ \ field is included and set to true if the seller wants to\
+ \ use the Global Shipping Program for international shipments. See the\
+ \ Global Shipping Program help topic for more details and requirements\
+ \ on the Global Shipping Program.
A seller can use a combination\
+ \ of the Global Shipping Program and other international shipping services.\
+ \
If set to false or if the field is omitted, the\
+ \ seller has to manually specifying individual international shipping\
+ \ services (if the seller ships internationally), as described in Setting up worldwide shipping.
Sellers opt in or out\
+ \ of the Global Shipping Program through the Shipping preferences in My\
+ \ eBay.
eBay International Shipping is an account level setting;\
+ \ no field needs to be set in a Fulfillment business policy to enable\
+ \ eBay International Shipping. If a US seller's account is opted in to\
+ \ eBay International Shipping, this shipping option will be enabled automatically\
+ \ for all listings where international shipping is available. A US seller\
+ \ who is opted in to eBay International Shipping can also specify individual\
+ \ international shipping service options for a Fulfillment business policy."
+ handlingTime:
+ description: "Specifies the maximum number of business days the seller commits\
+ \ to for preparing and shipping an order after receiving a cleared payment\
+ \ for the order. This time does not include the transit time it takes\
+ \ the shipping carrier to deliver the order. If only local pickup or\
+ \ freight shipping is available for the item, this container may not get\
+ \ returned.
"
+ $ref: "#/components/schemas/TimeDuration"
+ localPickup:
+ type: "boolean"
+ description: "If returned as true, local pickup is available\
+ \ for items using this policy."
+ marketplaceId:
+ type: "string"
+ description: "The ID of the eBay marketplace to which this fulfillment business\
+ \ policy applies. For implementation help, refer to eBay\
+ \ API documentation"
+ name:
+ type: "string"
+ description: "A seller-defined name for this fulfillment business policy.\
+ \
Max length: 64"
+ pickupDropOff:
+ type: "boolean"
+ description: "If returned as true, the seller offers the \"\
+ Click and Collect\" option.
Currently, \"Click and Collect\" is\
+ \ available only to large retail merchants the eBay AU, UK, DE, FR, and\
+ \ IT marketplaces."
+ shippingOptions:
+ type: "array"
+ description: "This array is used to provide detailed information on the\
+ \ domestic and international shipping options available for the policy.\
+ \ A separate ShippingOption object covers domestic shipping service\
+ \ options and international shipping service options (if the seller ships\
+ \ to international locations).
The optionType field indicates\
+ \ whether the ShippingOption object applies to domestic or international\
+ \ shipping, and the costType field indicates whether flat-rate\
+ \ shipping or calculated shipping will be used. A separate ShippingServices\
+ \ object is used to specify cost and other details for every available\
+ \ domestic and international shipping service option.
"
+ items:
+ $ref: "#/components/schemas/ShippingOption"
+ shipToLocations:
+ description: "This container consists of the regionIncluded and regionExcluded\
+ \ containers, which define the geographical regions/countries/states or\
+ \ provinces/domestic regions where the seller does and doesn't ship to\
+ \ with this fulfillment policy."
+ $ref: "#/components/schemas/RegionSet"
+ warnings:
+ type: "array"
+ description: "An array of one or more errors or warnings that were generated\
+ \ during the processing of the request. If there were no issues with the\
+ \ request, this array will return empty."
+ items:
+ $ref: "#/components/schemas/Error"
+ description: "Complex type that that gets populated with a response containing\
+ \ a fulfillment policy."
+ SetPaymentPolicyResponse:
+ type: "object"
+ properties:
+ categoryTypes:
+ type: "array"
+ description: "This container indicates whether the payment business policy\
+ \ applies to motor vehicle listings, or if it applies to non-motor vehicle\
+ \ listings."
+ items:
+ $ref: "#/components/schemas/CategoryType"
+ deposit:
+ description: "This container is only returned if the seller just created\
+ \ or updated a motor vehicles payment business policy and requires buyers\
+ \ to pay an initial deposit after they commit to buying a motor vehicle."
+ $ref: "#/components/schemas/Deposit"
+ description:
+ type: "string"
+ description: "A seller-defined description of the payment business policy.\
+ \ This description is only for the seller's use, and is not exposed on\
+ \ any eBay pages. This field is returned if set for the policy.
Max\
+ \ length: 250"
+ fullPaymentDueIn:
+ description: "The number of days (after the buyer commits to buy) that a\
+ \ buyer has to pay the remaining balance of a motor vehicle transaction.\
+ \ Sellers can set this value to 3, 7, 10, or 14 days.Note: This value is always returned if categoryTypes is\
+ \ set to MOTORS_VEHICLES.
"
+ $ref: "#/components/schemas/TimeDuration"
+ immediatePay:
+ type: "boolean"
+ description: "The value returned in this field will reflect the value set\
+ \ by the seller in the immediatePay request field. A value of true\
+ \ indicates that immediate payment is required from the buyer for: - A\
+ \ fixed-price item
- An auction item where the buyer is using the\
+ \ 'Buy it Now' option
- A deposit for a motor vehicle listing
It\
+ \ is possible for the seller to set this field as true in\
+ \ the payment business policy, but it will not apply in some scenarios.\
+ \ For example, immediate payment is not applicable for auction listings\
+ \ that have a winning bidder, for buyer purchases that involve the Best\
+ \ Offer feature, or for transactions that happen offline between the buyer\
+ \ and seller."
+ marketplaceId:
+ type: "string"
+ description: "The ID of the eBay marketplace to which this payment business\
+ \ policy applies. For implementation help, refer to eBay\
+ \ API documentation"
+ name:
+ type: "string"
+ description: "A seller-defined name for this payment business policy. Names\
+ \ must be unique for policies assigned to the same marketplace.
Max\
+ \ length: 64"
+ paymentInstructions:
+ type: "string"
+ description: "Note: NO LONGER SUPPORTED. Although\
+ \ this field may be returned for some older payment business policies,\
+ \ payment instructions are no longer supported by payment business policies.\
+ \ If this field is returned, it can be ignored and these payment instructions\
+ \ will not appear in any listings that use the corresponding business\
+ \ policy.
A free-form string field that allows sellers to add detailed\
+ \ payment instructions to their listings."
+ paymentMethods:
+ type: "array"
+ description: "This array shows the available payment methods that the seller\
+ \ has set for the payment business policy.
Sellers do not have\
+ \ to specify any electronic payment methods for listings, so this array\
+ \ will often be returned empty unless the payment business policy is intended\
+ \ for motor vehicle listings or other items in categories where offline\
+ \ payments are required or supported."
+ items:
+ $ref: "#/components/schemas/PaymentMethod"
+ paymentPolicyId:
+ type: "string"
+ description: "A unique eBay-assigned ID for a payment business policy. This\
+ \ ID is generated when the policy is created."
+ warnings:
+ type: "array"
+ description: "An array of one or more errors or warnings that were generated\
+ \ during the processing of the request. If there were no issues with the\
+ \ request, this array will return empty."
+ items:
+ $ref: "#/components/schemas/Error"
+ description: "Complex type that that gets populated with a response containing\
+ \ a payment policy."
+ SetReturnPolicyResponse:
+ type: "object"
+ properties:
+ categoryTypes:
+ type: "array"
+ description: "This field always returns ALL_EXCLUDING_MOTORS_VEHICLES\
+ \ for return business policies, since return business policies are not\
+ \ applicable to motor vehicle listings."
+ items:
+ $ref: "#/components/schemas/CategoryType"
+ description:
+ type: "string"
+ description: "A seller-defined description of the return business policy.\
+ \ This description is only for the seller's use, and is not exposed on\
+ \ any eBay pages. This field is returned if set for the policy.
Max\
+ \ length: 250"
+ extendedHolidayReturnsOffered:
+ type: "boolean"
+ description: "Important!\
+ \ This field is deprecated, since eBay no longer supports extended holiday\
+ \ returns. This field should no longer be returned.
"
+ internationalOverride:
+ description: "This container is used by the seller to specify a separate\
+ \ international return policy, and will only be returned if the seller\
+ \ has set a separate return policy for international orders. If a separate\
+ \ international return policy is not defined by a seller, all of the domestic\
+ \ return policy settings will also apply to international orders."
+ $ref: "#/components/schemas/InternationalReturnOverrideType"
+ marketplaceId:
+ type: "string"
+ description: "The ID of the eBay marketplace to which this return business\
+ \ policy applies. For implementation help, refer to eBay\
+ \ API documentation"
+ name:
+ type: "string"
+ description: "A seller-defined name for this return business policy. Names\
+ \ must be unique for policies assigned to the same marketplace.
Max\
+ \ length: 64"
+ refundMethod:
+ type: "string"
+ description: "If a seller indicates that they will accept buyer returns,\
+ \ this value will be MONEY_BACK. For implementation help,\
+ \ refer to eBay\
+ \ API documentation"
+ restockingFeePercentage:
+ type: "string"
+ description: "Important!\
+ \ This field is deprecated, since eBay no longer allows sellers to charge\
+ \ a restocking fee for buyer remorse returns.
"
+ returnInstructions:
+ type: "string"
+ description: "This text-based field provides more details on seller-specified\
+ \ return instructions.
Important! This field is no longer supported\
+ \ on many eBay marketplaces. To see if a marketplace and eBay category\
+ \ does support this field, call getReturnPolicies method of the Metadata API. Then you will\
+ \ look for the policyDescriptionEnabled field with a value of true\
+ \ for the eBay category.
Max length: 5000 (8000 for\
+ \ DE)"
+ returnMethod:
+ type: "string"
+ description: "This field will be returned if the seller is willing and able\
+ \ to offer a replacement item as an alternative to 'Money Back'. For implementation\
+ \ help, refer to eBay\
+ \ API documentation"
+ returnPeriod:
+ description: "This container specifies the amount of days that the buyer\
+ \ has to return the item after receiving it. The return period begins\
+ \ when the item is marked \"delivered\" at the buyer's specified ship-to\
+ \ location. This container will be returned unless the business policy\
+ \ states that the seller does not accept returns.
Note: Eligible\
+ \ Parts & Accessories (P&A) listings require sellers to offer buyers free\
+ \ returns with a minimum return period of 30 days. See Support for easy returns in Parts and Accessories\
+ \ for details.
"
+ $ref: "#/components/schemas/TimeDuration"
+ returnPolicyId:
+ type: "string"
+ description: "A unique eBay-assigned ID for a return business policy. This\
+ \ ID is generated when the policy is created."
+ returnsAccepted:
+ type: "boolean"
+ description: "If set to true, the seller accepts returns. If\
+ \ set to false, this field indicates that the seller does\
+ \ not accept returns."
+ returnShippingCostPayer:
+ type: "string"
+ description: "This field indicates who is responsible for paying for the\
+ \ shipping charges for returned items. The field can be set to either\
+ \ BUYER or SELLER. Note: Eligible Parts &\
+ \ Accessories (P&A) listings require sellers to offer buyers free returns\
+ \ with a minimum return period of 30 days. See Support for easy returns in Parts and Accessories\
+ \ for details.
Note that the seller is always responsible\
+ \ for return shipping costs for SNAD-related issues.
This container\
+ \ will be returned unless the business policy states that the seller does\
+ \ not accept returns. For implementation help, refer to eBay\
+ \ API documentation"
+ warnings:
+ type: "array"
+ description: "An array of one or more errors or warnings that were generated\
+ \ during the processing of the request. If there were no issues with the\
+ \ request, this array will return empty."
+ items:
+ $ref: "#/components/schemas/Error"
+ description: "A complex type that is populated with a response containing a\
+ \ return policies."
+ ShippingOption:
+ type: "object"
+ properties:
+ costType:
+ type: "string"
+ description: "This field defines whether the shipping cost model is FLAT_RATE\
+ \ (the same rate for all buyers, or buyers within a region if shipping\
+ \ rate tables are used) or CALCULATED (the shipping rate\
+ \ varies by the ship-to location and size and weight of the package).\
+ \
This field is conditionally required if any shipping service\
+ \ options are specified (domestic and/or international). For implementation\
+ \ help, refer to eBay\
+ \ API documentation"
+ insuranceFee:
+ description: "This field has been deprecated.
Shipping insurance\
+ \ is offered only via a shipping carrier's shipping services and is no\
+ \ longer available via eBay shipping policies."
+ $ref: "#/components/schemas/Amount"
+ insuranceOffered:
+ type: "boolean"
+ description: "This field has been deprecated.
Shipping insurance\
+ \ is offered only via a shipping carrier's shipping services and is no\
+ \ longer available via eBay shipping policies."
+ optionType:
+ type: "string"
+ description: "This field is used to indicate if the corresponding shipping\
+ \ service options (under shippingServices array) are domestic or\
+ \ international shipping service options. This field is conditionally\
+ \ required if any shipping service options are specified (domestic and/or\
+ \ international). For implementation help, refer to eBay\
+ \ API documentation"
+ packageHandlingCost:
+ description: "This container is used if the seller adds handling charges\
+ \ to domestic and/or international shipments.
Sellers can not\
+ \ specify any domestic handling charges if they offered 'free shipping'\
+ \ in the policy.
This container will only be returned if set for\
+ \ the policy."
+ $ref: "#/components/schemas/Amount"
+ rateTableId:
+ type: "string"
+ description: "This field is used if the seller wants to associate a domestic\
+ \ or international shipping rate table to the fulfillment business policy.\
+ \ The getRateTables method can be used to retrieve shipping rate table\
+ \ IDs.
With domestic and international shipping rate tables, the\
+ \ seller can set different shipping costs based on shipping regions and\
+ \ shipping speed/level of service (one-day, expedited, standard, economy).\
+ \ There are also options to add additional per-weight and handling charges.
Sellers\
+ \ need to be careful that shipping rate tables match the corresponding\
+ \ shipping service options. In other words, a domestic shipping rate table\
+ \ must not be specified in the same container where international shipping\
+ \ service options are being specified, and vice versa, and the shipping\
+ \ speed/level of service of the provided shipping service options should\
+ \ match the shipping speed/level of service options that are defined in\
+ \ the shipping rate tables.
For example, if the corresponding\
+ \ shipping rate table defines costs for one-day shipping services, there\
+ \ should be at least one one-day shipping service option specified under\
+ \ the shippingServices array.
This field is returned if\
+ \ set."
+ shippingDiscountProfileId:
+ type: "string"
+ description: "This field is the unique identifier of a seller's domestic\
+ \ or international shipping discount profile. If a buyer satisfies the\
+ \ requirements of the discount rule, this buyer will receive a shipping\
+ \ discount for the order.
The seller can create and manage shipping\
+ \ discount profiles using (Get/Set) ShippingDiscountProfiles calls\
+ \ in the Trading API or through the Shipping Preferences\
+ \ in My eBay."
+ shippingPromotionOffered:
+ type: "boolean"
+ description: "This boolean indicates whether or not the seller has set up\
+ \ a promotional shipping discount that will be available to buyers who\
+ \ satisfy the requirements of the shipping discount rule.
The\
+ \ seller can create and manage shipping promotional discounts using (Get/Set)\
+ \ ShippingDiscountProfiles calls in the Trading API or through\
+ \ the Shipping Preferences in My eBay."
+ shippingServices:
+ type: "array"
+ description: "This array consists of the domestic or international shipping\
+ \ services options that are defined for the policy. The shipping service\
+ \ options defined under this array should match what is set in the corresponding\
+ \ shippingOptions.optionType field (which controls whether domestic\
+ \ or international shipping service options are being defined). If a shipping\
+ \ rate table is being used, the specified shipping service options should\
+ \ also match the shipping rate table settings (domestic or international,\
+ \ shipping speed/level of service, etc.)
Sellers can specify up\
+ \ to four domestic shipping services and up to five international shipping\
+ \ service options by using separate shippingService containers\
+ \ for each. If the seller is using the Global Shipping Program as an international\
+ \ option, only a total of four international shipping service options\
+ \ (including GSP) can be offered.
See How to set up shipping carrier and shipping service\
+ \ values.
To use the eBay standard envelope service (eSE),\
+ \ see Using eBay standard envelope (eSE) service.
This\
+ \ array is conditionally required if the seller is offering one or more\
+ \ domestic and/or international shipping service options."
+ items:
+ $ref: "#/components/schemas/ShippingService"
+ description: "This type is used by the shippingOptions array, which is\
+ \ used to provide detailed information on the domestic and international shipping\
+ \ options available for the policy. A separate ShippingOption object\
+ \ covers domestic shipping service options and international shipping service\
+ \ options (if the seller ships to international locations)."
+ ShippingService:
+ type: "object"
+ properties:
+ additionalShippingCost:
+ description: "This container is used by the seller to cover the use case\
+ \ when a single buyer purchases multiple quantities of the same line item.\
+ \ This cost cannot exceed the corresponding shippingCost value.\
+ \ A seller will generally set this field when he/she wants to pass on\
+ \ a shipping discount to the buyer if that buyer purchases multiple quantities\
+ \ of a line item.
The seller can ship multiple quantities of the\
+ \ line item in the same package and pass on the shipping savings to the\
+ \ buyer.
If this field is not set, and a buyer purchases multiple\
+ \ quantities of an item, the seller can technically charge the same cost\
+ \ set in the shippingCost container for each individual item, but\
+ \ in general, it behooves both the seller and the buyer (and saves both\
+ \ parties money) if they discuss combined shipping.
This field\
+ \ is not applicable to auction listings or single-quantity, fixed-price\
+ \ listings.
This container is returned if set."
+ $ref: "#/components/schemas/Amount"
+ buyerResponsibleForPickup:
+ type: "boolean"
+ description: "This field should be included and set to true\
+ \ for a motor vehicle listing if it will be the buyer's responsibility\
+ \ to pick up the purchased motor vehicle after full payment is made.
This\
+ \ field is only applicable to motor vehicle listings. In the majority\
+ \ of motor vehicle listings, the seller does make the buyer responsible\
+ \ for pickup or shipment of the vehicle.
This field is returned\
+ \ if set.
Default: false"
+ buyerResponsibleForShipping:
+ type: "boolean"
+ description: "This field should be included and set to true\
+ \ for a motor vehicle listing if it will be the buyer's responsibility\
+ \ to arrange for shipment of a motor vehicle.
This field is only\
+ \ applicable to motor vehicle listings. In the majority of motor vehicle\
+ \ listings, the seller does make the buyer responsible for pickup or shipment\
+ \ of the vehicle.
This field is returned if set.
Default:\
+ \ false"
+ freeShipping:
+ type: "boolean"
+ description: "This field is included and set to true if the\
+ \ seller offers a free domestic shipping option to the buyer.
This\
+ \ field can only be included and set to true for the first\
+ \ domestic shipping service option specified in the shippingServices\
+ \ array (it is ignored if set for subsequent shipping services or for\
+ \ any international shipping service option).
The first specified\
+ \ shipping service option has a sortOrder value of 1\
+ \ or if the sortOrderId field is not used, it is the shipping service\
+ \ option that's specified first in the shippingServices array.
This\
+ \ container is returned if set."
+ shippingCarrierCode:
+ type: "string"
+ description: "This field sets/indicates the shipping carrier, such as USPS,\
+ \ FedEx, or UPS. Although this field uses the\
+ \ string type, the seller must pass in a pre-defined enumeration\
+ \ value here.
For a full list of shipping carrier enum values\
+ \ for a specified eBay marketplace, the GeteBayDetails call of the Trading API can be used, and the\
+ \ DetailName field's value should be set to ShippingCarrierDetails.\
+ \ The enum values for each shipping carriers can be found in each ShippingCarrierDetails.ShippingCarrier\
+ \ field in the response payload.
This field is actually optional,\
+ \ as the shipping carrier is also tied into the shippingServiceCode\
+ \ enum value, and that field is required for every specified shipping\
+ \ service option.
This field is returned if set."
+ shippingCost:
+ description: "This container is used to set the shipping cost to ship one\
+ \ item using the corresponding shipping service option. This container\
+ \ is conditionally required if the seller is using flat-rate shipping\
+ \ and is not using a domestic or international shipping rate table.
This\
+ \ container is not necessary for calculated shipping, since eBay will\
+ \ calculate the shipping cost and display it in the View Item page based\
+ \ off of the potential buyer's ship-to location.
This value is\
+ \ automatically set to 0.0 for the first specified domestic\
+ \ shipping service option and if the corresponding freeShipping\
+ \ field is set to true.
This container is returned\
+ \ if set for the policy."
+ $ref: "#/components/schemas/Amount"
+ shippingServiceCode:
+ type: "string"
+ description: "This field sets/indicates the domestic or international shipping\
+ \ service option, such as USPSPriority, FedEx2Day,\
+ \ or UPS3rdDay. Although this field uses the string\
+ \ type, the seller must pass in a pre-defined enumeration value here.\
+ \
For a full list of shipping service option enum values for a\
+ \ specified eBay marketplace, the GeteBayDetails call of the Trading API can be used, and the\
+ \ DetailName field's value should be set to ShippingServiceDetails.\
+ \
The enum values for each shipping service option can be found\
+ \ in each ShippingServiceDetails.ShippingService field in the response\
+ \ payload. The seller must make sure that the shipping service option\
+ \ is still valid, which is indicated by a true value in the\
+ \ corresponding ValidForSellingFlow boolean field. International\
+ \ shipping service options are typically returned at the top of the response\
+ \ payload, and are indicated by an InternationalService boolean\
+ \ field that reads true.
The InternationalService\
+ \ boolean field is not returned at all for domestic shipping service options.\
+ \
This field is required for every specified shipping service\
+ \ option."
+ shipToLocations:
+ description: "This container is used to set the ship-to locations applicable\
+ \ to the corresponding shipping service option. Although the regionExcluded\
+ \ container is defined for RegionSet type and could technically\
+ \ be used here, it is recommened that only the regionIncluded container\
+ \ be used at the shipping service level. The excluded shipping regions\
+ \ (if any) can instead be set up in the top-level regionExcluded\
+ \ container.
The regionIncluded and regionExcluded\
+ \ containers define the geographical regions/countries/states or provinces/domestic\
+ \ regions where the seller does and doesn't ship to with this fulfillment\
+ \ policy.
To retrieve the valid geographical shipping region values,\
+ \ two-digit country values, or special domestic regions for an eBay marketplace,\
+ \ call GeteBayDetails with DetailName value set to ExcludeShippingLocationDetails,\
+ \ then review the ExcludeShippingLocationDetails containers in\
+ \ the response for the strings you use in the regionIncluded.regionName\
+ \ field. - For valid geographical region names, look for the
ExcludeShippingLocationDetails\
+ \ containers in the GeteBayDetails response where the Region\
+ \ value is Worldwide, and the valid values will be shown\
+ \ in the corresponding Location fields. - For valid two-digit\
+ \ country codes, look for
ExcludeShippingLocationDetails\
+ \ in the GeteBayDetails response where the Region value\
+ \ is one of the defined geographical regions, and the valid values will\
+ \ be shown in the corresponding Location fields. Alternatively,\
+ \ you can find the two-digit country code values in the CountryCodeEnum type definition. - For valid domestic region\
+ \ values, look for
ExcludeShippingLocationDetails in the\
+ \ GeteBayDetails response where the Region value is either\
+ \ Domestic Location or Additional Locations,\
+ \ and the valid values will be shown in the corresponding Location\
+ \ fields.
The STATE_OR_PROVINCE region type is\
+ \ only applicable to the US and Canada, and valid values for US states\
+ \ are the same two-digit abbreviations used by the United States Postal Service,\
+ \ and valid values for Canadian provinces and territories are the same\
+ \ two-digit abbreviations used by the Canada Post."
+ $ref: "#/components/schemas/RegionSet"
+ sortOrder:
+ type: "integer"
+ description: "The integer value set in this field controls the order of\
+ \ the corresponding domestic or international shipping service option\
+ \ in the View Item and Checkout pages.
If the sortOrder\
+ \ field is not supplied, the order of domestic and international shipping\
+ \ service options is determined by the order in which they are listed\
+ \ in the API call.
Min: 1. Max: 4 (for domestic\
+ \ shipping service) or 5 (for international shipping service)."
+ format: "int32"
+ surcharge:
+ description: " Note: DO NOT USE\
+ \ THIS FIELD. Shipping surcharges for domestic shipping service options\
+ \ can no longer be set with fulfillment business policies, except through\
+ \ shipping rate tables.
To do this, a seller would set up a surcharge-based\
+ \ shipping rate table and specify the surcharge in that table. Then, the\
+ \ seller would need to associate this shipping rate table to the fulfillment\
+ \ business policy by specifying the unique ID of the shipping rate table\
+ \ through the shippingOptions.rateTableId field. Shipping\
+ \ surcharges cannot be applied at all to international shipping service\
+ \ options."
+ $ref: "#/components/schemas/Amount"
+ description: "This type is used by the shippingServices array, an array\
+ \ that provides details about every domestic and international shipping service\
+ \ option that is defined for the policy."
+ Subscription:
+ type: "object"
+ properties:
+ marketplaceId:
+ type: "string"
+ description: "The marketplace with which the subscription is associated.\
+ \ For implementation help, refer to eBay\
+ \ API documentation"
+ subscriptionId:
+ type: "string"
+ description: "The subscription ID."
+ subscriptionLevel:
+ type: "string"
+ description: "The subscription level. For example, subscription levels for\
+ \ an eBay store include Starter, Basic, Featured, Anchor, and Enterprise\
+ \ levels."
+ subscriptionType:
+ type: "string"
+ description: "The kind of entity with which the subscription is associated,\
+ \ such as an eBay store. For implementation help, refer to eBay\
+ \ API documentation"
+ term:
+ description: "The term of the subscription plan (typically in months)."
+ $ref: "#/components/schemas/TimeDuration"
+ description: "This type is used by the getSubscription response\
+ \ container, which defines the subscription types and levels for the seller\
+ \ account."
+ SubscriptionResponse:
+ type: "object"
+ properties:
+ href:
+ type: "string"
+ description: "This field is for future use."
+ limit:
+ type: "integer"
+ description: "This field is for future use."
+ format: "int32"
+ next:
+ type: "string"
+ description: "This field is for future use."
+ subscriptions:
+ type: "array"
+ description: "An array of subscriptions associated with the seller account."
+ items:
+ $ref: "#/components/schemas/Subscription"
+ total:
+ type: "integer"
+ description: "The total number of subscriptions displayed on the current\
+ \ page of results."
+ format: "int32"
+ description: "This type is used by the response payload for the getSubscription\
+ \ method.
Note: Pagination has not\
+ \ yet been enabled for getSubscription, so all of the pagination-related\
+ \ fields are for future use."
+ TimeDuration:
+ type: "object"
+ properties:
+ unit:
+ type: "string"
+ description: "These enum values represent the time measurement unit, such\
+ \ as DAY. A span of time is defined when you apply the value\
+ \ specified in the value field to the value specified for unit.\
+ \
See TimeDurationUnitEnum for a complete list of possible\
+ \ time-measurement units. For implementation help, refer to eBay\
+ \ API documentation"
+ value:
+ type: "integer"
+ description: "An integer that represents an amount of time, as measured\
+ \ by the time-measurement unit specified in the unit field."
+ format: "int32"
+ description: "A type used to specify a period of time using a specified time-measurement\
+ \ unit. Payment, return, and fulfillment business policies all use this type\
+ \ to specify time windows.
Whenever a container that uses this type\
+ \ is used in a request, both of these fields are required. Similarly, whenever\
+ \ a container that uses this type is returned in a response, both of these\
+ \ fields are always returned."
+ UpdatedSalesTaxEntry:
+ type: "object"
+ properties:
+ countryCode:
+ type: "string"
+ description: "The two-letter ISO 3166 code\
+ \ of the country associated with the sales-tax table entry."
+ jurisdictionId:
+ type: "string"
+ description: "The ID of the tax jurisdiction associated with the sales-tax\
+ \ table entry."
+ statusCode:
+ type: "integer"
+ description: "The HTTP status code for the call.
Note: The system returns one HTTP status code regardless of the\
+ \ number of sales-tax table entries provided. Therefore, the same HTTP\
+ \ statusCode will be listed for all sales-tax table entries\
+ \ returned in the payload."
+ format: "int32"
+ description: "This container stores the array of sales-tax table entries that\
+ \ have been created or updated."
+ UpdatedSalesTaxResponse:
+ type: "object"
+ properties:
+ updatedSalesTaxEntries:
+ type: "array"
+ description: "The array of new and updated sales-tax table entries."
+ items:
+ $ref: "#/components/schemas/UpdatedSalesTaxEntry"
+ description: "This type is used to return the list of new and updated sales-tax\
+ \ table entries."
+ securitySchemes:
+ api_auth:
+ type: "oauth2"
+ description: "The security definitions for this API. Please check individual\
+ \ operations for applicable scopes."
+ flows:
+ authorizationCode:
+ authorizationUrl: "https://auth.ebay.com/oauth2/authorize"
+ tokenUrl: "https://api.ebay.com/identity/v1/oauth2/token"
+ scopes:
+ https://api.ebay.com/oauth/api_scope/sell.account.readonly: "View your\
+ \ account settings"
+ https://api.ebay.com/oauth/api_scope/sell.account: "View and manage your\
+ \ account settings"
diff --git a/sell_feed_v1_oas3.yaml b/sell_feed_v1_oas3.yaml
new file mode 100644
index 0000000..f855819
--- /dev/null
+++ b/sell_feed_v1_oas3.yaml
@@ -0,0 +1,3411 @@
+---
+openapi: "3.0.0"
+info:
+ title: "Feed API"
+ description: "The Feed API lets sellers upload input files,\
+ \ download reports and files including their status, filter reports using URI\
+ \ parameters, and retrieve customer service metrics task details.
"
+ contact:
+ name: "eBay Inc,"
+ license:
+ name: "eBay API License Agreement"
+ url: "https://developer.ebay.com/join/api-license-agreement"
+ version: "v1.3.1"
+servers:
+- url: "https://api.ebay.com{basePath}"
+ description: "Production"
+ variables:
+ basePath:
+ default: "/sell/feed/v1"
+paths:
+ /order_task:
+ get:
+ tags:
+ - "order_task"
+ description: "This method returns the details and status for an array of order\
+ \ tasks based on a specified feed_type or schedule_id.\
+ \ Specifying both feed_type and schedule_id\
+ \ results in an error. Since schedules are based on feed types, you can specify\
+ \ a schedule (schedule_id) that returns the needed feed_type.
If specifying the feed_type, limit which order\
+ \ tasks are returned by specifying filters such as the creation date range\
+ \ or period of time using look_back_days.
If\
+ \ specifying a schedule_id, the schedule template (that the\
+ \ schedule_id is based on) determines which order tasks are\
+ \ returned (see schedule_id for additional information).\
+ \ Each schedule_id applies to one feed_type."
+ operationId: "getOrderTasks"
+ parameters:
+ - name: "date_range"
+ in: "query"
+ description: "The order tasks creation date range. This range is used to filter\
+ \ the results. The filtered results are filtered to include only tasks with\
+ \ a creation date that is equal to this date or is within specified range.\
+ \ Only orders less than 90 days old can be retrieved. Do not use with the\
+ \ look_back_days parameter.
Format: UTC\
+ \
For example:
Tasks within a range\
+ \
yyyy-MM-ddThh:mm:ss.SSSZ..yyyy-MM-ddThh:mm:ss.SSSZ \
+ \
Tasks created on September 8, 2019
2019-09-08T00:00:00.000Z..2019-09-09T00:00:00.000Z
"
+ required: false
+ schema:
+ type: "string"
+ - name: "feed_type"
+ in: "query"
+ description: "The feed type associated with the order tasks being retrieved.\
+ \ The only presently supported value is LMS_ORDER_REPORT
See\
+ \ Report download feed types for more information.
Note: Do not use with the schedule_id\
+ \ parameter. Since schedules are based on feed types, you can specify a\
+ \ schedule (schedule_id) that returns the needed feed_type."
+ required: false
+ schema:
+ type: "string"
+ - name: "limit"
+ in: "query"
+ description: "The maximum number of order tasks that can be returned on each\
+ \ page of the paginated response. Use this parameter in conjunction with\
+ \ the offset parameter to control the pagination of the\
+ \ output. Note: This feature\
+ \ employs a zero-based list, where the first item in the list has an offset\
+ \ of 0.
For example, if offset\
+ \ is set to 10 and limit is set to 10, the call retrieves\
+ \ order tasks 11 thru 20 from the result set.
If this parameter is\
+ \ omitted, the default value is used.
Default: 10
Maximum:\
+ \ 500
"
+ required: false
+ schema:
+ type: "string"
+ - name: "look_back_days"
+ in: "query"
+ description: "The number of previous days in which to search for tasks. Do\
+ \ not use with the date_range parameter. If both date_range\
+ \ and look_back_days are omitted, this parameter's default\
+ \ value is used.
Default: 7
Range: \
+ \ 1-90 (inclusive) "
+ required: false
+ schema:
+ type: "string"
+ - name: "offset"
+ in: "query"
+ description: "The number of order tasks to skip in the result set before returning\
+ \ the first order in the paginated response. Combine offset\
+ \ with the limit query parameter to control the items returned\
+ \ in the response. For example, if you supply an offset\
+ \ of 0 and a limit of 10, the\
+ \ first page of the response contains the first 10 items from the complete\
+ \ list of items retrieved by the call. If offset is 10\
+ \ and limit is 20, the first page of the response\
+ \ contains items 11-30 from the complete result set. If this query parameter\
+ \ is not set, the default value is used and the first page of records is\
+ \ returned.
Default: 0"
+ required: false
+ schema:
+ type: "string"
+ - name: "schedule_id"
+ in: "query"
+ description: "The schedule ID associated with the order tasks being retrieved.\
+ \ A schedule periodically generates a report, and these schedules can be\
+ \ created with the createSchedule method.
Note:\
+ \ Do not use with the feed_type parameter. Since schedules\
+ \ are based on feed types, you can specify a schedule (schedule_id)\
+ \ that returns the needed feed_type.
Use the\
+ \ getSchedules method to retrieve schedule IDs."
+ required: false
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/OrderTaskCollection"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 160006:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The 'feed_type' {feedTypeValue} is invalid."
+ 160007:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The 'schedule_id' {scheduleID} is invalid."
+ 160004:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "You must submit either a 'feed_type' or 'schedule_id'."
+ 160005:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "Both 'feed_type' and 'schedule_id' were provided. Please\
+ \ remove one of them."
+ 160010:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The 'date_range' must be less than or equal to 90 days."
+ 160011:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The 'look_back_days' value must be greater than zero\
+ \ and less than or equal to 90."
+ 160008:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "Both 'look_back_days' and 'date_range' were provided.\
+ \ Please remove one of them."
+ 160009:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The format of the 'date_range' is invalid. The format\
+ \ for a date range is yyyy-MM-ddThh:mm:ss.SSSZ..yyyy-MM-ddThh:mm:ss.SSSZ."
+ 160012:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The 'limit' value must be greater than zero and less\
+ \ than or equal to 500."
+ 160013:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The 'offset' value cannot be less than zero."
+ 160029:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The 'offset' value must be a multiple of the 'limit'\
+ \ value."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 160001:
+ domain: "API_FEED"
+ category: "APPLICATION"
+ description: "There was a problem with an eBay internal system or\
+ \ process. Contact eBay Developer Technical Support for assistance."
+ "403":
+ description: "Forbidden"
+ x-response-codes:
+ errors:
+ 160002:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The authentication scope {scope} is incorrect for 'feed_type'\
+ \ {feedType}. Refer to documentation for details about the scopes."
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.fulfillment"
+ post:
+ tags:
+ - "order_task"
+ description: "This method creates an order download task with filter criteria\
+ \ for the order report. When using this method, specify the feedType,\
+ \ schemaVersion, and filterCriteria for the report. The method\
+ \ returns the location response header containing the getOrderTask\
+ \ call URI to retrieve the order task you just created. The URL includes the\
+ \ eBay-assigned task ID, which you can use to reference the order task.
To retrieve the status of the task, use the getOrderTask\
+ \ method to retrieve a single task ID or the getOrderTasks method to\
+ \ retrieve multiple order task IDs.
Note:\
+ \ The scope depends on the feed type. An error message results when an unsupported\
+ \ scope or feed type is specified.
The following list contains\
+ \ this method's authorization scope and its corresponding feed type:
- https://api.ebay.com/oauth/api_scope/sell.fulfillment:\
+ \ LMS_ORDER_REPORT
For details about how this method is used,\
+ \ see General feed types in the Selling Integration Guide.
Note: At this time, the createOrderTask\
+ \ method only supports order creation date filters and not modified order\
+ \ date filters. Do not include the modifiedDateRange filter\
+ \ in your request payload.
"
+ operationId: "createOrderTask"
+ parameters:
+ - name: "Content-Type"
+ in: "header"
+ description: "This header indicates the format of the request body provided\
+ \ by the client. Its value should be set to application/json.
\
+ \ For more information, refer to HTTP request headers."
+ required: true
+ schema:
+ type: "string"
+ requestBody:
+ description: "description not needed"
+ content:
+ application/json:
+ schema:
+ description: "description not needed"
+ $ref: "#/components/schemas/CreateOrderTaskRequest"
+ required: true
+ responses:
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 160018:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The 'schemaVersion' is invalid."
+ 160019:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The 'filterCriteria' is invalid. {additionalInfo}"
+ 160017:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The 'feedType' is missing or invalid."
+ 160027:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The X-EBAY-C-MARKETPLACE-ID header is missing or invalid."
+ 160030:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "This resource is not applicable for the feed type {feedTypeValue}.\
+ \ For more information, see the documentation for this API."
+ "202":
+ description: "Accepted"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 160001:
+ domain: "API_FEED"
+ category: "APPLICATION"
+ description: "There was a problem with an eBay internal system or\
+ \ process. Contact eBay Developer Technical Support for assistance."
+ "403":
+ description: "Forbidden"
+ x-response-codes:
+ errors:
+ 160002:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The authentication scope {scope} is incorrect for 'feed_type'\
+ \ {feedType}. Refer to documentation for details about the scopes."
+ 160022:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "You are not allowed to access this resource. Contact\
+ \ eBay Developer Technical Support for assistance."
+ "409":
+ description: "Conflict"
+ x-response-codes:
+ errors:
+ 160024:
+ domain: "API_FEED"
+ category: "BUSINESS"
+ description: "You have reached the maximum number of feed tasks that\
+ \ can be queued or processed concurrently. Wait for current tasks\
+ \ to complete before adding tasks. For more information, see the\
+ \ documentation for this API."
+ 160025:
+ domain: "API_FEED"
+ category: "BUSINESS"
+ description: "You have exceeded the maximum number of records or tasks\
+ \ that can be created or processed in the period (hourly or daily).\
+ \ Wait until the present period ends before trying again. Please\
+ \ reference the API documentation for more information."
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.fulfillment"
+ /order_task/{task_id}:
+ get:
+ tags:
+ - "order_task"
+ description: "This method retrieves the task details and status of the specified\
+ \ task. The input is task_id. For details about how this\
+ \ method is used, see Working with Order Feeds in the Selling Integration Guide.
"
+ operationId: "getOrderTask"
+ parameters:
+ - name: "task_id"
+ in: "path"
+ description: "This path parameter is the unique identifier of the order task\
+ \ being retrieved.
Use the getOrderTasks method to retrieve order task IDs."
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/OrderTask"
+ "400":
+ description: "Bad Request"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 160001:
+ domain: "API_FEED"
+ category: "APPLICATION"
+ description: "There was a problem with an eBay internal system or\
+ \ process. Contact eBay Developer Technical Support for assistance."
+ "403":
+ description: "Forbidden"
+ x-response-codes:
+ errors:
+ 160002:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The authentication scope {scope} is incorrect for 'feed_type'\
+ \ {feedType}. Refer to documentation for details about the scopes."
+ "404":
+ description: "Not Found"
+ x-response-codes:
+ errors:
+ 160003:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "Task {taskID} does not exist."
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.fulfillment"
+ /inventory_task:
+ get:
+ tags:
+ - "inventory_task"
+ description: "This method searches for multiple tasks of a specific feed type,\
+ \ and includes date filters and pagination."
+ operationId: "getInventoryTasks"
+ parameters:
+ - name: "feed_type"
+ in: "query"
+ description: "The feed type associated with the inventory tasks being retrieved.\
+ \ Presently, only one feed type is available:
LMS_ACTIVE_INVENTORY_REPORT
See\
+ \ Report value feed types for more information."
+ required: false
+ schema:
+ type: "string"
+ - name: "schedule_id"
+ in: "query"
+ description: "Note: Schedule functionality\
+ \ for ActiveInventoryReport is currently unavailable, so this field is not\
+ \ usable."
+ required: false
+ schema:
+ type: "string"
+ - name: "look_back_days"
+ in: "query"
+ description: "The number of previous days in which to search for tasks. Do\
+ \ not use with the date_range parameter. If both date_range\
+ \ and look_back_days are omitted, this parameter's default\
+ \ value is used.
Default: 7
Range: \
+ \ 1-90 (inclusive)"
+ required: false
+ schema:
+ type: "string"
+ - name: "date_range"
+ in: "query"
+ description: "Specifies the range of task creation dates used to filter the\
+ \ results. The results are filtered to include only tasks with a creation\
+ \ date that is equal to this date or is within specified range. Note: Maximum date range window size\
+ \ is 90 days.
Valid Format (UTC): yyyy-MM-ddThh:mm:ss.SSSZ..yyyy-MM-ddThh:mm:ss.SSSZ
For example: Tasks created on March 31, 2021
2021-03-31T00:00:00.000Z..2021-03-31T00:00:00.000Z
"
+ required: false
+ schema:
+ type: "string"
+ - name: "limit"
+ in: "query"
+ description: "The maximum number of tasks that can be returned on each page\
+ \ of the paginated response. Use this parameter in conjunction with the\
+ \ offset parameter to control the pagination of the output.\
+ \ Note: This feature employs\
+ \ a zero-based list, where the first item in the list has an offset of 0.
For\
+ \ example, if offset is set to 10 and limit\
+ \ is set to 10, the call retrieves tasks 11 thru 20 from the result set.
If\
+ \ this parameter is omitted, the default value is used.
Default:\
+ \ 10
Maximum: 500"
+ required: false
+ schema:
+ type: "string"
+ - name: "offset"
+ in: "query"
+ description: "The number of tasks to skip in the result set before returning\
+ \ the first task in the paginated response.
Combine offset\
+ \ with the limit query parameter to control the items returned\
+ \ in the response. For example, if you supply an offset\
+ \ of 0 and a limit of 10, the\
+ \ first page of the response contains the first 10 items from the complete\
+ \ list of items retrieved by the call. If offset is 10\
+ \ and limit is 20, the first page of the response\
+ \ contains items 11-30 from the complete result set. If this query parameter\
+ \ is not set, the default value is used and the first page of records is\
+ \ returned.
Default: 0"
+ required: false
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/InventoryTaskCollection"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 160006:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The 'feed_type' {feedTypeValue} is invalid."
+ 160007:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The 'schedule_id' {scheduleID} is invalid."
+ 160004:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "You must submit either a 'feed_type' or 'schedule_id'."
+ 160005:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "Both 'feed_type' and 'schedule_id' were provided. Please\
+ \ remove one of them."
+ 160010:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The 'date_range' must be less than or equal to 90 days."
+ 160011:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The 'look_back_days' value must be greater than zero\
+ \ and less than or equal to 90."
+ 160008:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "Both 'look_back_days' and 'date_range' were provided.\
+ \ Please remove one of them."
+ 160009:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The format of the 'date_range' is invalid. The format\
+ \ for a date range is yyyy-MM-ddThh:mm:ss.sssZ..yyyy-MM-ddThh:mm:ss.sssZ."
+ 160012:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The 'limit' value must be greater than zero and less\
+ \ than or equal to 500."
+ 160013:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The 'offset' value cannot be less than zero."
+ 160029:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The 'offset' value must be a multiple of the 'limit'\
+ \ value."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 160001:
+ domain: "API_FEED"
+ category: "APPLICATION"
+ description: "There was a problem with an eBay internal system or\
+ \ process. Contact eBay Developer Technical Support for assistance."
+ "403":
+ description: "Forbidden"
+ x-response-codes:
+ errors:
+ 160002:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The authentication scope {scope} is incorrect for 'feed_type'\
+ \ {feedType}. Refer to documentation for details about the scopes."
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory"
+ post:
+ tags:
+ - "inventory_task"
+ description: "This method creates an inventory-related download task for a specified\
+ \ feed type with optional filter criteria. When using this method, specify\
+ \ the feedType.
This method returns the location\
+ \ response header containing the getInventoryTask call URI\
+ \ to retrieve the inventory task you just created. The URL includes the eBay-assigned\
+ \ task ID, which you can use to reference the inventory task.
To\
+ \ retrieve the status of the task, use the getInventoryTask\
+ \ method to retrieve a single task ID or the getInventoryTasks\
+ \ method to retrieve multiple task IDs.
Note:\
+ \ The scope depends on the feed type. An error message results when an unsupported\
+ \ scope or feed type is specified.
Presently, this method supports\
+ \ Active Inventory Report. The ActiveInventoryReport returns\
+ \ a report that contains price and quantity information for all of the active\
+ \ listings for a specific seller. A seller can use this information to maintain\
+ \ their inventory on eBay."
+ operationId: "createInventoryTask"
+ parameters:
+ - name: "Content-Type"
+ in: "header"
+ description: "This header indicates the format of the request body provided\
+ \ by the client. Its value should be set to application/json.
\
+ \ For more information, refer to HTTP request headers."
+ required: true
+ schema:
+ type: "string"
+ requestBody:
+ description: "The request payload containing the version, feedType, and optional\
+ \ filterCriteria."
+ content:
+ application/json:
+ schema:
+ description: "The request payload containing the version, feedType,\
+ \ and optional filterCriteria."
+ $ref: "#/components/schemas/CreateInventoryTaskRequest"
+ required: true
+ responses:
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 160018:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The 'schemaVersion' is invalid."
+ 160019:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The 'filterCriteria' is invalid. {additionalInfo}"
+ 160017:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The 'feedType' is missing or invalid."
+ 160027:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The X-EBAY-C-MARKETPLACE-ID header is missing or invalid."
+ 160030:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "This resource is not applicable for the feed type {feedTypeValue}.\
+ \ For more information, see the documentation for this API."
+ "202":
+ description: "Accepted"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 160001:
+ domain: "API_FEED"
+ category: "APPLICATION"
+ description: "There was a problem with an eBay internal system or\
+ \ process. Contact eBay Developer Technical Support for assistance."
+ "403":
+ description: "Forbidden"
+ x-response-codes:
+ errors:
+ 160002:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The authentication scope {scope} is incorrect for 'feed_type'\
+ \ {feedType}. Refer to documentation for details about the scopes."
+ 160022:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "You are not allowed to access this resource. Contact\
+ \ eBay Developer Technical Support for assistance."
+ "409":
+ description: "Conflict"
+ x-response-codes:
+ errors:
+ 160024:
+ domain: "API_FEED"
+ category: "BUSINESS"
+ description: "You have reached the maximum number of feed tasks that\
+ \ can be queued or processed concurrently. Wait for current tasks\
+ \ to complete before adding tasks. For more information, see the\
+ \ documentation for this API."
+ 160025:
+ domain: "API_FEED"
+ category: "BUSINESS"
+ description: "You have exceeded the maximum number of records or tasks\
+ \ that can be created or processed in the period (hourly or daily).\
+ \ Wait until the present period ends before trying again. Please\
+ \ reference the API documentation for more information."
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory"
+ /inventory_task/{task_id}:
+ get:
+ tags:
+ - "inventory_task"
+ description: "This method retrieves the task details and status of the specified\
+ \ inventory-related task. The input is task_id."
+ operationId: "getInventoryTask"
+ parameters:
+ - name: "task_id"
+ in: "path"
+ description: "This path parameter is the unique identifier of the inventory\
+ \ task being retrieved.
Use the getInventoryTasks method to retrieve inventory task IDs."
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/InventoryTask"
+ "400":
+ description: "Bad Request"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 160001:
+ domain: "API_FEED"
+ category: "APPLICATION"
+ description: "There was a problem with an eBay internal system or\
+ \ process. Contact eBay Developer Technical Support for assistance."
+ "403":
+ description: "Forbidden"
+ x-response-codes:
+ errors:
+ 160002:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The authentication scope {scope} is incorrect for 'feed_type'\
+ \ {feedType}. Refer to documentation for details about the scopes."
+ "404":
+ description: "Not Found"
+ x-response-codes:
+ errors:
+ 160003:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "Task {taskID} does not exist."
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory"
+ /schedule:
+ get:
+ tags:
+ - "schedule"
+ description: "This method retrieves an array containing the details and status\
+ \ of all schedules based on the specified feed_type. Use\
+ \ this method to find a schedule if you do not know the schedule_id."
+ operationId: "getSchedules"
+ parameters:
+ - name: "feed_type"
+ in: "query"
+ description: "The feed type associated with the schedules being retrieved.
Note: Schedules are currently only available\
+ \ for LMS_ORDER_REPORT."
+ required: true
+ schema:
+ type: "string"
+ - name: "limit"
+ in: "query"
+ description: "The maximum number of schedules that can be returned on each\
+ \ page of the paginated response. Use this parameter in conjunction with\
+ \ the offset parameter to control the pagination of the\
+ \ output. Note: This feature\
+ \ employs a zero-based list, where the first item in the list has an offset\
+ \ of 0.
For example, if offset\
+ \ is set to 10 and limit is set to 10, the call retrieves\
+ \ schedules 11 thru 20 from the result set.
If this parameter is omitted,\
+ \ the default value is used.
Default: 10
Maximum:\
+ \ 500"
+ required: false
+ schema:
+ type: "string"
+ - name: "offset"
+ in: "query"
+ description: "The number of schedules to skip in the result set before returning\
+ \ the first schedule in the paginated response.
Combine offset\
+ \ with the limit query parameter to control the items returned\
+ \ in the response. For example, if you supply an offset\
+ \ of 0 and a limit of 10, the\
+ \ first page of the response contains the first 10 items from the complete\
+ \ list of items retrieved by the call. If offset is 10\
+ \ and limit is 20, the first page of the response\
+ \ contains items 11-30 from the complete result set. If this query parameter\
+ \ is not set, the default value is used and the first page of records is\
+ \ returned.
Default: 0"
+ required: false
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/UserScheduleCollection"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 160017:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The 'feedType' is missing or invalid."
+ 160012:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The 'limit' value must be greater than zero and less\
+ \ than or equal to 500."
+ 160013:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The 'offset' value cannot be less than zero."
+ 160029:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The 'offset' value must be a multiple of the 'limit'\
+ \ value."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 160001:
+ domain: "API_FEED"
+ category: "APPLICATION"
+ description: "There was a problem with an eBay internal system or\
+ \ process. Contact eBay Developer Technical Support for assistance."
+ "403":
+ description: "Forbidden"
+ x-response-codes:
+ errors:
+ 160002:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The authentication scope {scope} is incorrect for 'feed_type'\
+ \ {feedType}. Refer to documentation for details about the scopes."
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory"
+ - "https://api.ebay.com/oauth/api_scope/sell.fulfillment"
+ - "https://api.ebay.com/oauth/api_scope/sell.marketing"
+ - "https://api.ebay.com/oauth/api_scope/commerce.catalog.readonly"
+ - "https://api.ebay.com/oauth/api_scope/sell.analytics.readonly"
+ post:
+ tags:
+ - "schedule"
+ description: "This method creates a schedule, which is a subscription to the\
+ \ specified schedule template. A schedule periodically generates a report\
+ \ for the feedType specified by the template. Specify the\
+ \ same feedType as the feedType of the associated\
+ \ schedule template. When creating the schedule, if available from the template,\
+ \ you can specify a preferred trigger hour, day of the week, or day of the\
+ \ month. These and other fields are conditionally available as specified by\
+ \ the template.
Note: Make sure\
+ \ to include all fields required by the schedule template (scheduleTemplateId).\
+ \ Call the getScheduleTemplate method (or the getScheduleTemplates\
+ \ method), to find out which fields are required or optional. If a field is\
+ \ optional and a default value is provided by the template, the default value\
+ \ will be used if omitted from the payload.
A successful call returns\
+ \ the location response header containing the getSchedule\
+ \ call URI to retrieve the schedule you just created. The URL includes the\
+ \ eBay-assigned schedule ID, which you can use to reference the schedule task.\
+ \
To retrieve the details of the create schedule task, use the\
+ \ getSchedule method for a single schedule ID or the getSchedules\
+ \ method to retrieve all schedule details for the specified feed_type.\
+ \ The number of schedules for each feedType is limited. Error code 160031\
+ \ is returned when you have reached this maximum. Note: Except for schedules with a HALF-HOUR frequency, all\
+ \ schedules will ideally run at the start of each hour ('00' minutes). Actual\
+ \ start time may vary time may vary due to load and other factors.
"
+ operationId: "createSchedule"
+ parameters:
+ - name: "Content-Type"
+ in: "header"
+ description: "This header indicates the format of the request body provided\
+ \ by the client. Its value should be set to application/json.
\
+ \ For more information, refer to HTTP request headers."
+ required: true
+ schema:
+ type: "string"
+ requestBody:
+ description: "In the request payload: feedType and scheduleTemplateId\
+ \ are required; scheduleName is optional; preferredTriggerHour,\
+ \ preferredTriggerDayOfWeek, preferredTriggerDayOfMonth,\
+ \ scheduleStartDate, scheduleEndDate,\
+ \ and schemaVersion are conditional."
+ content:
+ application/json:
+ schema:
+ description: "In the request payload: feedType and\
+ \ scheduleTemplateId are required; scheduleName\
+ \ is optional; preferredTriggerHour, preferredTriggerDayOfWeek,\
+ \ preferredTriggerDayOfMonth, scheduleStartDate,\
+ \ scheduleEndDate, and schemaVersion\
+ \ are conditional."
+ $ref: "#/components/schemas/CreateUserScheduleRequest"
+ required: true
+ responses:
+ "201":
+ description: "Created"
+ headers:
+ Location:
+ schema:
+ type: "string"
+ description: "The URL of the schedule, which includes the id."
+ content:
+ application/json:
+ schema:
+ type: "object"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 160034:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The '{fieldName}' is invalid, missing, or not allowed."
+ 160032:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The 'scheduleTemplateId' is invalid. Call the getScheduleTemplates\
+ \ method to get the available schedule templates."
+ 160017:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The 'feedType' is missing or invalid."
+ 160033:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The 'feedType' is not associated with the 'scheduleTemplateId'.\
+ \ Please provide a 'feedType' that matches the 'scheduleTemplateId'.\
+ \ Call the getScheduleTemplates method to get the available schedule\
+ \ templates."
+ 160036:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The '{fieldName}' is in the past."
+ 160037:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The 'scheduleEndDate' is before 'scheduleStartDate'."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 160001:
+ domain: "API_FEED"
+ category: "APPLICATION"
+ description: "There was a problem with an eBay internal system or\
+ \ process. Contact eBay Developer Technical Support for assistance."
+ "403":
+ description: "Forbidden"
+ x-response-codes:
+ errors:
+ 160002:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The authentication scope {scope} is incorrect for 'feed_type'\
+ \ {feedType}. Refer to documentation for details about the scopes."
+ 160022:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "You are not allowed to access this resource. Contact\
+ \ eBay Developer Technical Support for assistance."
+ "409":
+ description: "Conflict"
+ x-response-codes:
+ errors:
+ 160035:
+ domain: "API_FEED"
+ category: "BUSINESS"
+ description: "Duplicate schedule (a matching schedule already exists).\
+ \ Use the getSchedules method to see the existing schedules."
+ 160040:
+ domain: "API_FEED"
+ category: "BUSINESS"
+ description: "The 'scheduleTemplateId' is inactive. You cannot create\
+ \ or modify a schedule with an inactive 'scheduleTemplateId'."
+ 160031:
+ domain: "API_FEED"
+ category: "BUSINESS"
+ description: "You have reached the maximum number of subscribed schedules\
+ \ for the 'feedType' {feedType}. To subscribe to another schedule,\
+ \ you must delete one."
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory"
+ - "https://api.ebay.com/oauth/api_scope/sell.fulfillment"
+ - "https://api.ebay.com/oauth/api_scope/sell.marketing"
+ - "https://api.ebay.com/oauth/api_scope/commerce.catalog.readonly"
+ - "https://api.ebay.com/oauth/api_scope/sell.analytics.readonly"
+ /schedule/{schedule_id}:
+ get:
+ tags:
+ - "schedule"
+ description: "This method retrieves schedule details and status of the specified\
+ \ schedule. Specify the schedule to retrieve using the schedule_id.\
+ \ Use the getSchedules method to find a schedule if you do\
+ \ not know the schedule_id."
+ operationId: "getSchedule"
+ parameters:
+ - name: "schedule_id"
+ in: "path"
+ description: "This path parameter is the unique identifier of the schedule\
+ \ for which to retrieve details.
Use the getSchedules method to retrieve schedule IDs."
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/UserScheduleResponse"
+ "400":
+ description: "Bad Request"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 160001:
+ domain: "API_FEED"
+ category: "APPLICATION"
+ description: "There was a problem with an eBay internal system or\
+ \ process. Contact eBay Developer Technical Support for assistance."
+ "403":
+ description: "Forbidden"
+ x-response-codes:
+ errors:
+ 160002:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The authentication scope {scope} is incorrect for 'feed_type'\
+ \ {feedType}. Refer to documentation for details about the scopes."
+ "404":
+ description: "Not Found"
+ x-response-codes:
+ errors:
+ 160038:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The schedule id {schedule_id} does not exist."
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory"
+ - "https://api.ebay.com/oauth/api_scope/sell.fulfillment"
+ - "https://api.ebay.com/oauth/api_scope/sell.marketing"
+ - "https://api.ebay.com/oauth/api_scope/commerce.catalog.readonly"
+ - "https://api.ebay.com/oauth/api_scope/sell.analytics.readonly"
+ put:
+ tags:
+ - "schedule"
+ description: "This method updates an existing schedule. Specify the schedule\
+ \ to update using the schedule_id path parameter. If the\
+ \ schedule template has changed after the schedule was created or updated,\
+ \ the input will be validated using the changed template. Note: Make sure to include all fields required\
+ \ by the schedule template (scheduleTemplateId). Call the\
+ \ getScheduleTemplate method (or the getScheduleTemplates\
+ \ method), to find out which fields are required or optional. If you do not\
+ \ know the scheduleTemplateId, call the getSchedule\
+ \ method to find out.
"
+ operationId: "updateSchedule"
+ parameters:
+ - name: "schedule_id"
+ in: "path"
+ description: "This path parameter is the unique identifier of the schedule\
+ \ being updated.
Use the getSchedules method to retrieve schedule IDs."
+ required: true
+ schema:
+ type: "string"
+ - name: "Content-Type"
+ in: "header"
+ description: "This header indicates the format of the request body provided\
+ \ by the client. Its value should be set to application/json.
\
+ \ For more information, refer to HTTP request headers."
+ required: true
+ schema:
+ type: "string"
+ requestBody:
+ description: "In the request payload: scheduleName is optional;\
+ \ preferredTriggerHour, preferredTriggerDayOfWeek,\
+ \ preferredTriggerDayOfMonth, scheduleStartDate,\
+ \ scheduleEndDate, and schemaVersion are\
+ \ conditional."
+ content:
+ application/json:
+ schema:
+ description: "In the request payload: scheduleName\
+ \ is optional; preferredTriggerHour, preferredTriggerDayOfWeek,\
+ \ preferredTriggerDayOfMonth, scheduleStartDate,\
+ \ scheduleEndDate, and schemaVersion\
+ \ are conditional."
+ $ref: "#/components/schemas/UpdateUserScheduleRequest"
+ required: true
+ responses:
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 160034:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The '{fieldName}' is invalid, missing, or not allowed."
+ 160036:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The '{fieldName}' is in past."
+ 160037:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The 'scheduleEndDate' is before 'scheduleStartDate'."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 160001:
+ domain: "API_FEED"
+ category: "APPLICATION"
+ description: "There was a problem with an eBay internal system or\
+ \ process. Contact eBay Developer Technical Support for assistance."
+ "204":
+ description: "No Content"
+ "403":
+ description: "Forbidden"
+ x-response-codes:
+ errors:
+ 160002:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The authentication scope {scope} is incorrect for 'feed_type'\
+ \ {feedType}. Refer to documentation for details about the scopes."
+ "404":
+ description: "Not Found"
+ x-response-codes:
+ errors:
+ 160038:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The schedule id {schedule_id} does not exist."
+ "409":
+ description: "Conflict"
+ x-response-codes:
+ errors:
+ 160040:
+ domain: "API_FEED"
+ category: "BUSINESS"
+ description: "The 'scheduleTemplateId' is inactive. You cannot create\
+ \ or modify a schedule with an inactive 'scheduleTemplateId'."
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory"
+ - "https://api.ebay.com/oauth/api_scope/sell.fulfillment"
+ - "https://api.ebay.com/oauth/api_scope/sell.marketing"
+ - "https://api.ebay.com/oauth/api_scope/commerce.catalog.readonly"
+ - "https://api.ebay.com/oauth/api_scope/sell.analytics.readonly"
+ delete:
+ tags:
+ - "schedule"
+ description: "This method deletes an existing schedule. Specify the schedule\
+ \ to delete using the schedule_id path parameter."
+ operationId: "deleteSchedule"
+ parameters:
+ - name: "schedule_id"
+ in: "path"
+ description: "This path parameter is the unique identifier of the schedule\
+ \ being deleted.
Use the getSchedules method to retrieve schedule IDs."
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "400":
+ description: "Bad Request"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 160001:
+ domain: "API_FEED"
+ category: "APPLICATION"
+ description: "There was a problem with an eBay internal system or\
+ \ process. Contact eBay Developer Technical Support for assistance."
+ "204":
+ description: "No Content"
+ "404":
+ description: "Not Found"
+ x-response-codes:
+ errors:
+ 160038:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The schedule id {schedule_id} does not exist."
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory"
+ - "https://api.ebay.com/oauth/api_scope/sell.fulfillment"
+ - "https://api.ebay.com/oauth/api_scope/sell.marketing"
+ - "https://api.ebay.com/oauth/api_scope/commerce.catalog.readonly"
+ - "https://api.ebay.com/oauth/api_scope/sell.analytics.readonly"
+ /schedule/{schedule_id}/download_result_file:
+ get:
+ tags:
+ - "schedule"
+ description: "This method downloads the latest Order Report generated by the\
+ \ schedule. The response of this call is a compressed or uncompressed CSV,\
+ \ XML, or JSON file, with the applicable file extension (for example: csv.gz).\
+ \ Specify the schedule_id path parameter to download its\
+ \ last generated file."
+ operationId: "getLatestResultFile"
+ parameters:
+ - name: "schedule_id"
+ in: "path"
+ description: "This path parameter is the unique identifier of the schedule\
+ \ for which to retrieve the latest Order Report.
Use the getSchedules method to retrieve schedule IDs."
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "Success"
+ headers:
+ content-disposition:
+ schema:
+ type: "string"
+ description: "It contains the file metadata like file name."
+ content:
+ application/octet-stream:
+ schema:
+ $ref: "#/components/schemas/StreamingOutput"
+ "400":
+ description: "Bad Request"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 160001:
+ domain: "API_FEED"
+ category: "APPLICATION"
+ description: "There was a problem with an eBay internal system or\
+ \ process. Contact eBay Developer Technical Support for assistance."
+ "403":
+ description: "Forbidden"
+ x-response-codes:
+ errors:
+ 160002:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The authentication scope {scope} is incorrect for 'feed_type'\
+ \ {feedType}. Refer to documentation for details about the scopes."
+ "404":
+ description: "Not Found"
+ x-response-codes:
+ errors:
+ 160038:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The schedule id {schedule_id} does not exist."
+ 160021:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "No file found for 'schedule_id' {scheduleID}."
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory"
+ - "https://api.ebay.com/oauth/api_scope/sell.fulfillment"
+ - "https://api.ebay.com/oauth/api_scope/sell.marketing"
+ - "https://api.ebay.com/oauth/api_scope/commerce.catalog.readonly"
+ - "https://api.ebay.com/oauth/api_scope/sell.analytics.readonly"
+ /schedule_template/{schedule_template_id}:
+ get:
+ tags:
+ - "schedule"
+ description: "This method retrieves the details of the specified template. Specify\
+ \ the template to retrieve using the schedule_template_id\
+ \ path parameter. Use the getScheduleTemplates method to\
+ \ find a schedule template if you do not know the schedule_template_id."
+ operationId: "getScheduleTemplate"
+ parameters:
+ - name: "schedule_template_id"
+ in: "path"
+ description: "This path parameter is the unique identifier of the schedule\
+ \ template being retrieved.
Use the getScheduleTemplates method to retrieve schedule\
+ \ template IDs.
Note: Template schedules\
+ \ are currently only available for LMS_ORDER_REPORT."
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ScheduleTemplateResponse"
+ "400":
+ description: "Bad Request"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 160001:
+ domain: "API_FEED"
+ category: "APPLICATION"
+ description: "There was a problem with an eBay internal system or\
+ \ process. Contact eBay Developer Technical Support for assistance."
+ "404":
+ description: "Not Found"
+ x-response-codes:
+ errors:
+ 160039:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The schedule template id {schedule_template_id} does\
+ \ not exist. Please provide a valid schedule template id as contained\
+ \ in the documentation or by calling the getScheduleTemplates method."
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory"
+ - "https://api.ebay.com/oauth/api_scope/sell.fulfillment"
+ - "https://api.ebay.com/oauth/api_scope/sell.marketing"
+ - "https://api.ebay.com/oauth/api_scope/commerce.catalog.readonly"
+ - "https://api.ebay.com/oauth/api_scope/sell.analytics.readonly"
+ /schedule_template:
+ get:
+ tags:
+ - "schedule"
+ description: "This method retrieves an array containing the details and status\
+ \ of all schedule templates based on the specified feed_type.\
+ \ Use this method to find a schedule template if you do not know the schedule_template_id."
+ operationId: "getScheduleTemplates"
+ parameters:
+ - name: "feed_type"
+ in: "query"
+ description: "The feed type of the schedule templates to retrieve.
Note: Schedules are currently only available\
+ \ for LMS_ORDER_REPORT."
+ required: true
+ schema:
+ type: "string"
+ - name: "limit"
+ in: "query"
+ description: "The maximum number of schedule templates that can be returned\
+ \ on each page of the paginated response. Use this parameter in conjunction\
+ \ with the offset parameter to control the pagination of\
+ \ the output. Note: This\
+ \ feature employs a zero-based list, where the first item in the list has\
+ \ an offset of 0.
For example, if offset\
+ \ is set to 10 and limit is set to 10, the call retrieves\
+ \ schedule templates 11 thru 20 from the result set.
If this parameter\
+ \ is omitted, the default value is used.
Default: 10\
+ \
Maximum: 500"
+ required: false
+ schema:
+ type: "string"
+ - name: "offset"
+ in: "query"
+ description: "The number of schedule templates to skip in the result set before\
+ \ returning the first template in the paginated response.
Combine offset\
+ \ with the limit query parameter to control the items returned\
+ \ in the response. For example, if you supply an offset\
+ \ of 0 and a limit of 10, the\
+ \ first page of the response contains the first 10 items from the complete\
+ \ list of items retrieved by the call. If offset is 10\
+ \ and limit is 20, the first page of the response\
+ \ contains items 11-30 from the complete result set. If this query parameter\
+ \ is not set, the default value is used and the first page of records is\
+ \ returned.
Default: 0"
+ required: false
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ScheduleTemplateCollection"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 160017:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The 'feedType' is missing or invalid."
+ 160012:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The 'limit' value must be greater than zero and less\
+ \ than or equal to 500."
+ 160013:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The 'offset' value cannot be less than zero."
+ 160029:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The 'offset' value must be a multiple of the 'limit'\
+ \ value."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 160001:
+ domain: "API_FEED"
+ category: "APPLICATION"
+ description: "There was a problem with an eBay internal system or\
+ \ process. Contact eBay Developer Technical Support for assistance."
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory"
+ - "https://api.ebay.com/oauth/api_scope/sell.fulfillment"
+ - "https://api.ebay.com/oauth/api_scope/sell.marketing"
+ - "https://api.ebay.com/oauth/api_scope/commerce.catalog.readonly"
+ - "https://api.ebay.com/oauth/api_scope/sell.analytics.readonly"
+ /task:
+ get:
+ tags:
+ - "task"
+ description: "This method returns the details and status for an array of tasks\
+ \ based on a specified feed_type or schedule_id.\
+ \ Specifying both feed_type and schedule_id\
+ \ results in an error. Since schedules are based on feed types, you can specify\
+ \ a schedule (schedule_id) that returns the needed feed_type.
If specifying the feed_type, limit which tasks\
+ \ are returned by specifying filters, such as the creation date range or period\
+ \ of time using look_back_days. Also, by specifying the feed_type,\
+ \ both on-demand and scheduled reports are returned.
If specifying\
+ \ a schedule_id, the schedule template (that the schedule\
+ \ ID is based on) determines which tasks are returned (see schedule_id\
+ \ for additional information). Each scheduledId applies to\
+ \ one feed_type. "
+ operationId: "getTasks"
+ parameters:
+ - name: "date_range"
+ in: "query"
+ description: "Specifies the range of task creation dates used to filter the\
+ \ results. The results are filtered to include only tasks with a creation\
+ \ date that is equal to this date or is within specified range. Only tasks\
+ \ that are less than 90 days can be retrieved.
Note: Maximum date range window size is 90 days.
\
+ \
Valid Format (UTC):yyyy-MM-ddThh:mm:ss.SSSZ..yyyy-MM-ddThh:mm:ss.SSSZ\
+ \
For example: Tasks created on September 8, 2019
2019-09-08T00:00:00.000Z..2019-09-09T00:00:00.000Z"
+ required: false
+ schema:
+ type: "string"
+ - name: "feed_type"
+ in: "query"
+ description: "The feed type associated with the tasks to be returned. Only\
+ \ use a feedType that is available for your API: - Order\
+ \ Feeds:
LMS_ORDER_ACK, LMS_ORDER_REPORT - Inventory\
+ \ Upload Feed Types: See Available FeedTypes
Do not use with the\
+ \ schedule_id parameter. Since schedules are based on feed\
+ \ types, you can specify a schedule (schedule_id) that\
+ \ returns the needed feed_type."
+ required: false
+ schema:
+ type: "string"
+ - name: "limit"
+ in: "query"
+ description: "The maximum number of tasks that can be returned on each page\
+ \ of the paginated response. Use this parameter in conjunction with the\
+ \ offset parameter to control the pagination of the output.\
+ \ Note: This feature employs\
+ \ a zero-based list, where the first item in the list has an offset of 0.
For\
+ \ example, if offset is set to 10 and limit\
+ \ is set to 10, the call retrieves tasks 11 thru 20 from the result set.
If\
+ \ this parameter is omitted, the default value is used.
Default:\
+ \ 10
Maximum: 500"
+ required: false
+ schema:
+ type: "string"
+ - name: "look_back_days"
+ in: "query"
+ description: "The number of previous days in which to search for tasks. Do\
+ \ not use with the date_range parameter. If both date_range\
+ \ and look_back_days are omitted, this parameter's default\
+ \ value is used.
Default: 7
Range: \
+ \ 1-90 (inclusive)"
+ required: false
+ schema:
+ type: "string"
+ - name: "offset"
+ in: "query"
+ description: "The number of tasks to skip in the result set before returning\
+ \ the first task in the paginated response.
Combine offset\
+ \ with the limit query parameter to control the items returned\
+ \ in the response. For example, if you supply an offset\
+ \ of 0 and a limit of 10, the\
+ \ first page of the response contains the first 10 items from the complete\
+ \ list of items retrieved by the call. If offset is 10\
+ \ and limit is 20, the first page of the response\
+ \ contains items 11-30 from the complete result set. If this query parameter\
+ \ is not set, the default value is used and the first page of records is\
+ \ returned.
Default: 0"
+ required: false
+ schema:
+ type: "string"
+ - name: "schedule_id"
+ in: "query"
+ description: "The unique identifier associated with the tasks being returned.\
+ \ A schedule periodically generates a report for the feed type specified\
+ \ by the schedule template.
Note:\
+ \ Schedules are currently only available for LMS_ORDER_REPORT.
Do\
+ \ not use with the feed_type parameter."
+ required: false
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/TaskCollection"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 160016:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The 'date_range' value is not valid. Ensure that the\
+ \ beginning of the range is before the end of the range."
+ 160006:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The 'feed_type' {feedTypeValue} is invalid."
+ 160007:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The 'schedule_id' {scheduleID} is invalid."
+ 160004:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "You must submit either a 'feed_type' or 'schedule_id'."
+ 160005:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "Both 'feed_type' and 'schedule_id' were provided. Please\
+ \ remove one of them."
+ 160010:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The 'date_range' must be less than or equal to 90 days."
+ 160011:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The 'look_back_days' value must be greater than zero\
+ \ and less than or equal to 90."
+ 160008:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "Both 'look_back_days' and 'date_range' were provided.\
+ \ Please remove one of them."
+ 160009:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The format of the 'date_range' is invalid. The format\
+ \ for a date range is yyyy-MM-ddThh:mm:ss.SSSZ..yyyy-MM-ddThh:mm:ss.SSSZ."
+ 160012:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The 'limit' value must be greater than zero and less\
+ \ than or equal to 500."
+ 160013:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The 'offset' value cannot be less than zero."
+ 160029:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The 'offset' value must be a multiple of the 'limit'\
+ \ value."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 160001:
+ domain: "API_FEED"
+ category: "APPLICATION"
+ description: "There was a problem with an eBay internal system or\
+ \ process. Contact eBay Developer Technical Support for assistance."
+ "403":
+ description: "Forbidden"
+ x-response-codes:
+ errors:
+ 160002:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The authentication scope {scope} is incorrect for 'feed_type'\
+ \ {feedType}. Refer to documentation for details about the scopes."
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory"
+ - "https://api.ebay.com/oauth/api_scope/sell.fulfillment"
+ - "https://api.ebay.com/oauth/api_scope/sell.marketing"
+ - "https://api.ebay.com/oauth/api_scope/commerce.catalog.readonly"
+ - "https://api.ebay.com/oauth/api_scope/sell.analytics.readonly"
+ post:
+ tags:
+ - "task"
+ description: "This method creates an upload task or a download task without\
+ \ filter criteria. When using this method, specify the feedType and\
+ \ the feed file schemaVersion. The feed type specified sets the task\
+ \ as a download or an upload task.
For details about the upload and download\
+ \ flows, see Working with Order Feeds in the Selling Integration Guide.
Note: The scope depends on the feed\
+ \ type. An error message results when an unsupported scope or feed type is\
+ \ specified.
The following list contains this method's authorization\
+ \ scopes and their corresponding feed types:
- https://api.ebay.com/oauth/api_scope/sell.inventory:\
+ \ See LMS FeedTypes
- https://api.ebay.com/oauth/api_scope/sell.fulfillment:\
+ \ LMS_ORDER_ACK (specify for upload tasks). Also see LMS FeedTypes
- https://api.ebay.com/oauth/api_scope/sell.marketing:\
+ \ None*
- https://api.ebay.com/oauth/api_scope/commerce.catalog.readonly:\
+ \ None*
* Reserved for future release
"
+ operationId: "createTask"
+ parameters:
+ - name: "X-EBAY-C-MARKETPLACE-ID"
+ in: "header"
+ description: "The ID of the eBay marketplace where the item is hosted.
For\
+ \ example:
X-EBAY-C-MARKETPLACE-ID:EBAY_US
This\
+ \ identifies the eBay marketplace that applies to this task. See MarketplaceIdEnum\
+ \ for supported values.
Note: When\
+ \ listing the items in the feed file on the French Canada and French Belgium\
+ \ marketplaces, also set the Accept-Language header as needed."
+ required: true
+ schema:
+ type: "string"
+ - name: "Content-Type"
+ in: "header"
+ description: "This header indicates the format of the request body provided\
+ \ by the client. Its value should be set to application/json.
\
+ \ For more information, refer to HTTP request headers."
+ required: true
+ schema:
+ type: "string"
+ - name: "Accept-Language"
+ in: "header"
+ description: "The Accept-Language header is required for listing items in\
+ \ the French Canada and French Belgium marketplaces. Set the following headers\
+ \ to list items on these marketplaces:
- French Canada:\
+ \ Set the X-EBAY-C-MARKETPLACE-ID header value to
EBAY_CA\
+ \ and include the Accept-Language header with a value of fr-CA. - French\
+ \ Belgium: Set the X-EBAY-C-MARKETPLACE-ID header value to
EBAY_BE\
+ \ and include the Accept-Language header with a value of fr-BE.
"
+ required: false
+ schema:
+ type: "string"
+ requestBody:
+ description: "description not needed"
+ content:
+ application/json:
+ schema:
+ description: "description not needed"
+ $ref: "#/components/schemas/CreateTaskRequest"
+ required: true
+ responses:
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 160018:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The 'schemaVersion' is invalid."
+ 160017:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The 'feedType' is missing or invalid."
+ 160027:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The X-EBAY-C-MARKETPLACE-ID header is missing or invalid."
+ 160030:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "This resource is not applicable for the feed type {feedTypeValue}.\
+ \ For more information, see the documentation for this API."
+ "202":
+ description: "Accepted"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 160001:
+ domain: "API_FEED"
+ category: "APPLICATION"
+ description: "There was a problem with an eBay internal system or\
+ \ process. Contact eBay Developer Technical Support for assistance."
+ "403":
+ description: "Forbidden"
+ x-response-codes:
+ errors:
+ 160002:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The authentication scope {scope} is incorrect for 'feed_type'\
+ \ {feedType}. Refer to documentation for details about the scopes."
+ 160022:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "You are not allowed to access this resource. Contact\
+ \ eBay Developer Technical Support for assistance."
+ "409":
+ description: "Conflict"
+ x-response-codes:
+ errors:
+ 160024:
+ domain: "API_FEED"
+ category: "BUSINESS"
+ description: "You have reached the maximum number of feed tasks that\
+ \ can be queued or processed concurrently. Wait for current tasks\
+ \ to complete before adding tasks. For more information, see the\
+ \ documentation for this API."
+ 160025:
+ domain: "API_FEED"
+ category: "BUSINESS"
+ description: "You have exceeded the maximum number of records or tasks\
+ \ that can be created or processed in the period (hourly or daily).\
+ \ Wait until the present period ends before trying again. Please\
+ \ reference the API documentation for more information."
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory"
+ - "https://api.ebay.com/oauth/api_scope/sell.fulfillment"
+ - "https://api.ebay.com/oauth/api_scope/sell.marketing"
+ - "https://api.ebay.com/oauth/api_scope/commerce.catalog.readonly"
+ - "https://api.ebay.com/oauth/api_scope/sell.analytics.readonly"
+ /task/{task_id}/download_input_file:
+ get:
+ tags:
+ - "task"
+ description: "This method downloads the file previously uploaded using uploadFile.\
+ \ Specify the task_id from the uploadFile call. Note: With respect to LMS, this method\
+ \ applies to all feed types except LMS_ORDER_REPORT and LMS_ACTIVE_INVENTORY_REPORT.\
+ \ See LMS API Feeds\
+ \ in the Selling Integration Guide.
"
+ operationId: "getInputFile"
+ parameters:
+ - name: "task_id"
+ in: "path"
+ description: "This path parameter is the unique identifier of the task associated\
+ \ with the input file to be downloaded.
Use the getTasks method to retrieve task IDs."
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "Success"
+ headers:
+ content-disposition:
+ schema:
+ type: "string"
+ description: "Returns metadata for the downloaded file."
+ content:
+ application/octet-stream:
+ schema:
+ $ref: "#/components/schemas/StreamingOutput"
+ "400":
+ description: "Bad Request"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 160001:
+ domain: "API_FEED"
+ category: "APPLICATION"
+ description: "There was a problem with an eBay internal system or\
+ \ process. Contact eBay Developer Technical Support for assistance."
+ "403":
+ description: "Forbidden"
+ x-response-codes:
+ errors:
+ 160002:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The authentication scope {scope} is incorrect for 'feed_type'\
+ \ {feedType}. Refer to documentation for details about the scopes."
+ "404":
+ description: "Not Found"
+ x-response-codes:
+ errors:
+ 160003:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "Task {taskID} does not exist."
+ 160014:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "No file found for task ID {taskID}."
+ 160015:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The 'task_id' {taskID} is a download task, which in\
+ \ invalid for an input file. "
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory"
+ - "https://api.ebay.com/oauth/api_scope/sell.fulfillment"
+ - "https://api.ebay.com/oauth/api_scope/sell.marketing"
+ - "https://api.ebay.com/oauth/api_scope/commerce.catalog.readonly"
+ - "https://api.ebay.com/oauth/api_scope/sell.analytics.readonly"
+ /task/{task_id}/download_result_file:
+ get:
+ tags:
+ - "task"
+ description: "This method retrieves the generated file that is associated with\
+ \ the specified task ID. The response of this call is a compressed or uncompressed\
+ \ CSV, XML, or JSON file, with the applicable file extension (for example:\
+ \ csv.gz). For details about how this method is used, see Working with Order Feeds in the Selling Integration Guide.
Note: The status of the task to retrieve\
+ \ must be in the COMPLETED or COMPLETED_WITH_ERROR state before this method\
+ \ can retrieve the file. You can use the getTask or getTasks method to retrieve\
+ \ the status of the task.
"
+ operationId: "getResultFile"
+ parameters:
+ - name: "task_id"
+ in: "path"
+ description: "This path parameter is the unique identifier of the task associated\
+ \ with the file to be downloaded.
Use the getTasks method to retrieve task IDs."
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "Success"
+ headers:
+ content-disposition:
+ schema:
+ type: "string"
+ description: "Returns metadata for the downloaded file."
+ content:
+ application/octet-stream:
+ schema:
+ $ref: "#/components/schemas/StreamingOutput"
+ "400":
+ description: "Bad Request"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 160001:
+ domain: "API_FEED"
+ category: "APPLICATION"
+ description: "There was a problem with an eBay internal system or\
+ \ process. Contact eBay Developer Technical Support for assistance."
+ "403":
+ description: "Forbidden"
+ x-response-codes:
+ errors:
+ 160002:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The authentication scope {scope} is incorrect for 'feed_type'\
+ \ {feedType}. Refer to documentation for details about the scopes."
+ "404":
+ description: "Not Found"
+ x-response-codes:
+ errors:
+ 160003:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "Task {taskID} does not exist."
+ 160014:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "No file found for task ID {taskID}."
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory"
+ - "https://api.ebay.com/oauth/api_scope/sell.fulfillment"
+ - "https://api.ebay.com/oauth/api_scope/sell.marketing"
+ - "https://api.ebay.com/oauth/api_scope/commerce.catalog.readonly"
+ - "https://api.ebay.com/oauth/api_scope/sell.analytics.readonly"
+ /task/{task_id}:
+ get:
+ tags:
+ - "task"
+ description: "This method retrieves the details and status of the specified\
+ \ task. The input is task_id.
For details of\
+ \ how this method is used, see Working with Order Feeds in the Selling Integration Guide. "
+ operationId: "getTask"
+ parameters:
+ - name: "task_id"
+ in: "path"
+ description: "This path parameter is the unique identifier of the task being\
+ \ retrieved.
Use the getTasks method to retrieve task IDs."
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Task"
+ "400":
+ description: "Bad Request"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 160001:
+ domain: "API_FEED"
+ category: "APPLICATION"
+ description: "There was a problem with an eBay internal system or\
+ \ process. Contact eBay Developer Technical Support for assistance."
+ "403":
+ description: "Forbidden"
+ x-response-codes:
+ errors:
+ 160002:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The authentication scope {scope} is incorrect for 'feed_type'\
+ \ {feedType}. Refer to documentation for details about the scopes."
+ "404":
+ description: "Not Found"
+ x-response-codes:
+ errors:
+ 160003:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "Task {taskID} does not exist."
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory"
+ - "https://api.ebay.com/oauth/api_scope/sell.fulfillment"
+ - "https://api.ebay.com/oauth/api_scope/sell.marketing"
+ - "https://api.ebay.com/oauth/api_scope/commerce.catalog.readonly"
+ - "https://api.ebay.com/oauth/api_scope/sell.analytics.readonly"
+ /task/{task_id}/upload_file:
+ post:
+ tags:
+ - "task"
+ description: "This method associates the specified file with the specified task\
+ \ ID and uploads the input file. After the file has been uploaded, the processing\
+ \ of the file begins.
Reports often take time to generate and it's\
+ \ common for this method to return an HTTP status of 202, which indicates\
+ \ the report is being generated. Use the getTask with the task ID\
+ \ or getTasks to determine the status of a report.
The status\
+ \ flow is QUEUED > IN_PROCESS > COMPLETED\
+ \ or COMPLETED_WITH_ERROR. When the status is COMPLETED\
+ \ or COMPLETED_WITH_ERROR, this indicates the file has been processed\
+ \ and the order report can be downloaded. If there are errors, they will be\
+ \ indicated in the report file.
For details of how this method\
+ \ is used in the upload flow, see Working with Order Feeds in the Selling Integration Guide.
This\
+ \ call does not have a JSON Request payload but uploads the file as form-data.\
+ \ For example:
fileName: "AddFixedPriceItem_Macbook.xml"\
+ \
name: "file"
type: "form-data"
\
+ \ file: @"/C:/Users/.../AddFixedPriceItem_Macbook.7z"
See Samples for information.Note:\
+ \ This method applies to all Seller Hub feed types, and to all LMS feed types except LMS_ORDER_REPORT\
+ \ and LMS_ACTIVE_INVENTORY_REPORT.
Note: You must use a Content-Type header\
+ \ with its value set to \"multipart/form-data\". See Samples\
+ \ for information.
Note: For\
+ \ LMS feed types, upload a regular XML file or an XML file in zipped format\
+ \ (both formats are allowed).
"
+ operationId: "uploadFile"
+ parameters:
+ - name: "task_id"
+ in: "path"
+ description: "This path parameter is the unique identifier of the task associated\
+ \ with the file that will be uploaded.
Use the getTasks method to retrieve task IDs."
+ required: true
+ schema:
+ type: "string"
+ - name: "Content-Type"
+ in: "header"
+ description: "This header indicates the format of the request body provided\
+ \ by the client. Its value should be set to multipart/form-data.\
+ \
For more information, refer to HTTP request headers."
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ type: "object"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 160023:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "Task {taskID} cannot upload a file."
+ 160020:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The format of the file to be uploaded is invalid. {additionalInfo}"
+ 160100:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "Payload not found. Make sure your file is uploaded inside\
+ \ the Request Body under the key name 'file'."
+ 160026:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "This task has expired and you cannot use it to upload\
+ \ a file. You must upload a file within a hour of creating the task."
+ 160028:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The file you tried to upload is too large. Please try\
+ \ using a smaller file. For more information, see the documentation\
+ \ for this API."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 160001:
+ domain: "API_FEED"
+ category: "APPLICATION"
+ description: "There was a problem with an eBay internal system or\
+ \ process. Contact eBay Developer Technical Support for assistance."
+ "403":
+ description: "Forbidden"
+ x-response-codes:
+ errors:
+ 160002:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The authentication scope {scope} is incorrect for 'feed_type'\
+ \ {feedType}. Refer to documentation for details about the scopes."
+ "404":
+ description: "Not Found"
+ x-response-codes:
+ errors:
+ 160003:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "Task {taskID} does not exist."
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory"
+ - "https://api.ebay.com/oauth/api_scope/sell.fulfillment"
+ - "https://api.ebay.com/oauth/api_scope/sell.marketing"
+ - "https://api.ebay.com/oauth/api_scope/commerce.catalog.readonly"
+ - "https://api.ebay.com/oauth/api_scope/sell.analytics.readonly"
+ /customer_service_metric_task:
+ get:
+ tags:
+ - "customer_service_metric_task"
+ description: "Use this method to return an array of customer service metric\
+ \ tasks. You can limit the tasks returned by specifying a date range. \
+ \ Note: You can pass in either\
+ \ the look_back_days or date_range, but not both.
"
+ operationId: "getCustomerServiceMetricTasks"
+ parameters:
+ - name: "date_range"
+ in: "query"
+ description: "The task creation date range. The results are filtered to include\
+ \ only tasks with a creation date that is equal to the dates specified or\
+ \ is within the specified range. Do not use with the look_back_days\
+ \ parameter.Format: UTC
For example, tasks within\
+ \ a range:
yyyy-MM-ddThh:mm:ss.SSSZ..yyyy-MM-ddThh:mm:ss.SSSZ\
+ \
Tasks created on March 8, 2020
2020-03-08T00:00.00.000Z..2020-03-09T00:00:00.000Z
Maximum:\
+ \ 90 days
"
+ required: false
+ schema:
+ type: "string"
+ - name: "feed_type"
+ in: "query"
+ description: "The feed type associated with the tasks being retrieved. The\
+ \ only presently supported value is CUSTOMER_SERVICE_METRICS_REPORT."
+ required: false
+ schema:
+ type: "string"
+ - name: "limit"
+ in: "query"
+ description: "The number of customer service metric tasks to return per page\
+ \ of the result set. Use this parameter in conjunction with the offset parameter\
+ \ to control the pagination of the output. For example, if offset\
+ \ is set to 10 and limit is set to 10, the call retrieves\
+ \ tasks 11 thru 20 from the result set.
If this parameter is omitted,\
+ \ the default value is used.
Note:This\
+ \ feature employs a zero-based list, where the first item in the list has\
+ \ an offset of 0.
Default: 10
Maximum:\
+ \ 500
"
+ required: false
+ schema:
+ type: "string"
+ - name: "look_back_days"
+ in: "query"
+ description: "The number of previous days in which to search for tasks. Do\
+ \ not use with the date_range parameter. If both date_range\
+ \ and look_back_days are omitted, this parameter's default\
+ \ value is used. Default value: 7
Range: 1-90 (inclusive)
"
+ required: false
+ schema:
+ type: "string"
+ - name: "offset"
+ in: "query"
+ description: "The number of customer service metric tasks to skip in the result\
+ \ set before returning the first task in the paginated response. Combine\
+ \ offset with the limit query parameter\
+ \ to control the items returned in the response. For example, if you supply\
+ \ an offset of 0 and a limit\
+ \ of 10, the first page of the response contains the first\
+ \ 10 items from the complete list of items retrieved by the call. If offset\
+ \ is 10 and limit is 20, the\
+ \ first page of the response contains items 11-30 from the complete result\
+ \ set.
Default: 0"
+ required: false
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/CustomerServiceMetricTaskCollection"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 160002:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The authentication scope {scope} is incorrect for 'feed_type'\
+ \ {feedType}. Refer to documentation for details about the scopes."
+ 160006:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The 'feed_type' {feedTypeValue} is invalid."
+ 160005:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "Both 'feed_type' and 'schedule_id' were provided. Please\
+ \ remove one of them."
+ 160010:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The 'date_range' must be less than or equal to 90 days."
+ 160011:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The 'look_back_days' value must be greater than zero\
+ \ and less than or equal to 90."
+ 160008:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "Both 'look_back_days' and 'date_range' were provided.\
+ \ Please remove one of them."
+ 160009:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The format of the 'date_range' is invalid. The format\
+ \ for a date range is yyyy-MM-ddThh:mm:ss.SSSZ..yyyy-MM-ddThh:mm:ss.SSSZ."
+ 160012:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The 'limit' value must be greater than zero and less\
+ \ than or equal to 500."
+ 160013:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The 'offset' value cannot be less than zero."
+ 160029:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The 'offset' value must be a multiple of the 'limit'\
+ \ value."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 160001:
+ domain: "API_FEED"
+ category: "APPLICATION"
+ description: "There was a problem with an eBay internal system or\
+ \ process. Contact eBay Developer Technical Support for assistance."
+ "403":
+ description: "Forbidden"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.analytics.readonly"
+ post:
+ tags:
+ - "customer_service_metric_task"
+ description: "
Use this method to create a customer service metrics download\
+ \ task with filter criteria for the customer service metrics report. When\
+ \ using this method, specify the feedType and filterCriteria\
+ \ including both evaluationMarketplaceId and customerServiceMetricType\
+ \ for the report. The method returns the location response header containing\
+ \ the call URI to use with getCustomerServiceMetricTask to\
+ \ retrieve status and details on the task.
Only CURRENT Customer Service\
+ \ Metrics reports can be generated with the Sell Feed API. PROJECTED reports\
+ \ are not supported at this time. See the getCustomerServiceMetric method document in the Analytics API for more\
+ \ information about these two types of reports.
Note: Before calling this API, retrieve the summary of the\
+ \ seller's performance and rating for the customer service metric by calling\
+ \ getCustomerServiceMetric (part of the Analytics API). You can then populate the create task request fields\
+ \ with the values from the response. This technique eliminates failed tasks\
+ \ that request a report for a customerServiceMetricType and\
+ \ evaluationMarketplaceId that are without evaluation.
"
+ operationId: "createCustomerServiceMetricTask"
+ parameters:
+ - name: "Accept-Language"
+ in: "header"
+ description: "Use this header to specify the natural language in which the\
+ \ authenticated user desires the response. For example, en-US\
+ \ for English or de-DE for German."
+ required: true
+ schema:
+ type: "string"
+ - name: "Content-Type"
+ in: "header"
+ description: "This header indicates the format of the request body provided\
+ \ by the client. Its value should be set to application/json.
\
+ \ For more information, refer to HTTP request headers."
+ required: true
+ schema:
+ type: "string"
+ requestBody:
+ description: "Request payload containing version, feedType, and optional filterCriteria."
+ content:
+ application/json:
+ schema:
+ description: "Request payload containing version, feedType, and optional\
+ \ filterCriteria."
+ $ref: "#/components/schemas/CreateServiceMetricsTaskRequest"
+ required: true
+ responses:
+ "202":
+ description: "Accepted"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 160018:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The 'schemaVersion' is invalid."
+ 160017:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The 'feedType' is missing or invalid."
+ 164502:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The 'listingCategories' in 'filterCriteria' or some\
+ \ part of the 'listingCategories' is invalid. {additionalInfo}"
+ 164503:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The 'shippingRegions' in 'filterCriteria' or some part\
+ \ of the 'shippingRegions' is invalid. {additionalInfo}"
+ 164500:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The 'customerServiceMetricType' in 'filterCriteria'\
+ \ is not a valid type. Valid metric types are ITEM_NOT_AS_DESCRIBED\
+ \ or ITEM_NOT_RECEIVED."
+ 164501:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The 'evaluationMarketplaceId' in 'filterCriteria' is\
+ \ not a supported marketplace. For a complete list of the supported\
+ \ marketplace IDs, see the documentation."
+ 164506:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The 'listingCategories' is not applicable to the 'customerServiceMetricType'\
+ \ {customerServiceMetricType} in 'filterCriteria'."
+ 164507:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The 'shippingRegions' is not applicable to the 'customerServiceMetricType'\
+ \ {customerServiceMetricType} in 'filterCriteria'."
+ 160024:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "You have reached the maximum number of feed tasks that\
+ \ can be queued or processed concurrently. Wait for current tasks\
+ \ to complete before adding tasks. For more information, see the\
+ \ documentation for this API."
+ 164504:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The Accept-Language header is missing or invalid."
+ 160025:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "You have exceeded the maximum number of feed tasks that\
+ \ can be created or processed in a given period (hour or day). Wait\
+ \ until the present period ends before adding tasks. For more information,\
+ \ see the documentation for this API."
+ 164505:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The 'filterCriteria' is missing or invalid."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 160001:
+ domain: "API_FEED"
+ category: "APPLICATION"
+ description: "There was a problem with an eBay internal system or\
+ \ process. Contact eBay Developer Technical Support for assistance."
+ "403":
+ description: "Forbidden"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.analytics.readonly"
+ /customer_service_metric_task/{task_id}:
+ get:
+ tags:
+ - "customer_service_metric_task"
+ description: "Use this method to retrieve customer service metric task details\
+ \ for the specified task. The input is task_id.
"
+ operationId: "getCustomerServiceMetricTask"
+ parameters:
+ - name: "task_id"
+ in: "path"
+ description: "This path parameter is the unique identifier of the customer\
+ \ service metric task being retrieved.
Use the getCustomerServiceMetricTasks method to retrieve task IDs."
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ServiceMetricsTask"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 160002:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "The authentication scope {scope} is incorrect for 'feed_type'\
+ \ {feedType}. Refer to documentation for details about the scopes."
+ 160003:
+ domain: "API_FEED"
+ category: "REQUEST"
+ description: "Task {taskID} does not exist."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 160001:
+ domain: "API_FEED"
+ category: "APPLICATION"
+ description: "There was a problem with an eBay internal system or\
+ \ process. Contact eBay Developer Technical Support for assistance."
+ "403":
+ description: "Forbidden"
+ "404":
+ description: "Not Found"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.analytics.readonly"
+components:
+ schemas:
+ CreateInventoryTaskRequest:
+ type: "object"
+ properties:
+ feedType:
+ type: "string"
+ description: "The feed type associated with the inventory task you are about\
+ \ to create. Presently, only one feed type is available:
LMS_ACTIVE_INVENTORY_REPORT
See\
+ \ Report download feed types for more information."
+ filterCriteria:
+ description: "This container allows a seller to create an ActiveInventoryReport\
+ \ for a single listing format."
+ $ref: "#/components/schemas/InventoryFilterCriteria"
+ schemaVersion:
+ type: "string"
+ description: "The version number of the inventory task to use for the feedType.
Note: This field must have a value\
+ \ of 1.0."
+ description: "This type defines inventory-related download task request fields."
+ CreateOrderTaskRequest:
+ type: "object"
+ properties:
+ feedType:
+ type: "string"
+ description: "The feed type associated with the task. The only presently\
+ \ supported value is LMS_ORDER_REPORT.
See Report download feed types for more information."
+ filterCriteria:
+ description: "The container for the filter fields. This container is used\
+ \ to set the filter criteria for the order report. A seller can set date\
+ \ range filters and/or can retrieve orders in a specific state."
+ $ref: "#/components/schemas/OrderFilterCriteria"
+ schemaVersion:
+ type: "string"
+ description: "The schema version of the LMS OrderReport. For the LMS_ORDER_REPORT\
+ \ feed type, see the OrderReport reference page to see the present schema version. The\
+ \ schemaVersion value is the version number shown at the top of\
+ \ the OrderReport page.
Restriction: This\
+ \ value must be 1113 or higher. The OrderReport schema version is updated\
+ \ about every two weeks. All version numbers are odd numbers (even numbers\
+ \ are skipped). For example, the next release version after '1113' is\
+ \ '1115'."
+ description: "The type that defines the fields for the createOrderTask\
+ \ request."
+ CreateServiceMetricsTaskRequest:
+ type: "object"
+ properties:
+ feedType:
+ type: "string"
+ description: "The feedType specified for the customer service\
+ \ metric task being created. The report lists the transaction details\
+ \ that contribute to the service metrics evaluation. Supported types include:CUSTOMER_SERVICE_METRICS_REPORT
"
+ filterCriteria:
+ description: "This container is used to customize and set criteria for Customer\
+ \ Service Metric report that will be associated with the task."
+ $ref: "#/components/schemas/CustomerServiceMetricsFilterCriteria"
+ schemaVersion:
+ type: "string"
+ description: "The version number of the customer service metric.
Note: This field must have a value\
+ \ of 1.0."
+ description: "The type that defines the fields for the Customer Service Metric\
+ \ reports generated with the Feed API."
+ CreateTaskRequest:
+ type: "object"
+ properties:
+ feedType:
+ type: "string"
+ description: "The feed type associated with the task. Available feed types:
"
+ schemaVersion:
+ type: "string"
+ description: "The schemaVersion/version number of the file format:
"
+ description: "The type that defines the fields for the createTask method."
+ CreateUserScheduleRequest:
+ type: "object"
+ properties:
+ feedType:
+ type: "string"
+ description: "The name of the feed type for the created schedule.
\
+ \ Use the getScheduleTemplates method to retrieve the feed type of a schedule\
+ \ template.
Note: Schedules are\
+ \ currently only available for LMS_ORDER_REPORT."
+ preferredTriggerDayOfMonth:
+ type: "integer"
+ description: "The preferred day of the month to trigger the schedule. This\
+ \ field can be used with preferredTriggerHour for monthly\
+ \ schedules. The last day of the month is used for numbers larger than\
+ \ the actual number of days in the month.
This field is available\
+ \ as specified by the template (scheduleTemplateId).\
+ \ The template can specify this field as optional or required, and optionally\
+ \ provides a default value.
Minimum: 1
Maximum:\
+ \ 31"
+ format: "int32"
+ preferredTriggerDayOfWeek:
+ type: "string"
+ description: "The preferred day of the week to trigger the schedule. This\
+ \ field can be used with preferredTriggerHour for weekly\
+ \ schedules.
This field is available as specified by the template\
+ \ (scheduleTemplateId). The template can specify this\
+ \ field as optional or required, and optionally provides a default value.\
+ \ For implementation help, refer to eBay\
+ \ API documentation"
+ preferredTriggerHour:
+ type: "string"
+ description: "The preferred two-digit hour of the day to trigger the schedule.\
+ \
This field is available as specified by the template (scheduleTemplateId).\
+ \ The template can specify this field as optional or required, and optionally\
+ \ provides a default value.
Format: UTC hhZ
For example, the following represents 11:00 am UTC: 11Z"
+ scheduleEndDate:
+ type: "string"
+ description: "The timestamp on which the report generation (subscription)\
+ \ ends. After this date, the schedule status becomes INACTIVE.\
+ \
Use this field, if available, to end the schedule in the\
+ \ future. This value must be later than scheduleStartDate\
+ \ (if supplied). This field is available as specified by the template\
+ \ (scheduleTemplateId). The template can specify this\
+ \ field as optional or required, and optionally provides a default value.
Format: UTC yyyy-MM-ddTHHZ
For example, the following represents UTC October 10, 2021 at\
+ \ 10:00 AM:
2021-10-10T10Z"
+ scheduleName:
+ type: "string"
+ description: "The schedule name assigned by the user for the created schedule."
+ scheduleStartDate:
+ type: "string"
+ description: "The timestamp to start generating the report. After this timestamp,\
+ \ the schedule status becomes active until either the scheduleEndDate\
+ \ occurs or the scheduleTemplateId becomes inactive.\
+ \
Use this field, if available, to start the schedule in the\
+ \ future but before the scheduleEndDate (if supplied).\
+ \ This field is available as specified by the template (scheduleTemplateId).\
+ \ The template can specify this field as optional or required, and optionally\
+ \ provides a default value.
Format: UTC yyyy-MM-ddTHHZ
For example, the following represents a schedule start date\
+ \ of UTC October 01, 2020 at 12:00 PM:
2020-01-01T12Z"
+ scheduleTemplateId:
+ type: "string"
+ description: "The unique identifier of the template to be used for this\
+ \ schedule.
Use the getScheduleTemplates method to retrieve the schedule template ID.\
+ \ This method requires a schedule template ID that is ACTIVE.
Note: Schedules are currently only available\
+ \ for LMS_ORDER_REPORT."
+ schemaVersion:
+ type: "string"
+ description: "The schema version of a schedule."
+ description: "The type that defines the fields for the createSchedule\
+ \ method."
+ CustomerServiceMetricTaskCollection:
+ type: "object"
+ properties:
+ href:
+ type: "string"
+ description: "The URI of the current page of results."
+ limit:
+ type: "integer"
+ description: "The value of the limit parameter submitted\
+ \ in the request, which is the maximum number of tasks to return per page,\
+ \ from the result set. A result set is the complete set of tasks returned\
+ \ by the method. Note:\
+ \ Even though this parameter is not required to be submitted in the request,\
+ \ the parameter defaults to 10 if omitted.
Note: If this is the last or only page of\
+ \ the result set, the page may contain fewer tasks than the limit value.\
+ \ To determine the number of pages in a result set, divide the total value\
+ \ (total number of tasks matching input criteria) by this limit value,\
+ \ and then round up to the next integer. For example, if the total\
+ \ value was 120 (120 total tasks) and the limit\
+ \ value was 50 (show 50 tasks per page), the total number\
+ \ of pages in the result set is three, so the seller would have to make\
+ \ three separate getCustomerServiceMetricTasks calls\
+ \ to view all tasks matching the input criteria.
"
+ format: "int32"
+ next:
+ type: "string"
+ description: "The relative path to the call URI for the next page of results.\
+ \ This value is returned if there is an additional page of results to\
+ \ return from the result set."
+ offset:
+ type: "integer"
+ description: "The number of results skipped in the result set before returning\
+ \ the first result. This value can be set in the request with the offset\
+ \ query parameter. Note: The items\
+ \ in a paginated result set use a zero-based list where the first item\
+ \ in the list has an offset of 0.
"
+ format: "int32"
+ prev:
+ type: "string"
+ description: "The URI for the previous page of results. This parameter is\
+ \ returned if a previous page of results from the result set exists."
+ tasks:
+ type: "array"
+ description: "An array of the customer service tasks on this page. The tasks\
+ \ are sorted by creation date. An empty array is returned if the filter\
+ \ criteria excludes all tasks."
+ items:
+ $ref: "#/components/schemas/ServiceMetricsTask"
+ total:
+ type: "integer"
+ description: "The total number of tasks that match the criteria."
+ format: "int32"
+ description: "This type defines customer service metric task response fields."
+ CustomerServiceMetricsFilterCriteria:
+ type: "object"
+ properties:
+ customerServiceMetricType:
+ type: "string"
+ description: "An enumeration value that specifies the customer service metric\
+ \ that eBay tracks to measure seller performance.
See CustomerServiceMetricTypeEnum\
+ \ for values. For implementation help, refer to eBay\
+ \ API documentation"
+ evaluationMarketplaceId:
+ type: "string"
+ description: "An enumeration value that specifies the eBay marketplace where\
+ \ the evaluation occurs.
See MarketplaceIdEnum for values. For implementation help, refer to eBay\
+ \ API documentation"
+ listingCategories:
+ type: "array"
+ description: "A list of listing category IDs on which the service metric\
+ \ is measured. A seller can use one or more L1 (top-level) eBay categories\
+ \ to get metrics specific to those L1 categories. The Category IDs for\
+ \ each L1 category are required. Category ID values for L1 categories\
+ \ can be retrieved using the Taxonomy API. Note: Pass this attribute to narrow down your filter\
+ \ results for the ITEM_NOT_AS_DESCRIBED customerServiceMetricType.
\
+ \ Supported categories include:
primary(L1) category Id
"
+ items:
+ type: "string"
+ shippingRegions:
+ type: "array"
+ description: "A list of shipping region enumeration values on which the\
+ \ service metric is measured. This comma delimited array allows the seller\
+ \ to customize the report to focus on domestic or international shipping.\
+ \ Note: Pass this attribute\
+ \ to narrow down your filter results for the ITEM_NOT_RECEIVED\
+ \ customerServiceMetricType.
Supported categories include:
primary(L1)\
+ \ category Id
See ShippingRegionTypeEnum for\
+ \ values"
+ items:
+ type: "string"
+ description: " For implementation help, refer to eBay\
+ \ API documentation"
+ description: "A complex data type that filters data for report creation. See\
+ \ CustomerServiceMetricsFilterCriteria for fields and descriptions."
+ DateRange:
+ type: "object"
+ properties:
+ from:
+ type: "string"
+ description: "The beginning date in the range. If the parent type is included,\
+ \ both the from and/or the to fields\
+ \ become conditionally required.
Format: UTC yyyy-MM-ddThh:mm:ss.SSSZ\
+ \
For example: Tasks within a range
yyyy-MM-ddThh:mm:ss.SSSZ..yyyy-MM-ddThh:mm:ss.SSSZ \
+ \
Tasks created on March 31, 2021
2021-03-31T00:00:00.000Z..2021-03-31T00:00:00.000Z\
+ \ "
+ to:
+ type: "string"
+ description: "The end date for the date range, which is inclusive. If the\
+ \ parent type is included, both the from and/or the to\
+ \ fields become conditionally required.
For example:\
+ \
Tasks within a range
yyyy-MM-ddThh:mm:ss.SSSZ..yyyy-MM-ddThh:mm:ss.SSSZ\
+ \
Tasks created on March 31, 2021
2021-03-31T00:00:00.000Z..2021-03-31T00:00:00.000Z\
+ \ "
+ description: "The type that defines the fields for a date range."
+ Error:
+ type: "object"
+ properties:
+ category:
+ type: "string"
+ description: "Identifies the type of erro."
+ domain:
+ type: "string"
+ description: "Name for the primary system where the error occurred. This\
+ \ is relevant for application errors."
+ errorId:
+ type: "integer"
+ description: "A unique number to identify the error."
+ format: "int32"
+ inputRefIds:
+ type: "array"
+ description: "An array of request elements most closely associated to the\
+ \ error."
+ items:
+ type: "string"
+ longMessage:
+ type: "string"
+ description: "A more detailed explanation of the error."
+ message:
+ type: "string"
+ description: "Information on how to correct the problem, in the end user's\
+ \ terms and language where applicable."
+ outputRefIds:
+ type: "array"
+ description: "An array of request elements most closely associated to the\
+ \ error."
+ items:
+ type: "string"
+ parameters:
+ type: "array"
+ description: "An array of name/value pairs that describe details the error\
+ \ condition. These are useful when multiple errors are returned."
+ items:
+ $ref: "#/components/schemas/ErrorParameter"
+ subdomain:
+ type: "string"
+ description: "Further helps indicate which subsystem the error is coming\
+ \ from. System subcategories include: Initialization, Serialization, Security,\
+ \ Monitoring, Rate Limiting, etc."
+ description: "This type defines the fields that can be returned in an error."
+ ErrorParameter:
+ type: "object"
+ properties:
+ name:
+ type: "string"
+ description: "The object of the error."
+ value:
+ type: "string"
+ description: "The value of the object."
+ InventoryFilterCriteria:
+ type: "object"
+ properties:
+ listingFormat:
+ type: "string"
+ description: "The listing format for the ActiveInventoryReport being created.\
+ \ Supported types are:
\
+ \ For implementation help, refer to eBay\
+ \ API documentation"
+ description: "This container is used to set the filter criteria for the ActiveInventoryReport.\
+ \ A seller can create an ActiveInventoryReport for a single listing format."
+ InventoryTask:
+ type: "object"
+ properties:
+ taskId:
+ type: "string"
+ description: "The ID of the task. This ID is generated when the task was\
+ \ created by the createInventoryTask method."
+ status:
+ type: "string"
+ description: "The status of the task. Users must wait until status is complete\
+ \ before moving on to the next step (such as uploading/downloading a file).\
+ \ For implementation help, refer to eBay\
+ \ API documentation"
+ feedType:
+ type: "string"
+ description: "The feed type associated with the inventory task."
+ creationDate:
+ type: "string"
+ description: "The date the task was created."
+ completionDate:
+ type: "string"
+ description: "The timestamp when the task status went into\
+ \ the COMPLETED, COMPLETED_WITH_ERROR, or PARTIALLY_PROCESSED\
+ \ state. This field is only returned if the status is one of the three\
+ \ completed values."
+ schemaVersion:
+ type: "string"
+ description: "The schema version number associated with the task."
+ detailHref:
+ type: "string"
+ description: "The path to the call URI used to retrieve the task. This field\
+ \ points to the getInventoryTask URI."
+ uploadSummary:
+ description: "This container provides summary information on an upload feed\
+ \ (not applicable for download feed types)."
+ $ref: "#/components/schemas/UploadSummary"
+ filterCriteria:
+ description: "This container is used to set the filter criteria for the\
+ \ ActiveInventoryReport. A seller can retrieve listings for a specified\
+ \ format."
+ $ref: "#/components/schemas/InventoryFilterCriteria"
+ InventoryTaskCollection:
+ type: "object"
+ properties:
+ href:
+ type: "string"
+ description: "The path to the call URI that produced the current page of\
+ \ results."
+ limit:
+ type: "integer"
+ description: "The value of the limit parameter submitted\
+ \ in the request, which is the maximum number of inventory tasks to return\
+ \ per page, from the result set. A result set is the complete set of tasks\
+ \ returned by the method.
Note:\
+ \ Though this parameter is not required to be submitted in the request,\
+ \ the parameter defaults to 10 if omitted. Additionally,\
+ \ if this is the last or only page of the result set, the page may contain\
+ \ fewer tasks than the limit value submitted in the request.
To determine the number of pages in a result set, divide the\
+ \ total value (total number of tasks matching the input criteria) by this\
+ \ limit value, and then round up to the next integer. For example, if\
+ \ the total value was 120 (120 total tasks)\
+ \ and the limit value was 50 (show 50 tasks\
+ \ per page), the total number of pages in the result set is three, so\
+ \ the seller would have to make three separate getInventoryTasks\
+ \ calls to view all tasks matching the input criteria."
+ format: "int32"
+ next:
+ type: "string"
+ description: "The path to the call URI for the next page of results. This\
+ \ value is returned if there is an additional page of results to return\
+ \ from the result set."
+ offset:
+ type: "integer"
+ description: "The number of results skipped in the result set before listing\
+ \ the first returned result. This value can be specified in the request\
+ \ with the offset query parameter.
Note: The items in a paginated result set\
+ \ use a zero-based list, where the first item in the list has an offset\
+ \ of 0."
+ format: "int32"
+ prev:
+ type: "string"
+ description: "The path to the call URI for the previous page of results.\
+ \ This is returned if there is a previous page of results from the result\
+ \ set."
+ tasks:
+ type: "array"
+ description: "An array of the inventory tasks on this page. The tasks are\
+ \ sorted by creation date.
Note:\
+ \ An empty array is returned if the filter criteria excludes all tasks."
+ items:
+ $ref: "#/components/schemas/InventoryTask"
+ total:
+ type: "integer"
+ description: "The total number of inventory tasks that match the input criteria."
+ format: "int32"
+ OrderFilterCriteria:
+ type: "object"
+ properties:
+ creationDateRange:
+ description: "The creation date range of the orders you want returned. Set\
+ \ the date range so it contains less than 10 days (maximum). If you do\
+ \ not specify a DateRange, results from the last 10 days\
+ \ will be returned by default."
+ $ref: "#/components/schemas/DateRange"
+ modifiedDateRange:
+ description: "The modified date range of the orders you want returned. \
+ \ Note: This container is for\
+ \ future use. At this time, the createOrderTask method\
+ \ only supports order creation date filters and not modified order date\
+ \ filters.
"
+ $ref: "#/components/schemas/DateRange"
+ orderStatus:
+ type: "string"
+ description: "The order status of the orders returned. If the filter is\
+ \ omitted from createOrderTask call, orders that are in both ACTIVE\
+ \ and COMPLETED states are returned. For implementation\
+ \ help, refer to eBay\
+ \ API documentation"
+ description: "The type that defines the fields for the order filters."
+ OrderTask:
+ type: "object"
+ properties:
+ completionDate:
+ type: "string"
+ description: "The timestamp when the task went into the COMPLETED\
+ \ or COMPLETED_WITH_ERROR state. This state means that eBay\
+ \ has compiled the report for the seller based on the seller’s filter\
+ \ criteria, and the seller can run a getResultFile call\
+ \ to download the report."
+ creationDate:
+ type: "string"
+ description: "The date the task was created."
+ detailHref:
+ type: "string"
+ description: "The path to the call URI used to retrieve the task."
+ feedType:
+ type: "string"
+ description: "The feed type associated with the task."
+ filterCriteria:
+ description: "A container that returns the filter criteria used."
+ $ref: "#/components/schemas/OrderFilterCriteria"
+ schemaVersion:
+ type: "string"
+ description: "The schema version number associated with the create task."
+ status:
+ type: "string"
+ description: "The enumeration value that indicates the state of the task\
+ \ that was submitted in the request. See FeedStatusEnum\
+ \ for information. The values COMPLETED and COMPLETED_WITH_ERROR\
+ \ indicate the Order Report file is ready to download.
For implementation\
+ \ help, refer to eBay\
+ \ API documentation"
+ taskId:
+ type: "string"
+ description: "The ID of the task that was submitted in the request."
+ uploadSummary:
+ description: "This container provides summary information on an upload feed\
+ \ (not applicable for download feed types)."
+ $ref: "#/components/schemas/UploadSummary"
+ description: "The type that defines the fields for the getOrderTask\
+ \ response."
+ OrderTaskCollection:
+ type: "object"
+ properties:
+ href:
+ type: "string"
+ description: "The path to the call URI that produced the current page of\
+ \ results."
+ limit:
+ type: "integer"
+ description: "The value of the limit parameter submitted\
+ \ in the request, which is the maximum number of order tasks to return\
+ \ per page, from the result set. A result set is the complete set of tasks\
+ \ returned by the method. Note:\
+ \ Though this parameter is not required to be submitted in the request,\
+ \ the parameter defaults to 10 if omitted.
\
+ \ Note: If this is the last\
+ \ or only page of the result set, the page may contain fewer tasks than\
+ \ the limit value. To determine the number of pages in\
+ \ a result set, divide the total value (total number of tasks matching\
+ \ input criteria) by this limit value, and then round up to the next integer.\
+ \ For example, if the total value was 120\
+ \ (120 total tasks) and the limit value was 50\
+ \ (show 50 tasks per page), the total number of pages in the result set\
+ \ is three, so the seller would have to make three separate getOrderTasks\
+ \ calls to view all tasks matching the input criteria.
"
+ format: "int32"
+ next:
+ type: "string"
+ description: "The path to the call URI for the next page of results. This\
+ \ value is returned if there is an additional page of results to return\
+ \ from the result set."
+ offset:
+ type: "integer"
+ description: "The number of results skipped in the result set before listing\
+ \ the first returned result. This value can be set in the request with\
+ \ the offset query parameter. Note:\
+ \ The items in a paginated result set use a zero-based list where\
+ \ the first item in the list has an offset of 0.
"
+ format: "int32"
+ prev:
+ type: "string"
+ description: "The path to the call URI for the previous page of results.\
+ \ This is returned if there is a previous page of results from the result\
+ \ set."
+ tasks:
+ type: "array"
+ description: "An array of the order tasks on this page. The tasks are sorted\
+ \ by creation date. An empty array is returned if the filter criteria\
+ \ excludes all tasks."
+ items:
+ $ref: "#/components/schemas/OrderTask"
+ total:
+ type: "integer"
+ description: "The total number of order tasks that match the input criteria."
+ format: "int32"
+ description: "The type that defines the fields for a paginated result set of\
+ \ orders. The response consists of 0 or more sequenced pages where\
+ \ each page has 0 or more items."
+ ScheduleTemplateCollection:
+ type: "object"
+ properties:
+ href:
+ type: "string"
+ description: "The path to the call URI that produced the current page of\
+ \ results."
+ limit:
+ type: "integer"
+ description: "The value of the limit parameter submitted\
+ \ in the request, which is the maximum number of schedule templates to\
+ \ return per page, from the result set. A result set is the complete set\
+ \ of schedule templates returned by the method. Note: Though this parameter is not required to be submitted\
+ \ in the request, the parameter defaults to 10 if omitted.
\
+ \ Note: If this is the last\
+ \ or only page of the result set, the page may contain fewer tasks than\
+ \ the limit value. To determine the number of pages in\
+ \ a result set, divide the total value (total number of tasks matching\
+ \ input criteria) by this limit value, and then round up to the next integer.\
+ \ For example, if the total value was 120\
+ \ (120 total tasks) and the limit value was 50\
+ \ (show 50 tasks per page), the total number of pages in the result set\
+ \ is three, so the seller would have to make three separate getScheduleTemplates\
+ \ calls to view all tasks matching the input criteria.
"
+ format: "int32"
+ next:
+ type: "string"
+ description: "The path to the call URI for the next page of results. This\
+ \ value is returned if there is an additional page of results to return\
+ \ from the result set."
+ offset:
+ type: "integer"
+ description: "The number of results skipped in the result set before listing\
+ \ the first returned result. This value can be set in the request with\
+ \ the offset query parameter. Note:\
+ \ The items in a paginated result set use a zero-based list where\
+ \ the first item in the list has an offset of 0.
"
+ format: "int32"
+ prev:
+ type: "string"
+ description: "The path to the call URI for the previous page of results.\
+ \ This is returned if there is a previous page of results from the result\
+ \ set."
+ scheduleTemplates:
+ type: "array"
+ description: "An array of the schedule templates on this page. An empty\
+ \ array is returned if the filter criteria excludes all tasks."
+ items:
+ $ref: "#/components/schemas/ScheduleTemplateResponse"
+ total:
+ type: "integer"
+ description: "The total number of schedule templates that match the input\
+ \ criteria."
+ format: "int32"
+ description: "The type that defines the fields for a paginated result set of\
+ \ schedule templates. The response consists of 0 or more sequenced pages\
+ \ where each page has 0 or more items."
+ ScheduleTemplateResponse:
+ type: "object"
+ properties:
+ feedType:
+ type: "string"
+ description: "The feed type of the schedule template. Note: When calling createSchedule\
+ \ and updateSchedule methods you must match the feed\
+ \ type specified by the schedule template (this feedType).
"
+ frequency:
+ type: "string"
+ description: "This field specifies how often the schedule is generated.\
+ \ If set to HALF_HOUR or ONE_HOUR, you cannot\
+ \ set a preferredTriggerHour using createSchedule\
+ \ or updateSchedule. For implementation help, refer to\
+ \ eBay\
+ \ API documentation"
+ name:
+ type: "string"
+ description: "The template name provided by the template."
+ scheduleTemplateId:
+ type: "string"
+ description: "The ID of the template. Use this ID to create a schedule based\
+ \ on the properties of this schedule template."
+ status:
+ type: "string"
+ description: "The present status of the template. You cannot create or modify\
+ \ a schedule using a template with an INACTIVE status. For\
+ \ implementation help, refer to eBay\
+ \ API documentation"
+ supportedConfigurations:
+ type: "array"
+ description: "An array of the configuration supported by this template."
+ items:
+ $ref: "#/components/schemas/SupportedConfiguration"
+ description: "The type that defines the fields for a paginated result set of\
+ \ available schedule templates. The response consists of 0 or more sequenced\
+ \ pages where each page has 0 or more items."
+ ServiceMetricsTask:
+ type: "object"
+ properties:
+ completionDate:
+ type: "string"
+ description: "The timestamp when the customer service metrics task went\
+ \ into the COMPLETED or COMPLETED_WITH_ERROR\
+ \ state. This field is only returned if the status is one of the two completed\
+ \ values. This state means that eBay has compiled the report for the seller\
+ \ based on the seller’s filter criteria, and the seller can run a getResultFile\
+ \ call to download the report."
+ creationDate:
+ type: "string"
+ description: "The date the customer service metrics task was created."
+ detailHref:
+ type: "string"
+ description: "The relative getCustomerServiceMetricTask\
+ \ call URI path to retrieve the corresponding task."
+ feedType:
+ type: "string"
+ description: "The feed type associated with the task."
+ filterCriteria:
+ description: "This container shows the criteria set for the report."
+ $ref: "#/components/schemas/CustomerServiceMetricsFilterCriteria"
+ schemaVersion:
+ type: "string"
+ description: "The schema version number of the file format. If omitted,\
+ \ the default value is used. Default value: 1.0
"
+ status:
+ type: "string"
+ description: "An enumeration value that indicates the state of the task.\
+ \ See FeedStatusEnum for values. For implementation help,\
+ \ refer to eBay\
+ \ API documentation"
+ taskId:
+ type: "string"
+ description: "The unique eBay-assigned ID of the task."
+ description: "This type defines customer service metric task response fields."
+ StreamingOutput:
+ type: "object"
+ description: "File stream"
+ SupportedConfiguration:
+ type: "object"
+ properties:
+ defaultValue:
+ type: "string"
+ description: "The default value for the property. If a value is omitted\
+ \ from the schedule and a default value is supplied, the default value\
+ \ is used."
+ property:
+ type: "string"
+ description: "Properties supported by the template. Properties can include\
+ \ the following:
- scheduleStartDate: The timestamp that\
+ \ the report generation (subscription) begins. After this timestamp, the\
+ \ schedule status becomes active until either the scheduleEndDate occurs\
+ \ or the scheduleTemplate becomes inactive. Format: UTC
yyyy-MM-ddTHHZ - scheduleEndDate:\
+ \ The timestamp that the report generation (subscription) ends. After\
+ \ this date, the schedule status becomes INACTIVE. Format: UTC
yyyy-MM-ddTHHZ - schemaVersion:\
+ \ The schema version of the schedule templates feedType. This field is\
+ \ required if the feedType has a schema version.
- preferredTriggerDayOfMonth:\
+ \ The preferred day of the month to trigger the schedule.
- preferredTriggerDayOfWeek:\
+ \ The preferred day of the week to trigger the schedule.
- preferredTriggerHour:\
+ \ The preferred two-digit hour of the day to trigger the schedule. Format:\
+ \ UTC
hhZ "
+ usage:
+ type: "string"
+ description: "Whether the specified property is REQUIRED or OPTIONAL. For\
+ \ implementation help, refer to eBay\
+ \ API documentation"
+ description: "An array that defines the configuration supported by this template.\
+ \ This includes specified properties and usage (whether the property is REQUIRED\
+ \ or OPTIONAL), and an optional default value."
+ Task:
+ type: "object"
+ properties:
+ completionDate:
+ type: "string"
+ description: "The timestamp when the task went into the COMPLETED\
+ \ or COMPLETED_WITH_ERROR state. This state means that eBay\
+ \ has compiled the report for the seller based on the seller’s filter\
+ \ criteria, and the seller can run a getResultFile call\
+ \ to download the report."
+ creationDate:
+ type: "string"
+ description: "The date the task was created."
+ detailHref:
+ type: "string"
+ description: "The path to the call URI used to retrieve the task. This field\
+ \ points to the GetOrderTask URI if the task is for LMS_ORDER_REPORT\
+ \ or will be null if this task is for LMS_ORDER_ACK."
+ feedType:
+ type: "string"
+ description: "The feed type associated with the task."
+ schemaVersion:
+ type: "string"
+ description: "The schema version number associated with the task."
+ status:
+ type: "string"
+ description: "The enumeration value that indicates the state of the task\
+ \ that was submitted in the request. See FeedStatusEnum\
+ \ for information. The values COMPLETED and COMPLETED_WITH_ERROR\
+ \ indicate the Order Report file is ready to download.
For implementation\
+ \ help, refer to eBay\
+ \ API documentation"
+ taskId:
+ type: "string"
+ description: "The ID of the task that was submitted in the request."
+ uploadSummary:
+ description: "This container provides summary information on an upload feed\
+ \ (not applicable for download feed types)."
+ $ref: "#/components/schemas/UploadSummary"
+ description: "The type that defines the fields for the task details."
+ TaskCollection:
+ type: "object"
+ properties:
+ href:
+ type: "string"
+ description: "The path to the call URI that produced the current page of\
+ \ results. "
+ limit:
+ type: "integer"
+ description: "The value of the limit parameter submitted\
+ \ in the request, which is the maximum number of tasks to return per page,\
+ \ from the result set. A result set is the complete set of tasks returned\
+ \ by the method. Note:\
+ \ Though this parameter is not required to be submitted in the request,\
+ \ the parameter defaults to 10 if omitted.
Note: If this is the last or only page of\
+ \ the result set, the page may contain fewer tasks than the limit\
+ \ value. To determine the number of pages in a result set, divide the\
+ \ total value (total number of tasks matching input criteria) by this\
+ \ limit value, and then round up to the next integer. For example, if\
+ \ the total value was 120 (120 total tasks)\
+ \ and the limit value was 50 (show 50 tasks\
+ \ per page), the total number of pages in the result set is three, so\
+ \ the seller would have to make three separate getTasks\
+ \ calls to view all tasks matching the input criteria.
"
+ format: "int32"
+ next:
+ type: "string"
+ description: "The path to the call URI for the next page of results. This\
+ \ value is returned if there is an additional page of results to return\
+ \ from the result set."
+ offset:
+ type: "integer"
+ description: "The number of results skipped in the result set before listing\
+ \ the first returned result. This value can be set in the request with\
+ \ the offset query parameter. Note:\
+ \ The items in a paginated result set use a zero-based list where\
+ \ the first item in the list has an offset of 0.
"
+ format: "int32"
+ prev:
+ type: "string"
+ description: "The path to the call URI for the previous page of results.\
+ \ This is returned if there is a previous page of results from the result\
+ \ set."
+ tasks:
+ type: "array"
+ description: "An array of the tasks on this page. The tasks are sorted by\
+ \ creation date. An empty array is returned if the filter criteria excludes\
+ \ all tasks. "
+ items:
+ $ref: "#/components/schemas/Task"
+ total:
+ type: "integer"
+ description: "The total number of tasks that match the input criteria."
+ format: "int32"
+ description: "The type that defines the fields for a paginated result set of\
+ \ tasks. The response consists of 0 or more sequenced pages where\
+ \ each page has 0 or more items."
+ UpdateUserScheduleRequest:
+ type: "object"
+ properties:
+ preferredTriggerDayOfMonth:
+ type: "integer"
+ description: "The preferred day of the month to trigger the schedule. This\
+ \ field can be used with preferredTriggerHour for monthly\
+ \ schedules. The last day of the month is used for numbers larger than\
+ \ the actual number of days in the month.
This field is available\
+ \ as specified by the template (scheduleTemplateId).\
+ \ The template can specify this field as optional or required, and optionally\
+ \ provides a default value.
Minimum: 1
Maximum: 31"
+ format: "int32"
+ preferredTriggerDayOfWeek:
+ type: "string"
+ description: "The preferred day of the week to trigger the schedule. This\
+ \ field can be used with preferredTriggerHour for weekly\
+ \ schedules.
This field is available as specified by the template\
+ \ (scheduleTemplateId). The template can specify this\
+ \ field as optional or required, and optionally provides a default value.\
+ \ For implementation help, refer to eBay\
+ \ API documentation"
+ preferredTriggerHour:
+ type: "string"
+ description: "The preferred two-digit hour of the day to trigger the schedule.\
+ \
This field is available as specified by the template (scheduleTemplateId).\
+ \ The template can specify this field as optional or required, and optionally\
+ \ provides a default value.
Format: UTC hhZ
For example, the following represents 11:00 am UTC: 11Z
Minimum: 00Z
Maximum:\
+ \ 23Z"
+ scheduleEndDate:
+ type: "string"
+ description: "The timestamp on which the schedule (report generation) ends.\
+ \ After this date, the schedule status becomes INACTIVE.\
+ \
Use this field, if available, to end the schedule in the\
+ \ future. This value must be later than scheduleStartDate\
+ \ (if supplied). This field is available as specified by the template\
+ \ (scheduleTemplateId). The template can specify this\
+ \ field as optional or required, and optionally provides a default value.
Format: UTC yyyy-MM-ddTHHZ
For example, the following represents UTC October 10, 2021 at\
+ \ 10:00 AM:
2021-10-10T10Z"
+ scheduleName:
+ type: "string"
+ description: "The schedule name assigned by the user for the created schedule."
+ scheduleStartDate:
+ type: "string"
+ description: "The timestamp to start generating the report. After this timestamp,\
+ \ the schedule status becomes active until either the scheduleEndDate\
+ \ occurs or the scheduleTemplateId becomes inactive.\
+ \
Use this field, if available, to start the schedule in the\
+ \ future but before the scheduleEndDate (if supplied).\
+ \ This field is available as specified by the template (scheduleTemplateId).\
+ \ The template can specify this field as optional or required, and optionally\
+ \ provides a default value.
Format: UTC yyyy-MM-ddTHHZ
For example, the following represents a schedule start date\
+ \ of UTC October 01, 2020 at 12:00 PM:
2020-01-01T12Z"
+ schemaVersion:
+ type: "string"
+ description: "The schema version of a schedule."
+ description: "The type that defines the fields for a schedule update to a schedule\
+ \ generated with the Feed API."
+ UploadSummary:
+ type: "object"
+ properties:
+ failureCount:
+ type: "integer"
+ description: "The number of records, such as the number of listings created\
+ \ or the number of pictures uploaded to a listing, that failed to process\
+ \ during the upload feed. Check the response file and correct any issues\
+ \ mentioned. If the feed fails before processing, no response file is\
+ \ provided. In this case check the REST output response."
+ format: "int32"
+ successCount:
+ type: "integer"
+ description: "The number of records that were successfully processed during\
+ \ the upload feed."
+ format: "int32"
+ description: "This container provides summary information on an upload feed\
+ \ (not applicable for download feed types)."
+ UserScheduleCollection:
+ type: "object"
+ properties:
+ href:
+ type: "string"
+ description: "The path to the call URI that produced the current page of\
+ \ results."
+ limit:
+ type: "integer"
+ description: "The value of the limit parameter submitted\
+ \ in the request, which is the maximum number of schedules to return per\
+ \ page, from the result set. A result set is the complete set of schedules\
+ \ returned by the method. Note:\
+ \ Though this parameter is not required to be submitted in the request,\
+ \ the parameter defaults to 10 if omitted. Note: If this is the last or only page of the result\
+ \ set, the page may contain fewer tasks than the limit\
+ \ value. To determine the number of pages in a result set, divide the\
+ \ total value (total number of tasks matching input criteria) by this\
+ \ limit value, and then round up to the next integer. For example, if\
+ \ the total value was 120 (120 total tasks)\
+ \ and the limit value was 50 (show 50 tasks\
+ \ per page), the total number of pages in the result set is three, so\
+ \ the seller would have to make three separate getSchedules\
+ \ calls to view all tasks matching the input criteria.
"
+ format: "int32"
+ next:
+ type: "string"
+ description: "The path to the call URI for the next page of results. This\
+ \ value is returned if there is an additional page of results to return\
+ \ from the result set."
+ offset:
+ type: "integer"
+ description: "The number of results skipped in the result set before listing\
+ \ the first returned result. This value can be set in the request with\
+ \ the offset query parameter. Note:\
+ \ The items in a paginated result set use a zero-based list where\
+ \ the first item in the list has an offset of 0.
"
+ format: "int32"
+ prev:
+ type: "string"
+ description: "The path to the call URI for the previous page of results.\
+ \ This is returned if there is a previous page of results from the result\
+ \ set."
+ schedules:
+ type: "array"
+ description: "An array of the schedules on this page. An empty array is\
+ \ returned if the filter criteria excludes all tasks."
+ items:
+ $ref: "#/components/schemas/UserScheduleResponse"
+ total:
+ type: "integer"
+ description: "The total number of schedules that match the input criteria."
+ format: "int32"
+ description: "The type that defines the fields for a paginated result set of\
+ \ user schedules. The response consists of 0 or more sequenced pages\
+ \ where each page has 0 or more items."
+ UserScheduleResponse:
+ type: "object"
+ properties:
+ scheduleId:
+ type: "string"
+ description: "The ID of the schedule. This ID is generated when the schedule\
+ \ was created by the createSchedule method."
+ creationDate:
+ type: "string"
+ description: "The creation date of the schedule in hours based on the 24-hour\
+ \ Coordinated Universal Time (UTC) clock."
+ feedType:
+ type: "string"
+ description: "The feedType associated with the schedule."
+ lastModifiedDate:
+ type: "string"
+ description: "The date the schedule was last modified."
+ preferredTriggerDayOfMonth:
+ type: "integer"
+ description: "The preferred day of the month to trigger the schedule. This\
+ \ field can be used with preferredTriggerHour for monthly\
+ \ schedules. The last day of the month is used for numbers larger than\
+ \ the number of days in the month."
+ format: "int32"
+ preferredTriggerDayOfWeek:
+ type: "string"
+ description: "The preferred day of the week to trigger the schedule. This\
+ \ field can be used with preferredTriggerHour for weekly\
+ \ schedules. For implementation help, refer to eBay\
+ \ API documentation"
+ preferredTriggerHour:
+ type: "string"
+ description: "The preferred two-digit hour of the day to trigger the schedule.\
+ \
Format: UTC hhZ
For example,\
+ \ the following represents 11:00 am UTC:
11Z
"
+ scheduleEndDate:
+ type: "string"
+ description: "The timestamp on which the report generation (subscription)\
+ \ ends. After this date, the schedule status becomes INACTIVE."
+ scheduleName:
+ type: "string"
+ description: "The schedule name assigned by the user for the created schedule.\
+ \ Users assign this name for their reference."
+ scheduleStartDate:
+ type: "string"
+ description: "The timestamp that indicates the start of the report generation."
+ scheduleTemplateId:
+ type: "string"
+ description: "The ID of the template used to create this schedule."
+ schemaVersion:
+ type: "string"
+ description: "The schema version of the feedType for the schedule."
+ status:
+ type: "string"
+ description: "The enumeration value that indicates the state of the schedule.\
+ \ For implementation help, refer to eBay\
+ \ API documentation"
+ statusReason:
+ type: "string"
+ description: "The reason the schedule is inactive. For implementation help,\
+ \ refer to eBay\
+ \ API documentation"
+ description: "The type that defines the fields for a paginated result set of\
+ \ available schedules. The response consists of 0 or more sequenced pages\
+ \ where each page has 0 or more items."
+ securitySchemes:
+ api_auth:
+ type: "oauth2"
+ description: "The security definitions for this API. Please check individual\
+ \ operations for applicable scopes."
+ flows:
+ authorizationCode:
+ authorizationUrl: "https://auth.ebay.com/oauth2/authorize"
+ tokenUrl: "https://api.ebay.com/identity/v1/oauth2/token"
+ scopes:
+ https://api.ebay.com/oauth/api_scope/sell.fulfillment: "View and manage\
+ \ your order fulfillments"
+ https://api.ebay.com/oauth/api_scope/commerce.catalog.readonly: " This\
+ \ scope would allow signed in user to read catalog data."
+ https://api.ebay.com/oauth/api_scope/sell.inventory: "View and manage\
+ \ your inventory and offers"
+ https://api.ebay.com/oauth/api_scope/sell.marketing: "View and manage\
+ \ your eBay marketing activities, such as ad campaigns and listing promotions"
+ https://api.ebay.com/oauth/api_scope/sell.analytics.readonly: "View your\
+ \ selling analytics data, such as performance reports"
diff --git a/sell_fulfillment_v1_oas3.yaml b/sell_fulfillment_v1_oas3.yaml
new file mode 100644
index 0000000..55fb4b1
--- /dev/null
+++ b/sell_fulfillment_v1_oas3.yaml
@@ -0,0 +1,4497 @@
+---
+openapi: "3.0.0"
+info:
+ title: "Fulfillment API"
+ description: "Use the Fulfillment API to complete the process of packaging, addressing,\
+ \ handling, and shipping each order on behalf of the seller, in accordance with\
+ \ the payment method and timing specified at checkout."
+ contact:
+ name: "eBay Inc."
+ license:
+ name: "eBay API License Agreement"
+ url: "https://developer.ebay.com/join/api-license-agreement"
+ version: "v1.20.7"
+servers:
+- url: "https://api.ebay.com{basePath}"
+ description: "Production"
+ variables:
+ basePath:
+ default: "/sell/fulfillment/v1"
+- url: "https://apiz.ebay.com{basePath}"
+ description: "Production"
+ variables:
+ basePath:
+ default: "/sell/fulfillment/v1"
+paths:
+ /order/{orderId}:
+ get:
+ tags:
+ - "order"
+ description: "Use this call to retrieve the contents of an order based on its\
+ \ unique identifier, orderId. This value was returned in the getOrders\
+ \ call's orders.orderId field when you searched for orders by creation\
+ \ date, modification date, or fulfillment status. Include the optional fieldGroups\
+ \ query parameter set to TAX_BREAKDOWN to return a breakdown\
+ \ of the taxes and fees.
The returned Order object contains\
+ \ information you can use to create and process fulfillments, including: \
+ \ - Information about the buyer and seller
- Information about the\
+ \ order's line items
- The plans for packaging, addressing and shipping\
+ \ the order
- The status of payment, packaging, addressing, and shipping\
+ \ the order
- A summary of monetary amounts specific to the order such\
+ \ as pricing, payments, and shipping costs
- A summary of applied taxes\
+ \ and fees, and optionally a breakdown of each
"
+ operationId: "getOrder"
+ parameters:
+ - name: "fieldGroups"
+ in: "query"
+ description: "This parameter lets you control what is returned in the response.
Note: The only presently supported value is\
+ \ TAX_BREAKDOWN. This field group adds addition fields to the\
+ \ response that return a breakdown of taxes and fees."
+ required: false
+ schema:
+ type: "string"
+ - name: "orderId"
+ in: "path"
+ description: "This path parameter is used to specify the unique identifier\
+ \ of the order being retrieved.
Use the getOrders method to retrieve order IDs. Order ID\
+ \ values are also shown in My eBay/Seller Hub.
Note: getOrders can return orders up to two years\
+ \ old. Do not provide the orderId for an order created more than\
+ \ two years in the past."
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Order"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 32800:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Invalid field group: {fieldGroup}"
+ 32100:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Invalid order ID: {orderId}"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 30500:
+ domain: "API_FULFILLMENT"
+ category: "APPLICATION"
+ description: "System error"
+ "404":
+ description: "Not Found"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.fulfillment"
+ - "https://api.ebay.com/oauth/api_scope/sell.fulfillment.readonly"
+ /order:
+ get:
+ tags:
+ - "order"
+ description: "Use this method to search for and retrieve one or more orders\
+ \ based on their creation date, last modification date, or fulfillment status\
+ \ using the filter parameter. You can alternatively specify a list\
+ \ of orders using the orderIds parameter. Include the optional fieldGroups\
+ \ query parameter set to TAX_BREAKDOWN to return a breakdown\
+ \ of the taxes and fees. By default, when no filters are used this call returns\
+ \ all orders created within the last 90 days.
The returned Order\
+ \ objects contain information you can use to create and process fulfillments,\
+ \ including: - Information about the buyer and seller
- Information\
+ \ about the order's line items
- The plans for packaging, addressing\
+ \ and shipping the order
- The status of payment, packaging, addressing,\
+ \ and shipping the order
- A summary of monetary amounts specific to\
+ \ the order such as pricing, payments, and shipping costs
- A summary\
+ \ of applied taxes and fees, and optionally a breakdown of each
\
+ \
Important: In this call,\
+ \ the cancelStatus.cancelRequests array is returned but is always empty.\
+ \ Use the getOrder call instead, which returns this array fully populated\
+ \ with information about any cancellation requests."
+ operationId: "getOrders"
+ parameters:
+ - name: "fieldGroups"
+ in: "query"
+ description: "This parameter lets you control what is returned in the response.
Note: The only presently supported value is\
+ \ TAX_BREAKDOWN. This field group adds addition fields to the\
+ \ response that return a breakdown of taxes and fees."
+ required: false
+ schema:
+ type: "string"
+ - name: "filter"
+ in: "query"
+ description: "One or more comma-separated criteria for narrowing down the\
+ \ collection of orders returned by this call. These criteria correspond\
+ \ to specific fields in the response payload. Multiple filter criteria combine\
+ \ to further restrict the results.
Note:\
+ \ getOrders can return orders up to two years old. Do not set the\
+ \ creationdate filter to a date beyond two years in the past.
Note: If the orderIds parameter\
+ \ is included in the request, the filter parameter will be ignored.
The\
+ \ available criteria are as follows: creationdate \
+ \ - The time period during which qualifying orders were created (the orders.creationDate\
+ \ field). In the URI, this is expressed as a starting timestamp, with or\
+ \ without an ending timestamp (in brackets). The timestamps are in ISO 8601\
+ \ format, which uses the 24-hour Universal Coordinated Time (UTC) clock.For\
+ \ example:
creationdate:[2016-02-21T08:25:43.511Z..]\
+ \ identifies orders created on or after the given timestamp. creationdate:[2016-02-21T08:25:43.511Z..2016-04-21T08:25:43.511Z]\
+ \ identifies orders created between the given timestamps, inclusive. \
+ \
lastmodifieddate - The time\
+ \ period during which qualifying orders were last modified (the orders.modifiedDate\
+ \ field). In the URI, this is expressed as a starting timestamp, with or\
+ \ without an ending timestamp (in brackets). The timestamps are in ISO 8601\
+ \ format, which uses the 24-hour Universal Coordinated Time (UTC) clock.For\
+ \ example:
lastmodifieddate:[2016-05-15T08:25:43.511Z..]\
+ \ identifies orders modified on or after the given timestamp. lastmodifieddate:[2016-05-15T08:25:43.511Z..2016-05-31T08:25:43.511Z]\
+ \ identifies orders modified between the given timestamps, inclusive. \
+ \
Note: If creationdate\
+ \ and lastmodifieddate are both included, only creationdate\
+ \ is used.
orderfulfillmentstatus \
+ \ - The degree to which qualifying orders have been shipped (the orders.orderFulfillmentStatus\
+ \ field). In the URI, this is expressed as one of the following value combinations:\
+ \
orderfulfillmentstatus:{NOT_STARTED|IN_PROGRESS}\
+ \ specifies orders for which no shipping fulfillments have been started,\
+ \ plus orders for which at least one shipping fulfillment has been started\
+ \ but not completed. orderfulfillmentstatus:{FULFILLED|IN_PROGRESS}\
+ \ specifies orders for which all shipping fulfillments have been completed,\
+ \ plus orders for which at least one shipping fulfillment has been started\
+ \ but not completed.
Note:\
+ \ The values NOT_STARTED, IN_PROGRESS, and FULFILLED\
+ \ can be used in various combinations, but only the combinations shown here\
+ \ are currently supported.
Here is an example of a getOrders\
+ \ call using all of these filters:
GET https://api.ebay.com/sell/v1/order?
filter=creationdate:%5B2016-03-21T08:25:43.511Z..2016-04-21T08:25:43.511Z%5D,
lastmodifieddate:%5B2016-05-15T08:25:43.511Z..%5D,
orderfulfillmentstatus:%7BNOT_STARTED%7CIN_PROGRESS%7D\
+ \
Note: This call requires\
+ \ that certain special characters in the URI query string be percent-encoded:\
+ \
[ = %5B ]\
+ \ = %5D {\
+ \ = %7B |\
+ \ = %7C }\
+ \ = %7D
This query filter example uses these codes.\
+ \ For implementation help, refer to eBay API documentation at https://developer.ebay.com/api-docs/sell/fulfillment/types/api:FilterField"
+ required: false
+ schema:
+ type: "string"
+ - name: "limit"
+ in: "query"
+ description: "The number of orders to return per page of the result set. Use\
+ \ this parameter in conjunction with the offset parameter to control\
+ \ the pagination of the output.
For example, if offset is\
+ \ set to 10 and limit is set to 10, the\
+ \ call retrieves orders 11 thru 20 from the result set.
If a limit\
+ \ is not set, the limit defaults to 50 and returns up to 50 orders.\
+ \ If a requested limit is more than 200, the call fails and returns an error.
Note: This feature employs\
+ \ a zero-based list, where the first item in the list has an offset of 0.\
+ \ If the orderIds parameter is included in the request, this parameter\
+ \ will be ignored.
Maximum: 200
\
+ \ Default: 50"
+ required: false
+ schema:
+ type: "string"
+ - name: "offset"
+ in: "query"
+ description: "Specifies the number of orders to skip in the result set before\
+ \ returning the first order in the paginated response. Combine offset\
+ \ with the limit query parameter to control the items returned in\
+ \ the response. For example, if you supply an offset of 0\
+ \ and a limit of 10, the first page of the response\
+ \ contains the first 10 items from the complete list of items retrieved\
+ \ by the call. If offset is 10 and limit is 20,\
+ \ the first page of the response contains items 11-30 from the complete\
+ \ result set.
Default: 0
"
+ required: false
+ schema:
+ type: "string"
+ - name: "orderIds"
+ in: "query"
+ description: "A comma-separated list of the unique identifiers of the orders\
+ \ to retrieve (maximum 50). If one or more order ID values are specified\
+ \ through the orderIds query parameter, all other query parameters\
+ \ will be ignored.
Note:\
+ \ getOrders can return orders up to two years old. Do not provide\
+ \ the orderId for an order created more than two years in the past."
+ required: false
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/OrderSearchPagedCollection"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 30800:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Invalid filter value {fieldvalue} for filter {fieldname}"
+ 32800:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Invalid field group: {fieldGroup}"
+ 30850:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Start and end dates can't be in the future"
+ 30820:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Start date is missing"
+ 30900:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Exceeded maximum number of order IDs (the current limit\
+ \ is 50)"
+ 30840:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Start date should be before end date"
+ 31000:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Invalid offset: {offsetvalue}"
+ 30810:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Invalid date format"
+ 30700:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Invalid filter name: {fieldname}"
+ 31100:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Invalid limit: {limitvalue}"
+ 30830:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Time range between start date and end date must be within\
+ \ '{allowedTime}' years."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 30500:
+ domain: "API_FULFILLMENT"
+ category: "APPLICATION"
+ description: "System error"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.fulfillment"
+ - "https://api.ebay.com/oauth/api_scope/sell.fulfillment.readonly"
+ /order/{order_id}/issue_refund:
+ post:
+ tags:
+ - "order"
+ summary: "Issue Refund"
+ description: "Important!\
+ \ Due to EU & UK Payments regulatory requirements, an additional security\
+ \ verification via Digital Signatures is required for certain API calls that\
+ \ are made on behalf of EU/UK sellers, including issueRefund. Please\
+ \ refer to Digital Signatures for APIs to learn more on the impacted APIs\
+ \ and the process to create signatures to be included in the HTTP payload.
\
+ \ This method allows a seller to issue a full or partial refund to a buyer\
+ \ for an order. Full or partial refunds can be issued at the order level or\
+ \ line item level.
The refunds issued through this method are processed\
+ \ asynchronously, so the refund will not show as 'Refunded' right away. A\
+ \ seller will have to make a subsequent getOrder call to check the status of the refund. \
+ \ The status of an order refund can be found in the paymentSummary.refunds.refundStatus field of the getOrder response."
+ operationId: "issueRefund"
+ parameters:
+ - name: "order_id"
+ in: "path"
+ description: "This path parameter is used to specify the unique identifier\
+ \ of the order associated with a refund.
Use the getOrders method to retrieve order IDs."
+ required: true
+ schema:
+ type: "string"
+ - name: "Content-Type"
+ in: "header"
+ description: "This header indicates the format of the request body provided\
+ \ by the client. Its value should be set to application/json.
\
+ \ For more information, refer to HTTP request headers."
+ required: true
+ schema:
+ type: "string"
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/IssueRefundRequest"
+ required: false
+ responses:
+ "200":
+ description: "OK"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Refund"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 34912:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Legacy transaction id must be specified for item level\
+ \ refund if you use legacyReference."
+ 34914:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Can't find the item in the order."
+ 34915:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "The refund amount exceeds order amount."
+ 34916:
+ domain: "API_FULFILLMENT"
+ category: "BUSINESS"
+ description: "A post-transaction case exists on this order, seller\
+ \ refund can't be triggered."
+ 34917:
+ domain: "API_FULFILLMENT"
+ category: "BUSINESS"
+ description: "This order was already refunded."
+ 34920:
+ domain: "API_FULFILLMENT"
+ category: "BUSINESS"
+ description: "It's too late to issue a refund for this order."
+ 34921:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "The comment exceeds the length limit, please make sure\
+ \ it doesn't exceed 1000 characters."
+ 34922:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Refund can't be issued while previous refund is processing."
+ 34923:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Refund cannot be issued for this type of order."
+ 34901:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Order id can't be null or empty."
+ 34902:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Request can't be empty."
+ 34903:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "The refund reason must be specified."
+ 34905:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Either orderLevelRefundAmount or refundItems must be\
+ \ specified."
+ 34906:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "The amount value must be specified."
+ 34907:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "The amount value must be positive and within two decimals."
+ 34908:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "The amount currency must be specified."
+ 34909:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "The amount currency isn't correct."
+ 34910:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Either legacyReference or lineItemId must be specified\
+ \ for item level refund."
+ 34911:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Legacy item id must be specified for item level refund\
+ \ if you use legacyReference."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 34900:
+ domain: "API_FULFILLMENT"
+ category: "APPLICATION"
+ description: "There was a problem with an eBay internal system or\
+ \ process. Contact eBay developer support for assistance."
+ "403":
+ description: "Access Forbidden"
+ "404":
+ description: "Resource Not found"
+ x-response-codes:
+ errors:
+ 34913:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Can not find the order."
+ "409":
+ description: "Conflict"
+ x-response-codes:
+ errors:
+ 34928:
+ domain: "API_FULFILLMENT"
+ category: "BUSINESS"
+ description: "Your refund did not go through because we could not\
+ \ verify your payment option. Please change your payment option\
+ \ and try again."
+ 34929:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "You cannot refund this order yet since the buyer payment\
+ \ has not been processed. Please try again later."
+ 34930:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Default payment method limit exceeded. Please use a\
+ \ different payment option or try again later."
+ 34918:
+ domain: "API_FULFILLMENT"
+ category: "BUSINESS"
+ description: "This is not an eBay managed payments order."
+ 34919:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Unauthorized access."
+ 34924:
+ domain: "API_FULFILLMENT"
+ category: "BUSINESS"
+ description: "The item refund amount exceeds the item remaining amount."
+ 34925:
+ domain: "API_FULFILLMENT"
+ category: "BUSINESS"
+ description: "The refund operation could not be completed with any\
+ \ of the payment methods saved to the seller's account."
+ 34926:
+ domain: "API_FULFILLMENT"
+ category: "BUSINESS"
+ description: "A suitable payment method could not be found for the\
+ \ refund operation. Please resolve in Seller Hub."
+ 34927:
+ domain: "API_FULFILLMENT"
+ category: "BUSINESS"
+ description: "The selected payment method for the refund operation\
+ \ was invalid or declined."
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.finances"
+ /order/{orderId}/shipping_fulfillment:
+ get:
+ tags:
+ - "shipping_fulfillment"
+ description: "Use this call to retrieve the contents of all fulfillments currently\
+ \ defined for a specified order based on the order's unique identifier, orderId.\
+ \ This value is returned in the getOrders call's members.orderId\
+ \ field when you search for orders by creation date or shipment status."
+ operationId: "getShippingFulfillments"
+ parameters:
+ - name: "orderId"
+ in: "path"
+ description: "This path parameter is used to specify the unique identifier\
+ \ of the order associated with the shipping fulfillments being retrieved.
Use\
+ \ the getOrders method to retrieve order IDs. Order ID\
+ \ values are also shown in My eBay/Seller Hub."
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ShippingFulfillmentPagedCollection"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 32100:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Invalid order ID: {orderId}"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 30500:
+ domain: "API_FULFILLMENT"
+ category: "APPLICATION"
+ description: "System error"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.fulfillment"
+ - "https://api.ebay.com/oauth/api_scope/sell.fulfillment.readonly"
+ post:
+ tags:
+ - "shipping_fulfillment"
+ description: "When you group an order's line items into one or more packages,\
+ \ each package requires a corresponding plan for handling, addressing, and\
+ \ shipping; this is a shipping fulfillment. For each package, execute\
+ \ this call once to generate a shipping fulfillment associated with that package.\
+ \
Note: A single line\
+ \ item in an order can consist of multiple units of a purchased item, and\
+ \ one unit can consist of multiple parts or components. Although these components\
+ \ might be provided by the manufacturer in separate packaging, the seller\
+ \ must include all components of a given line item in the same package.\
+ \
Before using this call for a given package, you must determine which\
+ \ line items are in the package. If the package has been shipped, you should\
+ \ provide the date of shipment in the request. If not provided, it will default\
+ \ to the current date and time."
+ operationId: "createShippingFulfillment"
+ parameters:
+ - name: "orderId"
+ in: "path"
+ description: "This path parameter is used to specify the unique identifier\
+ \ of the order associated with the shipping fulfillment being created.
\
+ \ Use the getOrders method to retrieve order IDs."
+ required: true
+ schema:
+ type: "string"
+ - name: "Content-Type"
+ in: "header"
+ description: "This header indicates the format of the request body provided\
+ \ by the client. Its value should be set to application/json.
\
+ \ For more information, refer to HTTP request headers."
+ required: true
+ schema:
+ type: "string"
+ requestBody:
+ description: "fulfillment payload"
+ content:
+ application/json:
+ schema:
+ description: "fulfillment payload"
+ $ref: "#/components/schemas/ShippingFulfillmentDetails"
+ required: true
+ responses:
+ "201":
+ description: "Created. The call also returns the following location response\
+ \ header:
{ENV}/sell/fulfillment/v1/order/{ORDERID}/shipping_fulfillment/{FULFILLMENTID}\
+ \
The ENV string is the HTTPS path to the same eBay\
+ \ supported environment in which this call was issued. The ORDERID\
+ \ parameter is the unique identifier of the order addressed by this call;\
+ \ for example, 01-03955-36441. The FULFILLMENTID\
+ \ parameter identifies the newly created fulfillment; for example, 9405509699937003457459.\
+ \ Use this Get Fulfillment URI to retrieve the contents of the new fulfillment."
+ headers:
+ Location:
+ schema:
+ type: "string"
+ description: "The location response header contains the getShippingFulfillment URI to retrieve\
+ \ the contents of the newly created shipping fulfillment. The URL\
+ \ includes the eBay-assigned fulfillmentId, which you\
+ \ can use to reference the shipping fulfillment."
+ content:
+ application/json:
+ schema:
+ type: "object"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 32400:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Requested user is suspended"
+ 32210:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Duplicate line item in the request"
+ 32100:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Invalid Order Id: {orderId}"
+ 32500:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Invalid shipped date"
+ 34100:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Maximum tracking number for order is exceeded"
+ 34500:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Please use PUT operation for updating shipping fulfillment"
+ 32200:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Invalid line item id: {lineItemId}"
+ 32600:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Invalid input data"
+ 34200:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Line Items contain Global Shipping Program and non-Global\
+ \ Shipping Program orders"
+ 32300:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Invalid shipment tracking number or carrier"
+ 34300:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Mark As Shipped for multiple Global Shipping Program\
+ \ line items is not supported"
+ "500":
+ description: "Internal Server Error.
Note:\
+ \ In some cases, this call may succeed if you issue it once more after\
+ \ receiving this error."
+ x-response-codes:
+ errors:
+ 30500:
+ domain: "API_FULFILLMENT"
+ category: "APPLICATION"
+ description: "System error"
+ "409":
+ description: "Conflict"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.fulfillment"
+ /order/{orderId}/shipping_fulfillment/{fulfillmentId}:
+ get:
+ tags:
+ - "shipping_fulfillment"
+ description: "Use this call to retrieve the contents of a fulfillment based\
+ \ on its unique identifier, fulfillmentId (combined with the associated\
+ \ order's orderId). The fulfillmentId value was originally generated\
+ \ by the createShippingFulfillment call, and is returned by the getShippingFulfillments\
+ \ call in the members.fulfillmentId field."
+ operationId: "getShippingFulfillment"
+ parameters:
+ - name: "fulfillmentId"
+ in: "path"
+ description: "This path parameter is used to specify the unique identifier\
+ \ of the shipping fulfillment being retrieved.
Use the getShippingFulfillments method to retrieved fulfillment\
+ \ IDs."
+ required: true
+ schema:
+ type: "string"
+ - name: "orderId"
+ in: "path"
+ description: "This path parameter is used to specify the unique identifier\
+ \ of the order associated with the shipping fulfillment being retrieved.
\
+ \ Use the getOrders method to retrieve order IDs. Order ID\
+ \ values are also shown in My eBay/Seller Hub."
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ShippingFulfillment"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 32100:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Invalid order ID: {orderId}"
+ 32110:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Invalid shipping fulfillment ID: {fulfillmentId}"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 30500:
+ domain: "API_FULFILLMENT"
+ category: "APPLICATION"
+ description: "System error"
+ "404":
+ description: "Not Found"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.fulfillment"
+ - "https://api.ebay.com/oauth/api_scope/sell.fulfillment.readonly"
+ /payment_dispute/{payment_dispute_id}:
+ get:
+ tags:
+ - "payment_dispute"
+ summary: "Get Payment Dispute Details"
+ description: "This method retrieves detailed information on a specific payment\
+ \ dispute. The payment dispute identifier is passed in as path parameter at\
+ \ the end of the call URI.
Below is a summary of the information that\
+ \ is retrieved:- Current status of payment dispute
- Amount of\
+ \ the payment dispute
- Reason the payment dispute was opened
- Order\
+ \ and line items associated with the payment dispute
- Seller response\
+ \ options if an action is currently required on the payment dispute
- Details\
+ \ on the results of the payment dispute if it has been closed
- Details\
+ \ on any evidence that was provided by the seller to fight the payment dispute
"
+ operationId: "getPaymentDispute"
+ parameters:
+ - name: "payment_dispute_id"
+ in: "path"
+ description: "This parameter is used to specify the unique identifier of the\
+ \ payment dispute being retrieved.
Use the getPaymentDisputeSummaries method to retrieve payment\
+ \ dispute IDs."
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/PaymentDispute"
+ "400":
+ description: "Bad Request"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 33000:
+ domain: "API_FULFILLMENT"
+ category: "APPLICATION"
+ description: "There was a problem with an eBay internal system or\
+ \ process. Contact eBay developer support for assistance."
+ "404":
+ description: "Invalid Payment Dispute Id"
+ x-response-codes:
+ errors:
+ 33001:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Invalid Payment Dispute Id"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.payment.dispute"
+ servers:
+ - url: "https://apiz.ebay.com{basePath}"
+ description: "Production"
+ variables:
+ basePath:
+ default: "/sell/fulfillment/v1"
+ /payment_dispute/{payment_dispute_id}/fetch_evidence_content:
+ get:
+ tags:
+ - "payment_dispute"
+ summary: "Get Payment Dispute Evidence File"
+ description: "This call retrieves a specific evidence file for a payment dispute.\
+ \ The following three identifying parameters are needed in the call URI:- payment_dispute_id:\
+ \ the identifier of the payment dispute. The identifier of each payment dispute\
+ \ is returned in the getPaymentDisputeSummaries response.
- evidence_id:\
+ \ the identifier of the evidential file set. The identifier of an evidential\
+ \ file set for a payment dispute is returned under the evidence\
+ \ array in the getPaymentDispute response.
- file_id:\
+ \ the identifier of an evidential file. This file must belong to the evidential\
+ \ file set identified through the evidence_id query parameter.\
+ \ The identifier of each evidential file is returned under the evidence.files\
+ \ array in the getPaymentDispute response.
An\
+ \ actual binary file is returned if the call is successful. An error will\
+ \ occur if any of three identifiers are invalid.
"
+ operationId: "fetchEvidenceContent"
+ parameters:
+ - name: "payment_dispute_id"
+ in: "path"
+ description: "This path parameter is used to specify the unique identifier\
+ \ of the payment dispute associated with the evidence file being retrieved.
\
+ \ Use the getPaymentDisputeSummaries method to retrieve payment\
+ \ dispute IDs."
+ required: true
+ schema:
+ type: "string"
+ - name: "evidence_id"
+ in: "query"
+ description: "This query parameter is used to specify the unique identifier\
+ \ of the evidential file set.
The identifier of an evidential file\
+ \ set for a payment dispute is returned under the evidence\
+ \ array in the getPaymentDispute response."
+ required: true
+ schema:
+ type: "string"
+ - name: "file_id"
+ in: "query"
+ description: "This query parameter is used to specify the unique identifier\
+ \ of an evidential file. This file must belong to the evidential file set\
+ \ identified through the evidence_id query parameter.
The\
+ \ identifier of each evidential file is returned under the evidence.files\
+ \ array in the getPaymentDispute response."
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/octet-stream:
+ schema:
+ type: "array"
+ items:
+ type: "string"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 33002:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Invalid Evidence Id"
+ 33003:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Invalid Evidence File Id"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 33000:
+ domain: "API_FULFILLMENT"
+ category: "APPLICATION"
+ description: "There was a problem with an eBay internal system or\
+ \ process. Contact eBay developer support for assistance."
+ "404":
+ description: "Invalid Payment Dispute Id"
+ x-response-codes:
+ errors:
+ 33001:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Invalid Payment Dispute Id"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.payment.dispute"
+ servers:
+ - url: "https://apiz.ebay.com{basePath}"
+ description: "Production"
+ variables:
+ basePath:
+ default: "/sell/fulfillment/v1"
+ /payment_dispute/{payment_dispute_id}/activity:
+ get:
+ tags:
+ - "payment_dispute"
+ summary: "Get Payment Dispute Activity"
+ description: "This method retrieve a log of activity for a payment dispute.\
+ \ The identifier of the payment dispute is passed in as a path parameter.\
+ \ The output includes a timestamp for each action of the payment dispute,\
+ \ from creation to resolution, and all steps in between."
+ operationId: "getActivities"
+ parameters:
+ - name: "payment_dispute_id"
+ in: "path"
+ description: "This parameter is used to specify the unique identifier of the\
+ \ payment dispute associated with the activity log being retrieved.
\
+ \ Use the getPaymentDisputeSummaries method to retrieve payment\
+ \ dispute IDs."
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/PaymentDisputeActivityHistory"
+ "400":
+ description: "Bad Request"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 33000:
+ domain: "API_FULFILLMENT"
+ category: "APPLICATION"
+ description: "There was a problem with an eBay internal system or\
+ \ process. Contact eBay developer support for assistance."
+ "404":
+ description: "Invalid Payment Dispute Id"
+ x-response-codes:
+ errors:
+ 33001:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Invalid Payment Dispute Id"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.payment.dispute"
+ servers:
+ - url: "https://apiz.ebay.com{basePath}"
+ description: "Production"
+ variables:
+ basePath:
+ default: "/sell/fulfillment/v1"
+ /payment_dispute_summary:
+ get:
+ tags:
+ - "payment_dispute"
+ summary: "Search Payment Dispute by Filters"
+ description: "This method is used retrieve one or more payment disputes filed\
+ \ against the seller. These payment disputes can be open or recently closed.\
+ \ The following filter types are available in the request payload to control\
+ \ the payment disputes that are returned:- Dispute filed against a specific\
+ \ order (order_id parameter is used)
- Dispute(s) filed by a\
+ \ specific buyer (buyer_username parameter is used)
- Dispute(s)\
+ \ filed within a specific date range (open_date_from and/or open_date_to\
+ \ parameters are used)
- Disputes in a specific state (payment_dispute_status\
+ \ parameter is used)
More than one of these filter types can be used\
+ \ together. See the request payload request fields for more information about\
+ \ how each filter is used.
If none of the filters are used, all open\
+ \ and recently closed payment disputes are returned.
Pagination is\
+ \ also available. See the limit and offset fields for more information\
+ \ on how pagination is used for this method."
+ operationId: "getPaymentDisputeSummaries"
+ parameters:
+ - name: "order_id"
+ in: "query"
+ description: "This filter is used if the seller wishes to retrieve one or\
+ \ more payment disputes filed against a specific order. It is possible that\
+ \ there can be more than one dispute filed against an order if the order\
+ \ has multiple line items. If this filter is used, any other filters are\
+ \ ignored.
Use the getOrders method to retrieve order IDs. Order ID\
+ \ values are also shown in My eBay/Seller Hub."
+ required: false
+ schema:
+ type: "string"
+ - name: "buyer_username"
+ in: "query"
+ description: "This filter is used if the seller wishes to retrieve one or\
+ \ more payment disputes opened by a specific buyer. The string that is passed\
+ \ in to this query parameter is the eBay user ID of the buyer."
+ required: false
+ schema:
+ type: "string"
+ - name: "open_date_from"
+ in: "query"
+ description: "The open_date_from and/or open_date_to date filters\
+ \ are used if the seller wishes to retrieve payment disputes opened within\
+ \ a specific date range. A maximum date range that may be set with the open_date_from\
+ \ and/or open_date_to filters is 90 days. These date filters use\
+ \ the ISO-8601 24-hour date and time format, and time zone used is Universal\
+ \ Coordinated Time (UTC), also known as Greenwich Mean Time (GMT), or Zulu.
The\
+ \ open_date_from field sets the beginning date of the date range,\
+ \ and can be set as far back as 18 months from the present time. If a open_date_from\
+ \ field is used, but a open_date_to field is not used, the open_date_to\
+ \ value will default to 90 days after the date specified in the open_date_from\
+ \ field, or to the present time if less than 90 days in the past.
The\
+ \ ISO-8601 format looks like this: yyyy-MM-ddThh:mm.ss.sssZ. An\
+ \ example would be 2019-08-04T19:09:02.768Z."
+ required: false
+ schema:
+ type: "string"
+ - name: "open_date_to"
+ in: "query"
+ description: "The open_date_from and/or open_date_to date filters\
+ \ are used if the seller wishes to retrieve payment disputes opened within\
+ \ a specific date range. A maximum date range that may be set with the open_date_from\
+ \ and/or open_date_to filters is 90 days. These date filters use\
+ \ the ISO-8601 24-hour date and time format, and the time zone used is Universal\
+ \ Coordinated Time (UTC), also known as Greenwich Mean Time (GMT), or Zulu.
The\
+ \ open_date_to field sets the ending date of the date range, and\
+ \ can be set up to 90 days from the date set in the open_date_from\
+ \ field.
The ISO-8601 format looks like this: yyyy-MM-ddThh:mm.ss.sssZ.\
+ \ An example would be 2019-08-04T19:09:02.768Z."
+ required: false
+ schema:
+ type: "string"
+ - name: "payment_dispute_status"
+ in: "query"
+ description: "This filter is used if the seller wishes to only retrieve payment\
+ \ disputes in one or more specific states. To filter by more than one status\
+ \ value, a separate payment_dispute_status filter must be used for\
+ \ each value, as shown below:
https://apiz.ebay.com/sell/fulfillment/v1/payment_dispute_summary?payment_dispute_status=OPEN&payment_dispute_status=ACTION_NEEDED\
+ \
If no payment_dispute_status filter is used, payment disputes\
+ \ in all states are returned in the response.
See DisputeStatusEnum type for supported values."
+ required: false
+ schema:
+ type: "string"
+ - name: "limit"
+ in: "query"
+ description: "The value passed in this query parameter sets the maximum number\
+ \ of payment disputes to return per page of data. The value passed in this\
+ \ field should be an integer from 1 to 200. If this query parameter is not\
+ \ set, up to 200 records will be returned on each page of results.
Min:\
+ \ 1
Max: 200
Default: 200"
+ required: false
+ schema:
+ type: "string"
+ - name: "offset"
+ in: "query"
+ description: "This field is used to specify the number of records to skip\
+ \ in the result set before returning the first payment dispute in the paginated\
+ \ response. A zero-based index is used, so if you set the offset\
+ \ value to 0 (default value), the first payment dispute in\
+ \ the result set appears at the top of the response.
Combine offset\
+ \ with the limit parameter to control the payment disputes returned\
+ \ in the response. For example, if you supply an offset value of\
+ \ 0 and a limit value of 10, the response\
+ \ will contain the first 10 payment disputes from the result set that matches\
+ \ the input criteria. If you supply an offset value of 10\
+ \ and a limit value of 20, the response will contain\
+ \ payment disputes 11-30 from the result set that matches the input criteria.
Min:\
+ \ 0
Default: 0"
+ required: false
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/DisputeSummaryResponse"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 33001:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Invalid input request"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 33000:
+ domain: "API_FULFILLMENT"
+ category: "APPLICATION"
+ description: "There was a problem with an eBay internal system or\
+ \ process. Contact eBay developer support for assistance."
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.payment.dispute"
+ servers:
+ - url: "https://apiz.ebay.com{basePath}"
+ description: "Production"
+ variables:
+ basePath:
+ default: "/sell/fulfillment/v1"
+ /payment_dispute/{payment_dispute_id}/contest:
+ post:
+ tags:
+ - "payment_dispute"
+ summary: "Contest Payment Dispute"
+ description: "This method is used if the seller wishes to contest a payment\
+ \ dispute initiated by the buyer. The unique identifier of the payment dispute\
+ \ is passed in as a path parameter, and unique identifiers for payment disputes\
+ \ can be retrieved with the getPaymentDisputeSummaries method.
Note: Before contesting a payment dispute,\
+ \ the seller must upload all supporting files using the addEvidence\
+ \ and updateEvidence methods. Once the seller has officially\
+ \ contested the dispute (using contestPaymentDispute), the\
+ \ addEvidence and updateEvidence methods\
+ \ can no longer be used. In the evidenceRequests array of\
+ \ the getPaymentDispute response, eBay prompts the seller\
+ \ with the type of supporting file(s) that will be needed to contest the payment\
+ \ dispute.
If a seller decides to contest a payment dispute,\
+ \ that seller should be prepared to provide supporting documents such as proof\
+ \ of delivery, proof of authentication, or other documents. The type of supporting\
+ \ documents that the seller will provide will depend on why the buyer filed\
+ \ the payment dispute.
The revision field in the request\
+ \ payload is required, and the returnAddress field should\
+ \ be supplied if the seller is expecting the buyer to return the item. See\
+ \ the Request Payload section for more information on these fields."
+ operationId: "contestPaymentDispute"
+ parameters:
+ - name: "payment_dispute_id"
+ in: "path"
+ description: "This parameter is used to specify the unique identifier of the\
+ \ payment dispute being contested.
Use the getPaymentDisputeSummaries method to retrieve payment\
+ \ dispute IDs."
+ required: true
+ schema:
+ type: "string"
+ - name: "Content-Type"
+ in: "header"
+ description: "This header indicates the format of the request body provided\
+ \ by the client. Its value should be set to application/json.
\
+ \ For more information, refer to HTTP request headers."
+ required: true
+ schema:
+ type: "string"
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ContestPaymentDisputeRequest"
+ required: false
+ responses:
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 33100:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Invalid input request"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 33000:
+ domain: "API_FULFILLMENT"
+ category: "APPLICATION"
+ description: "There was a problem with an eBay internal system or\
+ \ process. Contact eBay developer support for assistance."
+ "204":
+ description: "Success"
+ "404":
+ description: "Not Found"
+ "409":
+ description: "Conflict"
+ x-response-codes:
+ errors:
+ 33011:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "There was a change in payment dispute attributes. Please\
+ \ use get payment dispute api to get latest details."
+ 33101:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Invalid payment dispute state"
+ 33102:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "No evidence available for contest"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.payment.dispute"
+ servers:
+ - url: "https://apiz.ebay.com{basePath}"
+ description: "Production"
+ variables:
+ basePath:
+ default: "/sell/fulfillment/v1"
+ /payment_dispute/{payment_dispute_id}/accept:
+ post:
+ tags:
+ - "payment_dispute"
+ summary: "Accept Payment Dispute"
+ description: "This method is used if the seller wishes to accept a payment dispute.\
+ \ The unique identifier of the payment dispute is passed in as a path parameter,\
+ \ and unique identifiers for payment disputes can be retrieved with the getPaymentDisputeSummaries\
+ \ method.
The revision field in the request payload\
+ \ is required, and the returnAddress field should be supplied\
+ \ if the seller is expecting the buyer to return the item. See the Request\
+ \ Payload section for more information on theste fields."
+ operationId: "acceptPaymentDispute"
+ parameters:
+ - name: "payment_dispute_id"
+ in: "path"
+ description: "This parameter is used to specify the unique identifier of the\
+ \ payment dispute being accepted.
Use the getPaymentDisputeSummaries method to retrieve payment\
+ \ dispute IDs."
+ required: true
+ schema:
+ type: "string"
+ - name: "Content-Type"
+ in: "header"
+ description: "This header indicates the format of the request body provided\
+ \ by the client. Its value should be set to application/json.
\
+ \ For more information, refer to HTTP request headers."
+ required: true
+ schema:
+ type: "string"
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/AcceptPaymentDisputeRequest"
+ required: false
+ responses:
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 33100:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Invalid input request"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 33000:
+ domain: "API_FULFILLMENT"
+ category: "APPLICATION"
+ description: "There was a problem with an eBay internal system or\
+ \ process. Contact eBay developer support for assistance."
+ "204":
+ description: "Success"
+ "404":
+ description: "Not Found"
+ "409":
+ description: "Conflict"
+ x-response-codes:
+ errors:
+ 33011:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "There was a change in payment dispute attributes. Please\
+ \ use get payment dispute api to get latest details."
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.payment.dispute"
+ servers:
+ - url: "https://apiz.ebay.com{basePath}"
+ description: "Production"
+ variables:
+ basePath:
+ default: "/sell/fulfillment/v1"
+ /payment_dispute/{payment_dispute_id}/upload_evidence_file:
+ post:
+ tags:
+ - "payment_dispute"
+ summary: "Upload an Evidence File"
+ description: "This method is used to upload an evidence file for a contested\
+ \ payment dispute. The unique identifier of the payment dispute is passed\
+ \ in as a path parameter, and unique identifiers for payment disputes can\
+ \ be retrieved with the getPaymentDisputeSummaries method.
Note: The uploadEvidenceFile\
+ \ only uploads an encrypted, binary image file (using multipart/form-data\
+ \ HTTP request header), and does not have a JSON-based request payload.
Use\
+ \ 'file' as the name of the key that you use to upload the image file. The\
+ \ upload will not be successful if a different key name is used.
The\
+ \ three image formats supported at this time are .JPEG, .JPG,\
+ \ and .PNG.
After the file is successfully\
+ \ uploaded, the seller will need to grab the fileId value\
+ \ in the response payload to add this file to a new evidence set using the\
+ \ addEvidence method, or to add this file to an existing\
+ \ evidence set using the updateEvidence method."
+ operationId: "uploadEvidenceFile"
+ parameters:
+ - name: "payment_dispute_id"
+ in: "path"
+ description: "This parameter is used to specify the unique identifier of the\
+ \ contested payment dispute for which the user intends to upload an evidence\
+ \ file.
Use the getPaymentDisputeSummaries method to retrieve payment\
+ \ dispute IDs."
+ required: true
+ schema:
+ type: "string"
+ - name: "Content-Type"
+ in: "header"
+ description: "This header indicates the format of the request body provided\
+ \ by the client. Its value should be set to multipart/form-data.\
+ \
For more information, refer to HTTP request headers."
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/FileEvidence"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 33106:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "The file name should not be empty and should not exceed\
+ \ 255 characters."
+ 33107:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Only one file can be uploaded per request."
+ 33005:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "File type is invalid."
+ 33006:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "File size should be 1.5 MB or less."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 33000:
+ domain: "API_FULFILLMENT"
+ category: "APPLICATION"
+ description: "There was a problem with an eBay internal system or\
+ \ process. Contact eBay developer support for assistance."
+ "404":
+ description: "Not Found"
+ x-response-codes:
+ errors:
+ 33001:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Invalid Payment Dispute Id"
+ "409":
+ description: "Conflict"
+ x-response-codes:
+ errors:
+ 33105:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "You reached the maximum number of files you can upload."
+ 33004:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Upload file for evidence is not permitted for given\
+ \ payment dispute state."
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.payment.dispute"
+ servers:
+ - url: "https://apiz.ebay.com{basePath}"
+ description: "Production"
+ variables:
+ basePath:
+ default: "/sell/fulfillment/v1"
+ /payment_dispute/{payment_dispute_id}/add_evidence:
+ post:
+ tags:
+ - "payment_dispute"
+ summary: "Add an Evidence File"
+ description: "This method is used by the seller to add one or more evidence\
+ \ files to address a payment dispute initiated by the buyer. The unique identifier\
+ \ of the payment dispute is passed in as a path parameter, and unique identifiers\
+ \ for payment disputes can be retrieved with the getPaymentDisputeSummaries\
+ \ method.
Note: All evidence\
+ \ files should be uploaded using addEvidence and updateEvidence\
+ \ before the seller decides to contest the payment dispute. Once the seller\
+ \ has officially contested the dispute (using contestPaymentDispute\
+ \ or through My eBay), the addEvidence and updateEvidence\
+ \ methods can no longer be used. In the evidenceRequests\
+ \ array of the getPaymentDispute response, eBay prompts the\
+ \ seller with the type of evidence file(s) that will be needed to contest\
+ \ the payment dispute.
The file(s) to add are identified through\
+ \ the files array in the request payload. Adding one or\
+ \ more new evidence files for a payment dispute triggers the creation of an\
+ \ evidence file, and the unique identifier for the new evidence file is automatically\
+ \ generated and returned in the evidenceId field of the addEvidence\
+ \ response payload upon a successful call.
The type of evidence being\
+ \ added should be specified in the evidenceType field. All\
+ \ files being added (if more than one) should correspond to this evidence\
+ \ type.
Upon a successful call, an evidenceId value\
+ \ is returned in the response. This indicates that a new evidence set has\
+ \ been created for the payment dispute, and this evidence set includes the\
+ \ evidence file(s) that were passed in to the fileId array.\
+ \ The evidenceId value will be needed if the seller wishes\
+ \ to add to the evidence set by using the updateEvidence\
+ \ method, or if they want to retrieve a specific evidence file within the\
+ \ evidence set by using the fetchEvidenceContent method."
+ operationId: "addEvidence"
+ parameters:
+ - name: "payment_dispute_id"
+ in: "path"
+ description: "This parameter is used to specify the unique identifier of the\
+ \ contested payment dispute for which the seller wishes to add evidence\
+ \ files.
Use the getPaymentDisputeSummaries method to retrieve payment\
+ \ dispute IDs."
+ required: true
+ schema:
+ type: "string"
+ - name: "Content-Type"
+ in: "header"
+ description: "This header indicates the format of the request body provided\
+ \ by the client. Its value should be set to application/json.
\
+ \ For more information, refer to HTTP request headers."
+ required: true
+ schema:
+ type: "string"
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/AddEvidencePaymentDisputeRequest"
+ required: false
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/AddEvidencePaymentDisputeResponse"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 33008:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Invalid evidence type."
+ 33104:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "The combined size of attached files should be 1.5MB\
+ \ or less."
+ 33009:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "User did not echo back the evidence metadata correctly."
+ 33003:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Invalid Evidence File Id"
+ 33100:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Invalid input request"
+ 33007:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Invalid line items."
+ 33103:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Exceed allowed file count"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 33000:
+ domain: "API_FULFILLMENT"
+ category: "APPLICATION"
+ description: "There was a problem with an eBay internal system or\
+ \ process. Contact eBay developer support for assistance."
+ "404":
+ description: "Not Found"
+ x-response-codes:
+ errors:
+ 33001:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Invalid Payment Dispute Id"
+ "409":
+ description: "Conflict"
+ x-response-codes:
+ errors:
+ 33004:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Upload file for evidence is not permitted for given\
+ \ payment dispute state."
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.payment.dispute"
+ servers:
+ - url: "https://apiz.ebay.com{basePath}"
+ description: "Production"
+ variables:
+ basePath:
+ default: "/sell/fulfillment/v1"
+ /payment_dispute/{payment_dispute_id}/update_evidence:
+ post:
+ tags:
+ - "payment_dispute"
+ summary: "Update evidence"
+ description: "This method is used by the seller to update an existing evidence\
+ \ set for a payment dispute with one or more evidence files. The unique identifier\
+ \ of the payment dispute is passed in as a path parameter, and unique identifiers\
+ \ for payment disputes can be retrieved with the getPaymentDisputeSummaries\
+ \ method.
Note: All evidence\
+ \ files should be uploaded using addEvidence and updateEvidence\
+ \ before the seller decides to contest the payment dispute. Once the seller\
+ \ has officially contested the dispute (using contestPaymentDispute\
+ \ or through My eBay), the addEvidence and updateEvidence\
+ \ methods can no longer be used. In the evidenceRequests\
+ \ array of the getPaymentDispute response, eBay prompts the\
+ \ seller with the type of evidence file(s) that will be needed to contest\
+ \ the payment dispute.
The unique identifier of the evidence\
+ \ set to update is specified through the evidenceId field,\
+ \ and the file(s) to add are identified through the files\
+ \ array in the request payload. The unique identifier for an evidence file\
+ \ is automatically generated and returned in the fileId field\
+ \ of the uploadEvidence response payload upon a successful\
+ \ call. Sellers must make sure to capture the fileId value\
+ \ for each evidence file that is uploaded with the uploadEvidence\
+ \ method.
The type of evidence being added should be specified in the\
+ \ evidenceType field. All files being added (if more than\
+ \ one) should correspond to this evidence type.
Upon a successful call,\
+ \ an http status code of 204 Success is returned. There is no\
+ \ response payload unless an error occurs. To verify that a new file is a\
+ \ part of the evidence set, the seller can use the fetchEvidenceContent\
+ \ method, passing in the proper evidenceId and fileId\
+ \ values."
+ operationId: "updateEvidence"
+ parameters:
+ - name: "payment_dispute_id"
+ in: "path"
+ description: "This parameter is used to specify the unique identifier of the\
+ \ contested payment dispute for which the user plans to update the evidence\
+ \ set.
Use the getPaymentDisputeSummaries method to retrieve payment\
+ \ dispute IDs."
+ required: true
+ schema:
+ type: "string"
+ - name: "Content-Type"
+ in: "header"
+ description: "This header indicates the format of the request body provided\
+ \ by the client. Its value should be set to application/json.
\
+ \ For more information, refer to HTTP request headers."
+ required: true
+ schema:
+ type: "string"
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/UpdateEvidencePaymentDisputeRequest"
+ required: false
+ responses:
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 33008:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Invalid evidence type."
+ 33104:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "The combined size of attached files should be 1.5MB\
+ \ or less."
+ 33009:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "User did not echo back the evidence metadata correctly."
+ 33010:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Evidence Id is invalid"
+ 33003:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Invalid Evidence File Id"
+ 33100:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Invalid input request"
+ 33007:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Invalid line items."
+ 33103:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Exceed allowed file count"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 33000:
+ domain: "API_FULFILLMENT"
+ category: "APPLICATION"
+ description: "There was a problem with an eBay internal system or\
+ \ process. Contact eBay developer support for assistance."
+ "204":
+ description: "Success"
+ "404":
+ description: "Not Found"
+ x-response-codes:
+ errors:
+ 33001:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Invalid Payment Dispute Id"
+ "409":
+ description: "Conflict"
+ x-response-codes:
+ errors:
+ 33004:
+ domain: "API_FULFILLMENT"
+ category: "REQUEST"
+ description: "Upload file for evidence is not permitted for given\
+ \ payment dispute state."
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.payment.dispute"
+ servers:
+ - url: "https://apiz.ebay.com{basePath}"
+ description: "Production"
+ variables:
+ basePath:
+ default: "/sell/fulfillment/v1"
+components:
+ schemas:
+ AcceptPaymentDisputeRequest:
+ type: "object"
+ properties:
+ returnAddress:
+ description: "This container is used if the seller wishes to provide a return\
+ \ address to the buyer. This container should be used if the seller is\
+ \ requesting that the buyer return the item."
+ $ref: "#/components/schemas/ReturnAddress"
+ revision:
+ type: "integer"
+ description: "This integer value indicates the revision number of the payment\
+ \ dispute. This field is required. The current revision\
+ \ number for a payment dispute can be retrieved with the getPaymentDispute\
+ \ method. Each time an action is taken against a payment dispute, this\
+ \ integer value increases by 1."
+ format: "int32"
+ description: "This type is used by base request of the acceptPaymentDispute\
+ \ method."
+ AddEvidencePaymentDisputeRequest:
+ type: "object"
+ properties:
+ evidenceType:
+ type: "string"
+ description: "This field is used to indicate the type of evidence being\
+ \ provided through one or more evidence files. All evidence files (if\
+ \ more than one) should be associated with the evidence type passed in\
+ \ this field.
See the EvidenceTypeEnum type for the supported evidence\
+ \ types. For implementation help, refer to eBay\
+ \ API documentation"
+ files:
+ type: "array"
+ description: "This array is used to specify one or more evidence files that\
+ \ will become part of a new evidence set associated with a payment dispute.\
+ \ At least one evidence file must be specified in the files\
+ \ array."
+ items:
+ $ref: "#/components/schemas/FileEvidence"
+ lineItems:
+ type: "array"
+ description: "This array identifies the order line item(s) for which the\
+ \ evidence file(s) will be applicable.
These values are returned\
+ \ under the evidenceRequests.lineItems array in the getPaymentDispute response."
+ items:
+ $ref: "#/components/schemas/OrderLineItems"
+ description: "This type is used by the request payload of the addEvidence\
+ \ method. The addEvidence method is used to create a new\
+ \ evidence set against a payment dispute with one or more evidence files."
+ AddEvidencePaymentDisputeResponse:
+ type: "object"
+ properties:
+ evidenceId:
+ type: "string"
+ description: "The value returned in this field is the unique identifier\
+ \ of the newly-created evidence set. Upon a successful call, this value\
+ \ is automatically genererated. This new evidence set for the payment\
+ \ dispute includes the evidence file(s) that were passed in to the fileId\
+ \ array in the request payload. The evidenceId value\
+ \ will be needed if the seller wishes to add to the evidence set by using\
+ \ the updateEvidence method, or if they want to retrieve\
+ \ a specific evidence file within the evidence set by using the fetchEvidenceContent\
+ \ method."
+ description: "This type is used by the response payload of the addEvidence\
+ \ method. Its only field is an unique identifier of an evidence set."
+ Address:
+ type: "object"
+ properties:
+ addressLine1:
+ type: "string"
+ description: "The first line of the street address.
Note: addressLine1 will not be returned\
+ \ for any order that is more than 90 days old."
+ addressLine2:
+ type: "string"
+ description: "The second line of the street address. This field can be used\
+ \ for additional address information, such as a suite or apartment number.\
+ \ This field will be returned if defined for the shipping address.
Note: addressLine2 will\
+ \ not be returned for any order that is more than 90 days old."
+ city:
+ type: "string"
+ description: "The city of the shipping destination."
+ countryCode:
+ type: "string"
+ description: "The country of the shipping destination, represented as a\
+ \ two-letter ISO 3166-1 alpha-2 country code. For example, US\
+ \ represents the United States, and DE represents Germany.\
+ \ For implementation help, refer to eBay\
+ \ API documentation"
+ county:
+ type: "string"
+ description: "The county of the shipping destination. Counties typically,\
+ \ but not always, contain multiple cities or towns. This field is returned\
+ \ if known/available."
+ postalCode:
+ type: "string"
+ description: "The postal code of the shipping destination. Usually referred\
+ \ to as Zip codes in the US. Most countries have postal codes, but not\
+ \ all. The postal code will be returned if applicable."
+ stateOrProvince:
+ type: "string"
+ description: "The state or province of the shipping destination. Most countries\
+ \ have states or provinces, but not all. The state or province will be\
+ \ returned if applicable."
+ description: "This type contains the details of a geographical address."
+ Amount:
+ type: "object"
+ properties:
+ convertedFromCurrency:
+ type: "string"
+ description: "A three-letter ISO 4217 code that indicates the currency of\
+ \ the amount in the convertedFromValue field. This value is required\
+ \ or returned only if currency conversion/localization is required, and\
+ \ represents the pre-conversion currency. For implementation help, refer\
+ \ to eBay\
+ \ API documentation"
+ convertedFromValue:
+ type: "string"
+ description: "The monetary amount before any conversion is performed, in\
+ \ the currency specified by the convertedFromCurrency field. This\
+ \ value is required or returned only if currency conversion/localization\
+ \ is required. The value field contains the converted amount of\
+ \ this value, in the currency specified by the currency field."
+ currency:
+ type: "string"
+ description: "A three-letter ISO 4217 code that indicates the currency of\
+ \ the amount in the value field. If currency conversion/localization\
+ \ is required, this is the post-conversion currency of the amount in the\
+ \ value field.
Default: The default currency of the\
+ \ eBay marketplace that hosts the listing. For implementation help, refer\
+ \ to eBay\
+ \ API documentation"
+ value:
+ type: "string"
+ description: "The monetary amount, in the currency specified by the currency\
+ \ field. If currency conversion/localization is required, this value is\
+ \ the converted amount, and the convertedFromValue field contains\
+ \ the amount in the original currency.
Required in the\
+ \ amount type."
+ description: "This type defines the monetary value of an amount. It can provide\
+ \ the amount in both the currency used on the eBay site where an item is being\
+ \ offered and the conversion of that value into another currency, if applicable."
+ AppliedPromotion:
+ type: "object"
+ properties:
+ description:
+ type: "string"
+ description: "A description of the applied sales promotion."
+ discountAmount:
+ description: "The monetary amount of the sales promotion."
+ $ref: "#/components/schemas/Amount"
+ promotionId:
+ type: "string"
+ description: "An eBay-generated unique identifier of the sales promotion.
\
+ \ Multiple types of sales promotions are available to eBay Store owners,\
+ \ including order size/volume discounts, shipping discounts, special coupons,\
+ \ and price markdowns. Sales promotions can be managed through the Marketing\
+ \ tab of Seller Hub in My eBay, or by using the Trading API's SetPromotionalSale\
+ \ call or the Marketing API's createItemPromotion method."
+ description: "This type contains information about a sales promotion that is\
+ \ applied to a line item."
+ AppointmentDetails:
+ type: "object"
+ properties:
+ appointmentEndTime:
+ type: "string"
+ description: "The date and time the appointment ends, formatted as an ISO 8601 string, which is\
+ \ based on the 24-hour Coordinated Universal Time (UTC) clock. Required\
+ \ for tire installation.
Format: [YYYY]-[MM]-[DD]T[hh]:[mm]:[ss].[sss]Z\
+ \
Example: 2022-10-28T00:00:00.000Z"
+ appointmentStartTime:
+ type: "string"
+ description: "The date and time the appointment begins, formatted as an\
+ \ ISO 8601 string,\
+ \ which is based on the 24-hour Coordinated Universal Time (UTC) clock.\
+ \
Format: [YYYY]-[MM]-[DD]T[hh]:[mm]:[ss].[sss]Z\
+ \
Example: 2022-10-28T00:10:00.000Z"
+ appointmentStatus:
+ type: "string"
+ description: "The status of the appointment. For implementation help, refer\
+ \ to eBay\
+ \ API documentation"
+ appointmentType:
+ type: "string"
+ description: "The type of appointment. MACRO appointments only have a start\
+ \ time (not bounded with end time). TIME_SLOT appointments have a period\
+ \ (both start time and end time). Required for tire installation. For\
+ \ implementation help, refer to eBay\
+ \ API documentation"
+ appointmentWindow:
+ type: "string"
+ description: "Appointment window for MACRO appointments. For implementation\
+ \ help, refer to eBay\
+ \ API documentation"
+ serviceProviderAppointmentDate:
+ type: "string"
+ description: "Service provider date of the appointment (no time stamp).\
+ \ Returned only for MACRO appointment types."
+ description: "This type contains information used by the installation provider\
+ \ concerning appointment details selected by the buyer"
+ Buyer:
+ type: "object"
+ properties:
+ buyerRegistrationAddress:
+ description: "Buyer's contact information that includes the buyer's name,\
+ \ email, phone number, and address."
+ $ref: "#/components/schemas/ExtendedContact"
+ taxAddress:
+ description: "This container consists of address information that can be\
+ \ used by sellers for tax purpose.
Note:\
+ \ When using the eBay vault program, if an item is shipped to a vault,\
+ \ the tax address will be the vault address."
+ $ref: "#/components/schemas/TaxAddress"
+ taxIdentifier:
+ description: "This container consists of taxpayer identification information\
+ \ for buyers from Italy, Spain, or Guatemala. It is currently only returned\
+ \ for orders occurring on the eBay Italy or eBay Spain marketplaces.
Note: Currently, the taxIdentifier\
+ \ container is only returned in getOrder and not in getOrders.\
+ \ So, if a seller wanted to view a buyer's tax information for a particular\
+ \ order returned in getOrders, that seller would need\
+ \ to use the orderId value for that particular order,\
+ \ and then run a getOrder call against that order ID.\
+ \ "
+ $ref: "#/components/schemas/TaxIdentifier"
+ username:
+ type: "string"
+ description: "The buyer's eBay user ID."
+ description: "This type contains information about the order's buyer."
+ CancelRequest:
+ type: "object"
+ properties:
+ cancelCompletedDate:
+ type: "string"
+ description: "The date and time that the order cancellation was completed,\
+ \ if applicable. This timestamp is in ISO 8601 format, which uses the\
+ \ 24-hour Universal Coordinated Time (UTC) clock. This field is not returned\
+ \ until the cancellation request has actually been approved by the seller.
Format:\
+ \ [YYYY]-[MM]-[DD]T[hh]:[mm]:[ss].[sss]Z
Example:\
+ \ 2015-08-04T19:09:02.768Z"
+ cancelInitiator:
+ type: "string"
+ description: "This string value indicates the party who made the initial\
+ \ cancellation request. Typically, either the 'Buyer' or 'Seller'. If\
+ \ a cancellation request has been made, this field should be returned."
+ cancelReason:
+ type: "string"
+ description: "The reason why the cancelInitiator initiated the cancellation\
+ \ request. Cancellation reasons for a buyer might include 'order placed\
+ \ by mistake' or 'order won't arrive in time'. For a seller, a typical\
+ \ cancellation reason is 'out of stock'. If a cancellation request has\
+ \ been made, this field should be returned."
+ cancelRequestedDate:
+ type: "string"
+ description: "The date and time that the order cancellation was requested.\
+ \ This timestamp is in ISO 8601 format, which uses the 24-hour Universal\
+ \ Coordinated Time (UTC) clock. This field is returned for each cancellation\
+ \ request.
Format: [YYYY]-[MM]-[DD]T[hh]:[mm]:[ss].[sss]Z\
+ \
Example: 2015-08-04T19:09:02.768Z"
+ cancelRequestId:
+ type: "string"
+ description: "The unique identifier of the order cancellation request. This\
+ \ field is returned for each cancellation request."
+ cancelRequestState:
+ type: "string"
+ description: "The current stage or condition of the cancellation request.\
+ \ This field is returned for each cancellation request. For implementation\
+ \ help, refer to eBay\
+ \ API documentation"
+ description: "This type contains information about a buyer request to cancel\
+ \ an order."
+ CancelStatus:
+ type: "object"
+ properties:
+ cancelledDate:
+ type: "string"
+ description: "The date and time the order was cancelled, if applicable.\
+ \ This timestamp is in ISO 8601 format, which uses the 24-hour Universal\
+ \ Coordinated Time (UTC) clock.
Format: [YYYY]-[MM]-[DD]T[hh]:[mm]:[ss].[sss]Z\
+ \
Example: 2015-08-04T19:09:02.768Z"
+ cancelRequests:
+ type: "array"
+ description: "This array contains details of one or more buyer requests\
+ \ to cancel the order.
For the getOrders call: This array\
+ \ is returned but is always empty.
For the getOrder call: This\
+ \ array is returned fully populated with information about any cancellation\
+ \ requests."
+ items:
+ $ref: "#/components/schemas/CancelRequest"
+ cancelState:
+ type: "string"
+ description: "The state of the order with regard to cancellation. This field\
+ \ is always returned, and if there are no cancellation requests, a value\
+ \ of NONE_REQUESTED is returned. For implementation help,\
+ \ refer to eBay\
+ \ API documentation"
+ description: "This type contains information about any requests that have been\
+ \ made to cancel an order."
+ Charge:
+ type: "object"
+ properties:
+ amount:
+ description: "This container shows the amount and currency of the charge."
+ $ref: "#/components/schemas/Amount"
+ chargeType:
+ type: "string"
+ description: "This field shows the type of buyer charge
Note: Currently, the only supported\
+ \ charge type is BUYER_PROTECTION. For implementation help, refer\
+ \ to eBay\
+ \ API documentation"
+ description: "This type is used to display the charge type and the amount of\
+ \ the charge against the buyer."
+ ContestPaymentDisputeRequest:
+ type: "object"
+ properties:
+ note:
+ type: "string"
+ description: "This field shows information that the seller provides about\
+ \ the dispute, such as the basis for the dispute, any relevant evidence,\
+ \ tracking numbers, and so forth.
Max Length: 1000 characters."
+ returnAddress:
+ description: "This container is needed if the seller is requesting that\
+ \ the buyer return the item. If this container is used, all relevant fields\
+ \ must be included, including fullName and primaryPhone.
Note: If the Dispute Reason is SIGNIFICANTLY_NOT_AS_DESCRIBED,\
+ \ returnAddress is required."
+ $ref: "#/components/schemas/ReturnAddress"
+ revision:
+ type: "integer"
+ description: "This integer value indicates the revision number of the payment\
+ \ dispute. This field is required. The current revision\
+ \ number for a payment dispute can be retrieved with the getPaymentDispute\
+ \ method. Each time an action is taken against a payment dispute, this\
+ \ integer value increases by 1."
+ format: "int32"
+ description: "This type is used by the request payload of the contestPaymentDispute\
+ \ method."
+ DeliveryCost:
+ type: "object"
+ properties:
+ discountAmount:
+ description: "The amount of any shipping discount that has been applied\
+ \ to the line item. This container is returned only if a shipping discount\
+ \ applies to the line item."
+ $ref: "#/components/schemas/Amount"
+ handlingCost:
+ description: "The amount of any handing cost that has been applied to the\
+ \ line item. This container is returned only if a handling cost applies\
+ \ to the line item."
+ $ref: "#/components/schemas/Amount"
+ importCharges:
+ description: "The amount of any import charges applied to international\
+ \ shipping of the line item. This container is only returned if import\
+ \ charges apply to the line item."
+ $ref: "#/components/schemas/Amount"
+ shippingCost:
+ description: "The total cost of shipping all units of the line item. This\
+ \ container is always returned even when the shipping cost is free, in\
+ \ which case the value field will show 0.0 (dollars)."
+ $ref: "#/components/schemas/Amount"
+ shippingIntermediationFee:
+ description: "This field shows the fee due to eBay's international shipping\
+ \ provider for a line item that is being shipped through the Global Shipping\
+ \ Program.
This container is only returned for line items being\
+ \ shipped internationally through the Global Shipping Program, which is\
+ \ currently only supported in the US and UK marketplaces.
Note: The value returned for this\
+ \ field will always be 0.0 for line items sold in the UK\
+ \ marketplace."
+ $ref: "#/components/schemas/Amount"
+ description: "This type contains a breakdown of all costs associated with the\
+ \ fulfillment of a line item."
+ DisputeAmount:
+ type: "object"
+ properties:
+ convertedFromCurrency:
+ type: "string"
+ description: "The three-letter ISO 4217 code representing the currency of\
+ \ the amount in the convertedFromValue field. This value is the\
+ \ pre-conversion currency.
This field is only returned if/when\
+ \ currency conversion was applied by eBay. For implementation help, refer\
+ \ to eBay\
+ \ API documentation"
+ convertedFromValue:
+ type: "string"
+ description: "The monetary amount before any conversion is performed, in\
+ \ the currency specified by the convertedFromCurrency field. This\
+ \ value is the pre-conversion amount. The value field contains\
+ \ the converted amount of this value, in the currency specified by the\
+ \ currency field.
This field is only returned if/when currency\
+ \ conversion was applied by eBay."
+ currency:
+ type: "string"
+ description: "A three-letter ISO 4217 code that indicates the currency of\
+ \ the amount in the value field. This field is always returned\
+ \ with any container using Amount type.
Default:\
+ \ The currency of the authenticated user's country. For implementation\
+ \ help, refer to eBay\
+ \ API documentation"
+ exchangeRate:
+ type: "string"
+ description: "The exchange rate used for the monetary conversion. This field\
+ \ shows the exchange rate used to convert the dollar value in the value\
+ \ field from the dollar value in the convertedFromValue field.
This\
+ \ field is only returned if/when currency conversion was applied by eBay."
+ value:
+ type: "string"
+ description: "The monetary amount, in the currency specified by the currency\
+ \ field. This field is always returned with any container using Amount\
+ \ type."
+ description: "This type defines the monetary value of an amount. It can provide\
+ \ the amount in both the currency used on the eBay site where an item is being\
+ \ offered and the conversion of that value into another currency, if applicable."
+ DisputeEvidence:
+ type: "object"
+ properties:
+ evidenceId:
+ type: "string"
+ description: "Unique identifier of the evidential file set. Potentially,\
+ \ each evidential file set can have more than one file, that is why there\
+ \ is this file set identifier, and then an identifier for each file within\
+ \ this file set."
+ evidenceType:
+ type: "string"
+ description: "This enumeration value shows the type of evidential file provided.\
+ \ For implementation help, refer to eBay\
+ \ API documentation"
+ files:
+ type: "array"
+ description: "This array shows the name, ID, file type, and upload date\
+ \ for each provided file."
+ items:
+ $ref: "#/components/schemas/FileInfo"
+ lineItems:
+ type: "array"
+ description: "This array shows one or more order line items associated with\
+ \ the evidential document that has been provided."
+ items:
+ $ref: "#/components/schemas/OrderLineItems"
+ providedDate:
+ type: "string"
+ description: "The timestamp in this field shows the date/time when the seller\
+ \ provided a requested evidential document to eBay.
The timestamps\
+ \ returned here use the ISO-8601 24-hour date and time format, and the\
+ \ time zone used is Universal Coordinated Time (UTC), also known as Greenwich\
+ \ Mean Time (GMT), or Zulu. The ISO-8601 format looks like this: yyyy-MM-ddThh:mm.ss.sssZ.\
+ \ An example would be 2019-08-04T19:09:02.768Z."
+ requestDate:
+ type: "string"
+ description: "The timestamp in this field shows the date/time when eBay\
+ \ requested the evidential document from the seller in response to a payment\
+ \ dispute.
The timestamps returned here use the ISO-8601 24-hour\
+ \ date and time format, and the time zone used is Universal Coordinated\
+ \ Time (UTC), also known as Greenwich Mean Time (GMT), or Zulu. The ISO-8601\
+ \ format looks like this: yyyy-MM-ddThh:mm.ss.sssZ. An example\
+ \ would be 2019-08-04T19:09:02.768Z."
+ respondByDate:
+ type: "string"
+ description: "The timestamp in this field shows the date/time when the seller\
+ \ was expected to provide a requested evidential document to eBay.
The\
+ \ timestamps returned here use the ISO-8601 24-hour date and time format,\
+ \ and the time zone used is Universal Coordinated Time (UTC), also known\
+ \ as Greenwich Mean Time (GMT), or Zulu. The ISO-8601 format looks like\
+ \ this: yyyy-MM-ddThh:mm.ss.sssZ. An example would be 2019-08-04T19:09:02.768Z."
+ shipmentTracking:
+ type: "array"
+ description: "This array shows the shipping carrier and shipment tracking\
+ \ number associated with each shipment package of the order. This array\
+ \ is returned under the evidence container if the seller\
+ \ has provided shipment tracking information as evidence to support PROOF_OF_DELIVERY\
+ \ for an INR-related payment dispute."
+ items:
+ $ref: "#/components/schemas/TrackingInfo"
+ description: "This type is used by the evidence array that\
+ \ is returned in the getPaymentDispute response if one or\
+ \ more evidential documents are associated with the payment dispute. "
+ DisputeSummaryResponse:
+ type: "object"
+ properties:
+ href:
+ type: "string"
+ description: "The URI of the getPaymentDisputeSummaries\
+ \ call request that produced the current page of the result set."
+ limit:
+ type: "integer"
+ description: "This value shows the maximum number of payment disputes that\
+ \ will appear on one page of the result set. The limit\
+ \ value can be passed in as a query parameter in the request, or if it\
+ \ is not used, it defaults to 200. If the value in the total\
+ \ field exceeds this limit value, there are multiple\
+ \ pages in the current result set.
Min: 1; Max: 200;\
+ \ Default: 200"
+ format: "int32"
+ next:
+ type: "string"
+ description: "The getPaymentDisputeSummaries call URI to\
+ \ use if you wish to view the next page of the result set. For example,\
+ \ the following URI returns records 11 thru 20 from the collection of\
+ \ payment disputes:
path/payment_dispute_summary?limit=10&offset=10
This\
+ \ field is only returned if there is a next page of results to view based\
+ \ on the current input criteria."
+ offset:
+ type: "integer"
+ description: "This integer value indicates the number of payment disputes\
+ \ skipped before listing the first payment dispute from the result set.\
+ \ The offset value can be passed in as a query parameter\
+ \ in the request, or if it is not used, it defaults to 0\
+ \ and the first payment dispute of the result set is shown at the top\
+ \ of the response."
+ format: "int32"
+ paymentDisputeSummaries:
+ type: "array"
+ description: "Each payment dispute that matches the input criteria is returned\
+ \ under this array. If no payment disputes are found, an empty array is\
+ \ returned."
+ items:
+ $ref: "#/components/schemas/PaymentDisputeSummary"
+ prev:
+ type: "string"
+ description: "The getPaymentDisputeSummaries call URI to\
+ \ use if you wish to view the previous page of the result set. For example,\
+ \ the following URI returns records 1 thru 10 from the collection of payment\
+ \ disputes:
path/payment_dispute_summary?limit=10&offset=0
This\
+ \ field is only returned if there is a previous page of results to view\
+ \ based on the current input criteria."
+ total:
+ type: "integer"
+ description: "This integer value is the total number of payment disputes\
+ \ that matched the input criteria. If the total number of entries exceeds\
+ \ the value that was set for limit in the request payload,\
+ \ you will have to make multiple API calls to see all pages of the results\
+ \ set. This field is returned even if it is 0."
+ format: "int32"
+ description: "This type defines the base response payload of the getPaymentDisputeSummaries\
+ \ method. Each payment dispute that matches the input criteria is returned\
+ \ under the paymentDisputeSummaries array."
+ EbayCollectAndRemitTax:
+ type: "object"
+ properties:
+ amount:
+ description: "The monetary amount of the 'Collect and Remit' tax. This currently\
+ \ includes:
- US state-mandated sales tax
- Federal and\
+ \ Provincial Sales Tax in Canada
- 'Goods and Services' tax in Canada,\
+ \ Australia, New Zealand, and Jersey
- VAT collected for the UK,\
+ \ EU countries, Kazakhstan, and Belarus
- Sales & Service Tax (SST)\
+ \ in Malaysia
Note:\
+ \ If the corresponding taxType is STATE_SALES_TAX,\
+ \ PROVINCE_SALES_TAX, GST, VAT,\
+ \ or SST and the lineItems.taxes container\
+ \ also appears for this line item with the same tax amount, the order\
+ \ is subject to 'eBay Collect and Remit' tax. For orders that are subject\
+ \ to 'eBay Collect and Remit' tax, the tax amount in this field will be\
+ \ included in the lineItems.total, paymentSummary.payments.amount,\
+ \ paymentSummary.totalDueSeller, and pricingSummary.total\
+ \ fields."
+ $ref: "#/components/schemas/Amount"
+ ebayReference:
+ description: "This container field describes the line-item level VAT tax\
+ \ details.
"
+ $ref: "#/components/schemas/EbayTaxReference"
+ taxType:
+ type: "string"
+ description: "The type of tax and fees that eBay will collect and remit\
+ \ to the taxing or fee authority. See the TaxTypeEnum\
+ \ type definition for more information about each tax or fee type. For\
+ \ implementation help, refer to eBay\
+ \ API documentation"
+ collectionMethod:
+ type: "string"
+ description: "This field indicates the collection method used to collect\
+ \ the 'Collect and Remit' tax for the order. This field is always returned\
+ \ for orders subject to 'Collect and Remit' tax, and its value is always\
+ \ NET.
Note:\
+ \ Although the collectionMethod field is returned for\
+ \ all orders subject to 'Collect and Remit' tax, the collectionMethod\
+ \ field and the CollectionMethodEnum type are not currently\
+ \ of any practical use, although this field may have use in the future.\
+ \ If and when the logic of this field is changed, this note will be updated\
+ \ and a note will also be added to the Release Notes. For implementation\
+ \ help, refer to eBay\
+ \ API documentation"
+ description: "This type contains information about the type and amount of tax\
+ \ that eBay will collect and remit to the state, province, country, or other\
+ \ taxing authority in the buyer's location, as required by that taxing authority.
'Collect\
+ \ and Remit' tax includes:- US state-mandated sales tax
- Federal\
+ \ and Provincial Sales Tax in Canada
- 'Goods and Services' tax in Canada,\
+ \ Australia, and New Zealand
- VAT collected for the UK and EU countries
"
+ EbayCollectedCharges:
+ type: "object"
+ properties:
+ ebayShipping:
+ description: "This container consists of costs related to eBay Shipping\
+ \ collected by eBay from the buyer of this order."
+ $ref: "#/components/schemas/Amount"
+ charges:
+ type: "array"
+ description: "This array shows any charges that eBay collects from the buyer.
Note: Currently, the only supported\
+ \ charge type is BUYER_PROTECTION."
+ items:
+ $ref: "#/components/schemas/Charge"
+ description: "This type contains the breakdown of costs that are collected by\
+ \ eBay from the buyer."
+ EbayFulfillmentProgram:
+ type: "object"
+ properties:
+ fulfilledBy:
+ type: "string"
+ description: "The value returned in this field indicates the party that\
+ \ is handling fulfillment of the order line item.
Valid value:\
+ \ EBAY"
+ description: "This type is used to provide details about an order line item\
+ \ being fulfilled by eBay or an eBay fulfillment partner."
+ EbayInternationalShipping:
+ type: "object"
+ properties:
+ returnsManagedBy:
+ type: "string"
+ description: "The value returned in this field indicates the party that\
+ \ is responsible for managing returns of the order line item.
Valid\
+ \ value: EBAY"
+ description: "This type is used to provide details about an order line item\
+ \ being managed through eBay International Shipping."
+ EbayShipping:
+ type: "object"
+ properties:
+ shippingLabelProvidedBy:
+ type: "string"
+ description: "This field contains the shipping label provider. If EBAY,\
+ \ this order is managed by eBay shipping and a free shipping label by\
+ \ eBay is downloadable by the seller via the eBay website."
+ description: "This type contains information about the management of the shipping\
+ \ for the order."
+ EbayTaxReference:
+ type: "object"
+ properties:
+ name:
+ type: "string"
+ description: "This field value is returned to indicate the VAT tax type,\
+ \ which will vary by country/region. This string value will be one of\
+ \ the following:ABN: if this string is returned,\
+ \ the ID in the value field is an Australia tax IDDDG:\
+ \ if this string is returned, it indicates that tax has been collected\
+ \ and remitted for Digitally Delivered Goods (DDG)IOSS:\
+ \ if this string is returned, the ID in the value field\
+ \ is an eBay EU or UK IOSS numberIRD: if this string\
+ \ is returned, the ID in the value field is an eBay New\
+ \ Zealand tax IDSST: if this string is returned,\
+ \ the ID in the value field is an eBay Malaysia taxNumberOSS:\
+ \ if this string is returned, the ID in the value field\
+ \ is an eBay Germany VAT IDVOEC: if this string\
+ \ is returned, the ID in the value field is an eBay Norway\
+ \ tax ID
"
+ value:
+ type: "string"
+ description: "The value returned in this field is the VAT identifier number\
+ \ (VATIN), which will vary by country/region. This field will be returned\
+ \ if VAT tax is applicable for the order. The name field\
+ \ indicates the VAT tax type, which will vary by country/region: - ABN:\
+ \ eBay AU tax ID
- IOSS: eBay EU IOSS\
+ \ number / eBay UK IOSS number
- IRD:\
+ \ eBay NZ tax ID
- OSS: eBay DE VAT\
+ \ ID
- SST: eBay MY taxNumber
- VOEC:\
+ \ eBay NO number
"
+ description: "This type describes the VAT tax details. The eBay VAT tax type\
+ \ and the eBay VAT identifier number will be returned if a VAT tax is applicable\
+ \ for the order.
"
+ EbayVaultProgram:
+ type: "object"
+ properties:
+ fulfillmentType:
+ type: "string"
+ description: "This field specifies how an eBay vault order will be fulfilled.\
+ \ Supported options are:- Seller to Vault: the order will\
+ \ be shipped by the seller to an authenticator.
- Vault to Vault:\
+ \ the order will be shipped from an eBay vault to the buyer's vault.
- Vault\
+ \ to Buyer: the order will be shipped from an eBay vault to the buyer's\
+ \ shipping address.
For implementation help, refer to eBay\
+ \ API documentation"
+ Error:
+ type: "object"
+ properties:
+ category:
+ type: "string"
+ description: "The context or source of this error or warning."
+ domain:
+ type: "string"
+ description: "The name of the domain containing the service or application.\
+ \ For example, sell is a domain."
+ errorId:
+ type: "integer"
+ description: "A positive integer that uniquely identifies the specific error\
+ \ condition that occurred. Your application can use these values as error\
+ \ code identifiers in your customized error-handling algorithms."
+ format: "int32"
+ inputRefIds:
+ type: "array"
+ description: "A list of one or more specific request elements (if any) associated\
+ \ with the error or warning. The format of these strings depends on the\
+ \ request payload format. For JSON, use JSONPath notation."
+ items:
+ type: "string"
+ longMessage:
+ type: "string"
+ description: "An expanded version of the message field.
Maximum\
+ \ length: 200 characters"
+ message:
+ type: "string"
+ description: "A message about the error or warning which is device agnostic\
+ \ and readable by end users and application developers. It explains what\
+ \ the error or warning is, and how to fix it (in a general sense). If\
+ \ applicable, the value is localized to the end user's requested locale.\
+ \
Maximum length: 50 characters"
+ outputRefIds:
+ type: "array"
+ description: "A list of one or more specific response elements (if any)\
+ \ associated with the error or warning. The format of these strings depends\
+ \ on the request payload format. For JSON, use JSONPath notation."
+ items:
+ type: "string"
+ parameters:
+ type: "array"
+ description: "Contains a list of name-value pairs that provide additional\
+ \ information concerning this error or warning. Each item in the list\
+ \ is an input parameter that contributed to the error or warning condition."
+ items:
+ $ref: "#/components/schemas/ErrorParameter"
+ subdomain:
+ type: "string"
+ description: "The name of the domain's subsystem or subdivision. For example,\
+ \ fulfillment is a subdomain in the sell domain."
+ description: "This type contains a error or warning related to a call request. "
+ ErrorParameter:
+ type: "object"
+ properties:
+ name:
+ type: "string"
+ description: "This is the name of input field that caused an issue with\
+ \ the call request."
+ value:
+ type: "string"
+ description: "This is the actual value that was passed in for the element\
+ \ specified in the name field."
+ description: "This type contains the name and value of an input parameter that\
+ \ contributed to a specific error or warning condition."
+ EvidenceRequest:
+ type: "object"
+ properties:
+ evidenceId:
+ type: "string"
+ description: "Unique identifier of the evidential file set. Potentially,\
+ \ each evidential file set can have more than one file, that is why there\
+ \ is this file set identifier, and then an identifier for each file within\
+ \ this file set."
+ evidenceType:
+ type: "string"
+ description: "This enumeration value shows the type of evidential document\
+ \ provided. For implementation help, refer to eBay\
+ \ API documentation"
+ lineItems:
+ type: "array"
+ description: "This array shows one or more order line items associated with\
+ \ the evidential document that has been provided."
+ items:
+ $ref: "#/components/schemas/OrderLineItems"
+ requestDate:
+ type: "string"
+ description: "The timestamp in this field shows the date/time when eBay\
+ \ requested the evidential document from the seller in response to a payment\
+ \ dispute.
The timestamps returned here use the ISO-8601 24-hour\
+ \ date and time format, and the time zone used is Universal Coordinated\
+ \ Time (UTC), also known as Greenwich Mean Time (GMT), or Zulu. The ISO-8601\
+ \ format looks like this: yyyy-MM-ddThh:mm.ss.sssZ. An example\
+ \ would be 2019-08-04T19:09:02.768Z."
+ respondByDate:
+ type: "string"
+ description: "The timestamp in this field shows the date/time when the seller\
+ \ is expected to provide a requested evidential document to eBay.
The\
+ \ timestamps returned here use the ISO-8601 24-hour date and time format,\
+ \ and the time zone used is Universal Coordinated Time (UTC), also known\
+ \ as Greenwich Mean Time (GMT), or Zulu. The ISO-8601 format looks like\
+ \ this: yyyy-MM-ddThh:mm.ss.sssZ. An example would be 2019-08-04T19:09:02.768Z."
+ description: "This type is used by the evidenceRequests array\
+ \ that is returned in the getPaymentDispute response if one\
+ \ or more evidential documents are being requested to help resolve the payment\
+ \ dispute."
+ ExtendedContact:
+ type: "object"
+ properties:
+ companyName:
+ type: "string"
+ description: "The company name associated with the buyer or eBay shipping\
+ \ partner. This field is only returned if defined/applicable to the buyer\
+ \ or eBay shipping partner."
+ contactAddress:
+ description: "This container shows the shipping address of the buyer or\
+ \ eBay shipping partner."
+ $ref: "#/components/schemas/Address"
+ email:
+ type: "string"
+ description: "This field contains the email address of the buyer. This address\
+ \ will be returned for up to 14 days from order creation. If an order\
+ \ is more than 14 days old, no address is returned.
Note: If returned, this field contains the\
+ \ email address of the buyer, even for Global Shipping Program shipments.
The\
+ \ email will not be returned for any order that is more than 90\
+ \ days old."
+ fullName:
+ type: "string"
+ description: "The full name of the buyer or eBay shipping partner.
Note: The fullName will\
+ \ not be returned for any order that is more than 90 days old."
+ primaryPhone:
+ description: "The primary telephone number of the buyer or eBay shipping\
+ \ partner.
Note: The\
+ \ primaryPhone will not be returned for any order that is more\
+ \ than 90 days old."
+ $ref: "#/components/schemas/PhoneNumber"
+ description: "This type contains shipping and contact information for a buyer\
+ \ or an eBay shipping partner."
+ FileEvidence:
+ type: "object"
+ properties:
+ fileId:
+ type: "string"
+ description: "This field is used to identify the evidence file to be uploaded\
+ \ to the evidence set.
This file is created with the uploadEvidenceFile method and can be retrieved\
+ \ using the getPaymentDisputes method."
+ description: "This type is used to store the unique identifier of an evidence\
+ \ file. Evidence files are used by seller to contest a payment dispute."
+ FileInfo:
+ type: "object"
+ properties:
+ fileId:
+ type: "string"
+ description: "The unique identifier of the evidence file."
+ fileType:
+ type: "string"
+ description: "The type of file uploaded. Supported file extensions are .JPEG,\
+ \ .JPG, and .PNG., and maximum file size allowed is 1.5 MB."
+ name:
+ type: "string"
+ description: "The seller-provided name of the evidence file."
+ uploadedDate:
+ type: "string"
+ description: "The timestamp in this field shows the date/time when the seller\
+ \ uploaded the evidential document to eBay.
The timestamps returned\
+ \ here use the ISO-8601 24-hour date and time format, and the time zone\
+ \ used is Universal Coordinated Time (UTC), also known as Greenwich Mean\
+ \ Time (GMT), or Zulu. The ISO-8601 format looks like this: yyyy-MM-ddThh:mm.ss.sssZ.\
+ \ An example would be 2019-08-04T19:09:02.768Z."
+ description: "This type is used by the files array, which shows\
+ \ the name, ID, file type, and upload date for each provided evidential file."
+ FulfillmentStartInstruction:
+ type: "object"
+ properties:
+ appointment:
+ description: "This container provides information used by the installation\
+ \ provider concerning appointment details selected by the buyer."
+ $ref: "#/components/schemas/AppointmentDetails"
+ ebaySupportedFulfillment:
+ type: "boolean"
+ description: "This field is only returned if its value is true\
+ \ and indicates that the fulfillment will be shipped via eBay's Global\
+ \ Shipping Program, eBay International Shipping, or the Authenticity Guarantee\
+ \ service program.
For more information, see the Global Shipping Program help topic."
+ finalDestinationAddress:
+ description: "This container is only returned if the value of ebaySupportedFulfillment\
+ \ field is true.
This is the final destination address\
+ \ for a Global Shipping Program shipment or an eBay International Shipping\
+ \ shipment, which is usually the recipient's home. Sellers should not\
+ \ ship directly to this address; instead they should ship this package\
+ \ to their international shipping provider's domestic warehouse. The international\
+ \ shipping provider is responsible for delivery to the final destination\
+ \ address.
For more information, see Addressing Shipments. Note: For Authenticity Guarantee program shipment, this\
+ \ is the address of the authenticator's warehouse. The authenticator is\
+ \ responsible for delivery to the buyer shipping address.
"
+ $ref: "#/components/schemas/Address"
+ fulfillmentInstructionsType:
+ type: "string"
+ description: "The enumeration value returned in this field indicates the\
+ \ method of fulfillment that will be used to deliver this set of line\
+ \ items (this package) to the buyer. This field will have a value of SHIP_TO\
+ \ if the ebaySupportedFulfillment field is returned with a value\
+ \ of true. See the FulfillmentInstructionsType\
+ \ definition for more information about different fulfillment types. For\
+ \ implementation help, refer to eBay\
+ \ API documentation"
+ maxEstimatedDeliveryDate:
+ type: "string"
+ description: "This is the estimated latest date that the fulfillment will\
+ \ be completed. This timestamp is in ISO 8601 format, which uses the 24-hour\
+ \ Universal Coordinated Time (UTC) clock. This field is not returned ifthe\
+ \ value of the fulfillmentInstructionsType field is DIGITAL\
+ \ or PREPARE_FOR_PICKUP.
Format: [YYYY]-[MM]-[DD]T[hh]:[mm]:[ss].[sss]Z\
+ \
Example: 2015-08-04T19:09:02.768Z"
+ minEstimatedDeliveryDate:
+ type: "string"
+ description: "This is the estimated earliest date that the fulfillment will\
+ \ be completed. This timestamp is in ISO 8601 format, which uses the 24-hour\
+ \ Universal Coordinated Time (UTC) clock. This field is not returned if\
+ \ the value of the fulfillmentInstructionsType field is DIGITAL\
+ \ or PREPARE_FOR_PICKUP.
Format: [YYYY]-[MM]-[DD]T[hh]:[mm]:[ss].[sss]Z\
+ \
Example: 2015-08-04T19:09:02.768Z"
+ pickupStep:
+ description: "This container is only returned for In-Store Pickup orders,\
+ \ and it indicates the specific merchant's store where the buyer will\
+ \ pick up the order. The In-Store Pickup feature is supported in the US,\
+ \ Canada, UK, Germany, and Australia marketplaces."
+ $ref: "#/components/schemas/PickupStep"
+ shippingStep:
+ description: "This container consists of shipping information for this fulfillment,\
+ \ including the shipping carrier, the shipping service option, and the\
+ \ shipment destination. This container is not returned if the value of\
+ \ the fulfillmentInstructionsType field is DIGITAL,\
+ \ or for In-Store Pickup orders.
For Click and Collect orders,\
+ \ the shipping destination will be a brick-and-mortar store where the\
+ \ buyer will pick up the order."
+ $ref: "#/components/schemas/ShippingStep"
+ description: "This type contains a set of specifications for processing a fulfillment\
+ \ of an order, including the type of fulfillment, shipping carrier and service,\
+ \ addressing details, and estimated delivery window. These instructions are\
+ \ derived from the buyer's and seller's eBay account preferences, the listing\
+ \ parameters, and the buyer's checkout selections. The seller can use them\
+ \ as a starting point for packaging, addressing, and shipping the order."
+ GiftDetails:
+ type: "object"
+ properties:
+ message:
+ type: "string"
+ description: "This field contains the gift message from the buyer to the\
+ \ gift recipient. This field is only returned if the buyer of the gift\
+ \ included a message for the gift.
Note:\
+ \ The message will not be returned for any order that is more than\
+ \ 90 days old."
+ recipientEmail:
+ type: "string"
+ description: "The email address of the gift recipient. The seller will send\
+ \ the digital gift card to this email address.
Note: The recipientEmail will not be returned\
+ \ for any order that is more than 90 days old."
+ senderName:
+ type: "string"
+ description: "The name of the buyer, which will appear on the email that\
+ \ is sent to the gift recipient.
Note:\
+ \ The senderName will not be returned for any order that is more\
+ \ than 90 days old."
+ description: "This type contains information about a digital gift card line\
+ \ item that was purchased as a gift and sent to the recipient by email.
Note: GiftDetails will not be\
+ \ returned for any order that is more than 90 days old."
+ InfoFromBuyer:
+ type: "object"
+ properties:
+ contentOnHold:
+ type: "boolean"
+ description: "When the value of this field is true it indicates\
+ \ that the buyer's note regarding the payment dispute (i.e., the buyerProvided.note\
+ \ field,) is on hold. When this is the case, the buyerProvided.note\
+ \ field will not be returned.
When the value of this field is false,\
+ \ it is not returned."
+ note:
+ type: "string"
+ description: "This field shows any note that was left by the buyer in regard\
+ \ to the dispute."
+ returnShipmentTracking:
+ type: "array"
+ description: "This array shows shipment tracking information for one or\
+ \ more shipping packages being returned to the buyer after a payment dispute."
+ items:
+ $ref: "#/components/schemas/TrackingInfo"
+ description: "This container is returned if the buyer is returning one or more\
+ \ line items in an order that is associated with the payment dispute, and\
+ \ that buyer has provided return shipping tracking information and/or a note\
+ \ about the return."
+ IssueRefundRequest:
+ type: "object"
+ properties:
+ reasonForRefund:
+ type: "string"
+ description: "The enumeration value passed into this field indicates the\
+ \ reason for the refund. One of the defined enumeration values in the\
+ \ ReasonForRefundEnum type must be used.
This field is required,\
+ \ and it is highly recommended that sellers use the correct refund reason,\
+ \ especially in the case of a buyer-requested cancellation or 'buyer remorse'\
+ \ return to indicate that there was nothing wrong with the item(s) or\
+ \ with the shipment of the order.
Note:\
+ \ If issuing refunds for more than one order line item, keep in mind that\
+ \ the refund reason must be the same for each of the order line items.\
+ \ If the refund reason is different for one or more order line items in\
+ \ an order, the seller would need to make separate issueRefund\
+ \ calls, one for each refund reason. For implementation help,\
+ \ refer to eBay\
+ \ API documentation"
+ comment:
+ type: "string"
+ description: "This free-text field allows the seller to clarify why the\
+ \ refund is being issued to the buyer.
Max Length: 100"
+ refundItems:
+ type: "array"
+ description: "The refundItems array is only required if the seller\
+ \ is issuing a refund for one or more individual order line items in a\
+ \ multiple line item order. Otherwise, the seller just uses the orderLevelRefundAmount\
+ \ container to specify the amount of the refund for the entire order."
+ items:
+ $ref: "#/components/schemas/RefundItem"
+ orderLevelRefundAmount:
+ description: "This container is used to specify the amount of the refund\
+ \ for the entire order. If a seller wants to issue a refund for an individual\
+ \ line item within a multiple line item order, the seller would use the\
+ \ refundItems array instead."
+ $ref: "#/components/schemas/SimpleAmount"
+ description: "The base type used by the request payload of the issueRefund\
+ \ method."
+ ItemLocation:
+ type: "object"
+ properties:
+ countryCode:
+ type: "string"
+ description: "The two-letter ISO 3166 code\
+ \ representing the country of the address. For implementation help, refer\
+ \ to eBay\
+ \ API documentation"
+ location:
+ type: "string"
+ description: "Indicates the geographical location of the item (along with\
+ \ the values in the countryCode and postalCode\
+ \ fields).
Note: If the item is\
+ \ shipped from a fulfillment center location through the Multi-Warehouse\
+ \ Program, this field will return the geographical location of the fulfillment\
+ \ center closest to the buyer.
This field provides city, province,\
+ \ state, or similar information."
+ postalCode:
+ type: "string"
+ description: "The postal code of the address."
+ description: "This type describes the physical location of an order."
+ LegacyReference:
+ type: "object"
+ properties:
+ legacyItemId:
+ type: "string"
+ description: "The unique identifier of a listing.
This value can\
+ \ be found in the Transaction container in the response of the getOrder call of the Trading API.
Note: Both legacyItemId and legacyTransactionId\
+ \ are needed to identify an order line item. "
+ legacyTransactionId:
+ type: "string"
+ description: "The unique identifier of a sale/transaction in legacy/Trading\
+ \ API format. A 'transaction ID' is created once a buyer purchases a 'Buy\
+ \ It Now' item or if an auction listing ends with a winning bidder.
\
+ \ This value can be found in the Transaction container in the response of the getOrder call of the Trading API.
Note: Both legacyItemId and legacyTransactionId\
+ \ are needed to identify an order line item. "
+ description: "Type defining the legacyReference container. This container\
+ \ is needed if the seller is issuing a refund for an individual order line\
+ \ item, and wishes to use an item ID and transaction ID to identify the order\
+ \ line item."
+ LineItem:
+ type: "object"
+ properties:
+ appliedPromotions:
+ type: "array"
+ description: "This array contains information about one or more sales promotions\
+ \ or discounts applied to the line item. It is always returned, but will\
+ \ be returned as an empty array if no special sales promotions or discounts\
+ \ apply to the order line item."
+ items:
+ $ref: "#/components/schemas/AppliedPromotion"
+ compatibilityProperties:
+ type: "array"
+ description: "This array is only returned for a Parts & Accessory item,\
+ \ and identifies the buyer's motor vehicle that is compatible with the\
+ \ part or accessory."
+ items:
+ $ref: "#/components/schemas/Property"
+ deliveryCost:
+ description: "This container consists of a breakdown of all costs associated\
+ \ with the fulfillment of the line item."
+ $ref: "#/components/schemas/DeliveryCost"
+ discountedLineItemCost:
+ description: "The cost of the line item after applying any discounts. This\
+ \ container is only returned if the order line item was discounted through\
+ \ a promotion."
+ $ref: "#/components/schemas/Amount"
+ ebayCollectAndRemitTaxes:
+ type: "array"
+ description: "This container will be returned if the order line item is\
+ \ subject to a 'Collect and Remit' tax that eBay will collect and remit\
+ \ to the proper taxing authority on the buyer's behalf.
'Collect\
+ \ and Remit' tax includes:- US state-mandated sales tax
- Federal\
+ \ and Provincial Sales Tax in Canada
- 'Goods and Services' tax\
+ \ in Canada, Australia, New Zealand, and Jersey
- VAT collected\
+ \ for the UK, EU countries, Kazakhstan, and Belarus
- Sales & Service\
+ \ Tax (SST) in Malaysia
The amount of this tax is shown in the\
+ \ amount field, and the type of tax is shown in the taxType\
+ \ field.
eBay will display the tax type and amount during checkout\
+ \ in accordance with the buyer's address, and handle collection and remittance\
+ \ of the tax without requiring the seller to take any action."
+ items:
+ $ref: "#/components/schemas/EbayCollectAndRemitTax"
+ ebayCollectedCharges:
+ description: "This container consists of a breakdown of costs that are collected\
+ \ by eBay from the buyer for this order.
Note: Currently, this container is returned only if\
+ \ eBay is directly charging the buyer for eBay shipping."
+ $ref: "#/components/schemas/EbayCollectedCharges"
+ giftDetails:
+ description: "This container consists of information that is needed by the\
+ \ seller to send a digital gift card to the buyer, or recipient of the\
+ \ digital gift card. This container is only returned and applicable for\
+ \ digital gift card line items."
+ $ref: "#/components/schemas/GiftDetails"
+ itemLocation:
+ description: "This container field describes the physical location of the\
+ \ order line item.
Note: If the\
+ \ item is shipped from a fulfillment center location through the Multi-Warehouse\
+ \ Program, this container will return the location details of the fulfillment\
+ \ center closest to the buyer."
+ $ref: "#/components/schemas/ItemLocation"
+ legacyItemId:
+ type: "string"
+ description: "The eBay-generated legacy listing item ID of the listing.\
+ \ Note that the unique identifier of a listing in REST-based APIs is called\
+ \ the listingId instead."
+ legacyVariationId:
+ type: "string"
+ description: "The unique identifier of a single variation within a multiple-variation\
+ \ listing. This field is only returned if the line item purchased was\
+ \ from a multiple-variation listing."
+ lineItemCost:
+ description: "The selling price of the line item before applying any discounts.\
+ \ The value of this field is calculated by multiplying the single unit\
+ \ price by the number of units purchased (value of the quantity\
+ \ field)."
+ $ref: "#/components/schemas/Amount"
+ lineItemFulfillmentInstructions:
+ description: "This container consists of information related to shipping\
+ \ dates and expectations, including the 'ship-by date' and expected delivery\
+ \ windows that are based on the seller's stated handling time and the\
+ \ shipping service option that will be used. These fields provide guidance\
+ \ on making sure expected delivery dates are made, whether the order is\
+ \ a eBay Guaranteed Delivery order or a non-guaranteed delivery\
+ \ order."
+ $ref: "#/components/schemas/LineItemFulfillmentInstructions"
+ lineItemFulfillmentStatus:
+ type: "string"
+ description: "This enumeration value indicates the current fulfillment status\
+ \ of the line item. For implementation help, refer to eBay\
+ \ API documentation"
+ lineItemId:
+ type: "string"
+ description: "This is the unique identifier of an eBay order line item.\
+ \ This field is created as soon as there is a commitment to buy from the\
+ \ seller."
+ linkedOrderLineItems:
+ type: "array"
+ description: "An array of one or more line items related to the corresponding\
+ \ order, but not a part of that order. Details include the order ID, line\
+ \ item ID, and title of the linked line item, the seller of that item,\
+ \ item specifics, estimated delivery times, and shipment tracking (if\
+ \ available)."
+ items:
+ $ref: "#/components/schemas/LinkedOrderLineItem"
+ listingMarketplaceId:
+ type: "string"
+ description: "The unique identifier of the eBay marketplace where the line\
+ \ item was listed. For implementation help, refer to eBay\
+ \ API documentation"
+ properties:
+ description: "Contains information about the eBay programs, if any, under\
+ \ which the line item was listed."
+ $ref: "#/components/schemas/LineItemProperties"
+ purchaseMarketplaceId:
+ type: "string"
+ description: "The unique identifier of the eBay marketplace where the line\
+ \ item was listed. Often, the listingMarketplaceId and\
+ \ the purchaseMarketplaceId identifier are the same,\
+ \ but there are occasions when an item will surface on multiple eBay marketplaces.\
+ \ For implementation help, refer to eBay\
+ \ API documentation"
+ quantity:
+ type: "integer"
+ description: "The number of units of the line item in the order. These are\
+ \ represented as a group by a single lineItemId."
+ format: "int32"
+ refunds:
+ type: "array"
+ description: "This array is always returned, but is returned as an empty\
+ \ array unless the seller has submitted a partial or full refund to the\
+ \ buyer for the order. If a refund has occurred, the refund amount and\
+ \ refund date will be shown for each refund."
+ items:
+ $ref: "#/components/schemas/LineItemRefund"
+ sku:
+ type: "string"
+ description: "Seller-defined Stock-Keeping Unit (SKU). This inventory identifier\
+ \ must be unique within the seller's eBay inventory. SKUs are optional\
+ \ when listing in the legacy/Trading API system, but SKUs are required\
+ \ when listing items through the Inventory API model."
+ soldFormat:
+ type: "string"
+ description: "The eBay listing type of the line item. The most common listing\
+ \ types are AUCTION and FIXED_PRICE. For implementation\
+ \ help, refer to eBay\
+ \ API documentation"
+ taxes:
+ type: "array"
+ description: "Contains a list of taxes applied to the line item, if any.\
+ \ This array is always returned, but will be returned as empty if no taxes\
+ \ are applicable to the line item."
+ items:
+ $ref: "#/components/schemas/Tax"
+ title:
+ type: "string"
+ description: "The title of the listing.
Note: The Item ID value for the listing will be returned in this\
+ \ field instead of the actual title if this particular listing is on-hold\
+ \ due to an eBay policy violation."
+ total:
+ description: "This is the total price that the buyer must pay for the line\
+ \ item after all costs (item cost, delivery cost, taxes,) are added, minus\
+ \ any discounts and/or promotions.
Note:\
+ \ For orders that are subject to 'eBay Collect and Remit' tax, the 'Collect\
+ \ and Remit' tax amount for the order will be included in this total\
+ \ value only when the fieldGroups query parameter is\
+ \ set to TAX_BREAKDOWN. If the fieldGroups\
+ \ query parameter is not set to TAX_BREAKDOWN, 'Collect and\
+ \ Remit' will not be added into this total value.
To\
+ \ determine if 'Collect and Remit' taxes were added into this total\
+ \ value, the user can check for the corresponding lineItems.ebayCollectAndRemitTaxes\
+ \ and the lineItems.taxes containers in the response.\
+ \ If both of these containers appear for one or more line items in the\
+ \ response with the following taxType values, the 'Collect\
+ \ and Remit' tax amount that the buyer paid is in this amount:STATE_SALES_TAX:\
+ \ US state-mandated sales taxPROVINCE_SALES_TAX:\
+ \ Provincial Sales Tax in CanadaGST: 'Goods and\
+ \ Services' tax in Canada, Australia, and New ZealandVAT:\
+ \ VAT collected for UK and EU countries
"
+ $ref: "#/components/schemas/Amount"
+ variationAspects:
+ type: "array"
+ description: "An array of aspect name-value pairs that identifies the specific\
+ \ variation of a multi-variation listing. This array can contain multiple\
+ \ name-value pairs, such as color:blue and size:large,\
+ \ and will only be returned for orders created from a multiple-variation\
+ \ listing."
+ items:
+ $ref: "#/components/schemas/NameValuePair"
+ description: "This type contains the details of each line item in an order."
+ LineItemFulfillmentInstructions:
+ type: "object"
+ properties:
+ guaranteedDelivery:
+ type: "boolean"
+ description: "Although this field is still returned, it can be ignored since\
+ \ eBay Guaranteed Delivery is no longer a supported feature on any marketplace.\
+ \ This field may get removed from the schema in the future."
+ maxEstimatedDeliveryDate:
+ type: "string"
+ description: "The estimated latest date and time that the buyer can expect\
+ \ to receive the line item based on the seller's stated handling time\
+ \ and the transit times of the available shipping service options. The\
+ \ seller must pay extra attention to this date, as a failure to deliver\
+ \ by this date/time can result in a 'Late shipment' seller defect, and\
+ \ can affect seller level and Top-Rated Seller status. In addition to\
+ \ the seller defect, buyers will be eligible for a shipping cost refund,\
+ \ and will also be eligible to return the item for a full refund (with\
+ \ no return shipping charge) if they choose.
Note: This timestamp is in ISO 8601 format, which uses\
+ \ the 24-hour Universal Coordinated Time (UTC) clock.
Format:\
+ \ [YYYY]-[MM]-[DD]T[hh]:[mm]:[ss].[sss]Z
Example:\
+ \ 2015-08-04T19:09:02.768Z"
+ minEstimatedDeliveryDate:
+ type: "string"
+ description: "The estimated earliest date and time that the buyer can expect\
+ \ to receive the line item based on the seller's stated handling time\
+ \ and the transit times of the available shipping service options.
Note: This timestamp is in ISO\
+ \ 8601 format, which uses the 24-hour Universal Coordinated Time (UTC)\
+ \ clock.
Format: [YYYY]-[MM]-[DD]T[hh]:[mm]:[ss].[sss]Z\
+ \
Example: 2015-08-04T19:09:02.768Z"
+ shipByDate:
+ type: "string"
+ description: "The latest date and time by which the seller should ship line\
+ \ item in order to meet the expected delivery window. This timestamp will\
+ \ be set by eBay based on time of purchase and the seller's stated handling\
+ \ time. The seller must pay extra attention to this date, as a failure\
+ \ to physically ship the line item by this date/time can result in a 'Late\
+ \ shipment' seller defect, and can affect seller level and Top-Rated Seller\
+ \ status. In addition to the seller defect, buyers will be eligible for\
+ \ a shipping cost refund, and will also be eligible to return the item\
+ \ for a full refund (with no return shipping charge) if they choose.
Note: This timestamp is in ISO\
+ \ 8601 format, which uses the 24-hour Universal Coordinated Time (UTC)\
+ \ clock.
Format: [YYYY]-[MM]-[DD]T[hh]:[mm]:[ss].[sss]Z\
+ \
Example: 2015-08-04T19:09:02.768Z"
+ description: "This type contains the specifications for processing the fulfillment\
+ \ of a line item, including the handling window and the delivery window. These\
+ \ fields provide guidance for eBay Guaranteed Delivery as well as for\
+ \ non-guaranteed delivery."
+ LineItemProperties:
+ type: "object"
+ properties:
+ buyerProtection:
+ type: "boolean"
+ description: "A value of true indicates that the line item\
+ \ is covered by eBay's Buyer Protection program."
+ fromBestOffer:
+ type: "boolean"
+ description: "This field is only returned if true and indicates\
+ \ that the purchase occurred by the buyer and seller mutually agreeing\
+ \ on a Best Offer amount. The Best Offer feature can be set up for any\
+ \ listing type, but if this feature is set up for an auction listing,\
+ \ it will no longer be available once a bid has been placed on the listing."
+ soldViaAdCampaign:
+ type: "boolean"
+ description: "This field is only returned if true and indicates\
+ \ that the line item was sold as a result of a seller's ad campaign."
+ description: "This type contains information about the eBay programs under which\
+ \ a line item was listed and sold."
+ LineItemReference:
+ type: "object"
+ properties:
+ lineItemId:
+ type: "string"
+ description: "This is the unique identifier of the eBay order line item\
+ \ that is part of the shipping fulfillment.
Line item Ids can be\
+ \ found in the lineItems.lineItemId field of the getOrders response."
+ quantity:
+ type: "integer"
+ description: "This is the number of lineItems associated with the trackingNumber specified by the seller.\
+ \ This must be a whole number greater than zero (0).
Default:\
+ \ 1"
+ format: "int32"
+ description: "This type identifies the line item and quantity of that line item\
+ \ that comprises one fulfillment, such as a shipping package."
+ LineItemRefund:
+ type: "object"
+ properties:
+ amount:
+ description: "This field shows the refund amount for a line item. This field\
+ \ is only returned if the buyer is due a refund for the line item.
Note: The refund amount shown is the seller's\
+ \ net amount received from the sale/transaction. eBay-collected\
+ \ tax will not be included in this amount, so the actual amount of the\
+ \ buyer's refund may be higher than this value."
+ $ref: "#/components/schemas/Amount"
+ refundDate:
+ type: "string"
+ description: "The date and time that the refund was issued for the line\
+ \ item. This timestamp is in ISO 8601 format, which uses the 24-hour Universal\
+ \ Coordinated Time (UTC) clock. This field is not returned until the refund\
+ \ has been issued.
Format: [YYYY]-[MM]-[DD]T[hh]:[mm]:[ss].[sss]Z\
+ \
Example: 2015-08-04T19:09:02.768Z"
+ refundId:
+ type: "string"
+ description: "Unique identifier of a refund that was initiated for an order's\
+ \ line item through the issueRefund method. If the issueRefund\
+ \ method was used to issue a refund at the order level, this identifier\
+ \ is returned at the order level instead (paymentSummary.refunds.refundId\
+ \ field).
A refundId value is returned in the response\
+ \ of the issueRefund method, and this same value will be returned\
+ \ in the getOrder and getOrders responses for pending and\
+ \ completed refunds."
+ refundReferenceId:
+ type: "string"
+ description: "This field is reserved for internal or future use."
+ description: "This type contains refund information for a line item."
+ LinkedOrderLineItem:
+ type: "object"
+ properties:
+ lineItemAspects:
+ type: "array"
+ description: "This array contains the complete set of items aspects for\
+ \ the linked line item. For example:
\"lineItemAspects\": [
\
+ \ {
\"name\": \"Tire Type\",
\"value\": \"All\
+ \ Season\"
},
...
{
\"name\"\
+ : \"Car Type\",
\"value\": \"Performance\"
}
]
Note: All item specifics for the\
+ \ listing are returned. The name/value pairs returned are in the language\
+ \ of the linked line item's listing site, which may vary from the seller's\
+ \ language."
+ items:
+ $ref: "#/components/schemas/NameValuePair"
+ lineItemId:
+ type: "string"
+ description: "The unique identifier of the linked order line item."
+ maxEstimatedDeliveryDate:
+ type: "string"
+ description: "The end of the date range in which the linked line item is\
+ \ expected to be delivered to the shipping address."
+ minEstimatedDeliveryDate:
+ type: "string"
+ description: "The beginning of the date range in which the linked line item\
+ \ is expected to be delivered to the shipping address."
+ orderId:
+ type: "string"
+ description: "The unique identifier of the order to which the linked line\
+ \ item belongs."
+ sellerId:
+ type: "string"
+ description: "The eBay user ID of the seller who sold the linked line item.\
+ \ For example, the user ID of the tire seller."
+ shipments:
+ type: "array"
+ description: "An array containing any shipment tracking information available\
+ \ for the linked line item."
+ items:
+ $ref: "#/components/schemas/TrackingInfo"
+ title:
+ type: "string"
+ description: "The listing title of the linked line item.
Note: The Item ID value for the listing will be returned\
+ \ in this field instead of the actual title if this particular listing\
+ \ is on-hold due to an eBay policy violation."
+ description: "This type contains data on a line item that is related to, but\
+ \ not a part of the order."
+ MonetaryTransaction:
+ type: "object"
+ properties:
+ date:
+ type: "string"
+ description: "This timestamp indicates when the monetary transaction occurred.\
+ \ A date is returned for all monetary transactions.
The following\
+ \ format is used: YYYY-MM-DDTHH:MM:SS.SSSZ. For example,\
+ \ 2015-08-04T19:09:02.768Z."
+ type:
+ type: "string"
+ description: "This enumeration value indicates whether the monetary transaction\
+ \ is a charge or a credit to the seller. For implementation help, refer\
+ \ to eBay\
+ \ API documentation"
+ reason:
+ type: "string"
+ description: "This enumeration value indicates the reason for the monetary\
+ \ transaction. For implementation help, refer to eBay\
+ \ API documentation"
+ amount:
+ description: "The amount involved in the monetary transaction. For active\
+ \ cross-border trade orders, the currency conversion and exchangeRate\
+ \ fields will be displayed as well."
+ $ref: "#/components/schemas/DisputeAmount"
+ description: "This type is used to provide details about one or more monetary\
+ \ transactions that occur as part of a payment dispute."
+ NameValuePair:
+ type: "object"
+ properties:
+ name:
+ type: "string"
+ description: "The text representing the name of the aspect for the name-value\
+ \ pair. For example, color, or Tire Type."
+ value:
+ type: "string"
+ description: "The value of the aspect for the name-value pair. For example,\
+ \ red, or All Season."
+ description: "This type contains the name-value specifics of a multi-variation\
+ \ listing (variationAspects) or the name-value specifics for all item\
+ \ aspects of a linked line item (linkedOrderLineItems)."
+ Order:
+ type: "object"
+ properties:
+ buyer:
+ description: "This container consists of information about the order's buyer.\
+ \ At this time, only the buyer's eBay user ID is returned, but it's possible\
+ \ that more buyer information can be added to this container in the future."
+ $ref: "#/components/schemas/Buyer"
+ buyerCheckoutNotes:
+ type: "string"
+ description: "This field contains any comments that the buyer left for the\
+ \ seller about the order during checkout process. This field is only returned\
+ \ if a buyer left comments at checkout time. "
+ cancelStatus:
+ description: "This container consists of order cancellation information\
+ \ if a cancel request has been made. This container is always returned,\
+ \ and if no cancel request has been made, the cancelState\
+ \ field is returned with a value of NONE_REQUESTED, and an\
+ \ empty cancelRequests array is also returned."
+ $ref: "#/components/schemas/CancelStatus"
+ creationDate:
+ type: "string"
+ description: "The date and time that the order was created. This timestamp\
+ \ is in ISO 8601 format, which uses the 24-hour Universal Coordinated\
+ \ Time (UTC) clock.
Format: [YYYY]-[MM]-[DD]T[hh]:[mm]:[ss].[sss]Z\
+ \
Example: 2015-08-04T19:09:02.768Z"
+ ebayCollectAndRemitTax:
+ type: "boolean"
+ description: "This field is only returned if true, and indicates\
+ \ that eBay will collect tax (US state-mandated sales tax, Federal and\
+ \ Provincial Sales Tax in Canada, 'Goods and Services' tax in Canada,\
+ \ Australia, and New Zealand, and VAT collected for UK and EU countries,)\
+ \ for at least one line item in the order, and remit the tax to the taxing\
+ \ authority of the buyer's residence. If this field is returned, the seller\
+ \ should search for one or more ebayCollectAndRemitTaxes\
+ \ containers at the line item level to get more information about the\
+ \ type of tax and the amount."
+ fulfillmentHrefs:
+ type: "array"
+ description: "This array contains a list of one or more getShippingFulfillment\
+ \ call URIs that can be used to retrieve shipping fulfillments that have\
+ \ been set up for the order."
+ items:
+ type: "string"
+ fulfillmentStartInstructions:
+ type: "array"
+ description: "This container consists of a set of specifications for fulfilling\
+ \ the order, including the type of fulfillment, shipping carrier and service,\
+ \ shipping address, and estimated delivery window. These instructions\
+ \ are derived from the buyer's and seller's eBay account preferences,\
+ \ the listing parameters, and the buyer's checkout selections. The seller\
+ \ can use them as a starting point for packaging, addressing, and shipping\
+ \ the order.
Note: Although\
+ \ this container is presented as an array, it currently returns only one\
+ \ set of fulfillment specifications. Additional array members will be\
+ \ supported in future functionality."
+ items:
+ $ref: "#/components/schemas/FulfillmentStartInstruction"
+ lastModifiedDate:
+ type: "string"
+ description: "The date and time that the order was last modified. This timestamp\
+ \ is in ISO 8601 format, which uses the 24-hour Universal Coordinated\
+ \ Time (UTC) clock.
Format: [YYYY]-[MM]-[DD]T[hh]:[mm]:[ss].[sss]Z\
+ \
Example: 2015-08-04T19:09:02.768Z"
+ lineItems:
+ type: "array"
+ description: "This array contains the details for all line items that comprise\
+ \ the order."
+ items:
+ $ref: "#/components/schemas/LineItem"
+ orderFulfillmentStatus:
+ type: "string"
+ description: "The degree to which fulfillment of the order is complete.\
+ \ See the OrderFulfillmentStatus type definition for\
+ \ more information about each possible fulfillment state. For implementation\
+ \ help, refer to eBay\
+ \ API documentation"
+ orderId:
+ type: "string"
+ description: "The unique identifier of the order. This field is always returned."
+ orderPaymentStatus:
+ type: "string"
+ description: "The enumeration value returned in this field indicates the\
+ \ current payment status of an order, or in case of a refund request,\
+ \ the current status of the refund. See the OrderPaymentStatusEnum\
+ \ type definition for more information about each possible payment/refund\
+ \ state. For implementation help, refer to eBay\
+ \ API documentation"
+ paymentSummary:
+ description: "This container consists of detailed payment information for\
+ \ the order, including buyer payment for the order, refund information\
+ \ (if applicable), and seller payment holds (if applicable)."
+ $ref: "#/components/schemas/PaymentSummary"
+ pricingSummary:
+ description: "This container consists of a summary of cumulative costs and\
+ \ charges for all line items of an order, including item price, price\
+ \ adjustments, sales taxes, delivery costs, and order discounts."
+ $ref: "#/components/schemas/PricingSummary"
+ program:
+ description: "This container is returned for orders that are eligible for\
+ \ eBay's Authenticity Guarantee service. The seller ships Authenticity\
+ \ Guarantee service items to the authentication partner instead of the\
+ \ buyer. The authenticator address is found in the fulfillmentStartInstructions.shippingStep.shipTo\
+ \ container. If the item is successfully authenticated, the authenticator\
+ \ will ship the item to the buyer."
+ $ref: "#/components/schemas/Program"
+ salesRecordReference:
+ type: "string"
+ description: "An eBay-generated identifier that is used to identify and\
+ \ manage orders through the Selling Manager and Selling Manager Pro tools.\
+ \ This order identifier can also be found on the Orders grid page and\
+ \ in the Sales Record pages in Seller Hub. A salesRecordReference\
+ \ number is only generated and returned at the order level, and not at\
+ \ the order line item level.
In cases where the seller does not\
+ \ have a Selling Manager or Selling Manager Pro subscription nor access\
+ \ to Seller Hub, this field may not be returned."
+ sellerId:
+ type: "string"
+ description: "The unique eBay user ID of the seller who sold the order."
+ totalFeeBasisAmount:
+ description: "This is the cumulative base amount used to calculate the final\
+ \ value fees for each order. The final value fees are deducted from the\
+ \ seller payout associated with the order. Final value fees are calculated\
+ \ as a percentage of order cost (item cost + shipping cost) and the percentage\
+ \ rate can vary by eBay category. "
+ $ref: "#/components/schemas/Amount"
+ totalMarketplaceFee:
+ description: "This is the cumulative fees accrued for the order and deducted\
+ \ from the seller payout."
+ $ref: "#/components/schemas/Amount"
+ description: "This type contains the details of an order, including information\
+ \ about the buyer, order history, shipping fulfillments, line items, costs,\
+ \ payments, and order fulfillment status."
+ OrderLineItems:
+ type: "object"
+ properties:
+ itemId:
+ type: "string"
+ description: "The unique identifier of the eBay listing associated with\
+ \ the order."
+ lineItemId:
+ type: "string"
+ description: "The unique identifier of the line item within the order."
+ description: "This type is used by the lineItems array that\
+ \ is used to identify one or more line items in the order with the payment\
+ \ dispute."
+ OrderRefund:
+ type: "object"
+ properties:
+ amount:
+ description: "This field shows the refund amount for an order. This container\
+ \ is always returned for each refund.
Note: The refund amount shown is the seller's net amount\
+ \ received from the sale/transaction. eBay-collected tax will not be included\
+ \ in this amount, so the actual amount of the buyer's refund may be higher\
+ \ than this value."
+ $ref: "#/components/schemas/Amount"
+ refundDate:
+ type: "string"
+ description: "The date and time that the refund was issued. This timestamp\
+ \ is in ISO 8601 format, which uses the 24-hour Universal Coordinated\
+ \ Time (UTC) clock. This field is not returned until the refund has been\
+ \ issued.
Format: [YYYY]-[MM]-[DD]T[hh]:[mm]:[ss].[sss]Z\
+ \
Example: 2015-08-04T19:09:02.768Z"
+ refundId:
+ type: "string"
+ description: "Unique identifier of a refund that was initiated for an order\
+ \ through the issueRefund method. If the issueRefund method\
+ \ was used to issue one or more refunds at the line item level, these\
+ \ refund identifiers are returned at the line item level instead (lineItems.refunds.refundId\
+ \ field).
A refundId value is returned in the response\
+ \ of the issueRefund method, and this same value will be returned\
+ \ in the getOrders and getOrders responses for pending and\
+ \ completed refunds. For other refunds, see the refundReferenceId\
+ \ field."
+ refundReferenceId:
+ type: "string"
+ description: "The eBay-generated unique identifier for the refund. This\
+ \ field is not returned until the refund has been issued."
+ refundStatus:
+ type: "string"
+ description: "This enumeration value indicates the current status of the\
+ \ refund to the buyer. This container is always returned for each refund.\
+ \ For implementation help, refer to eBay\
+ \ API documentation"
+ description: "This type contains information about a refund issued for an order.\
+ \ This does not include line item level refunds."
+ OrderSearchPagedCollection:
+ type: "object"
+ properties:
+ href:
+ type: "string"
+ description: "The URI of the getOrders call request that produced\
+ \ the current page of the result set."
+ limit:
+ type: "integer"
+ description: "The maximum number of orders returned per page of the result\
+ \ set. The limit value can be passed in as a query parameter,\
+ \ or if omitted, its value defaults to 50.
Note: If this is the last or only\
+ \ page of the result set, the page may contain fewer orders than the limit\
+ \ value. To determine the number of pages in a result set, divide the\
+ \ total value (total number of orders matching input criteria)\
+ \ by this limit value, and then round up to the next\
+ \ integer. For example, if the total value was 120\
+ \ (120 total orders) and the limit value was 50\
+ \ (show 50 orders per page), the total number of pages in the result set\
+ \ is three, so the seller would have to make three separate getOrders\
+ \ calls to view all orders matching the input criteria. Default:\
+ \ 50"
+ format: "int32"
+ next:
+ type: "string"
+ description: "The getOrders call URI to use if you wish to view the\
+ \ next page of the result set. For example, the following URI returns\
+ \ records 41 thru 50 from the collection of orders:
path/order?limit=10&offset=40\
+ \
This field is only returned if there is a next page of\
+ \ results to view based on the current input criteria.
"
+ offset:
+ type: "integer"
+ description: "The number of results skipped in the result set before listing\
+ \ the first returned result. This value can be set in the request with\
+ \ the offset query parameter. Note:\
+ \ The items in a paginated result set use a zero-based list where\
+ \ the first item in the list has an offset of 0.
"
+ format: "int32"
+ orders:
+ type: "array"
+ description: "This array contains one or more orders that are part of the\
+ \ current result set, that is controlled by the input criteria. The details\
+ \ of each order include information about the buyer, order history, shipping\
+ \ fulfillments, line items, costs, payments, and order fulfillment status.\
+ \
By default, orders are returned according to creation date (oldest\
+ \ to newest), but the order will vary according to any filter that is\
+ \ set in request."
+ items:
+ $ref: "#/components/schemas/Order"
+ prev:
+ type: "string"
+ description: "The getOrders call URI for the previous result set.\
+ \ For example, the following URI returns orders 21 thru 30 from the collection\
+ \ of orders:
path/order?limit=10&offset=20
This\
+ \ field is only returned if there is a previous page of results to view\
+ \ based on the current input criteria."
+ total:
+ type: "integer"
+ description: "The total number of orders in the results set based on the\
+ \ current input criteria.
Note:\
+ \ If no orders are found, this field is returned with a value of 0."
+ format: "int32"
+ warnings:
+ type: "array"
+ description: "This array is returned if one or more errors or warnings occur\
+ \ with the call request."
+ items:
+ $ref: "#/components/schemas/Error"
+ description: "This type contains the specifications for the collection of orders\
+ \ that match the search or filter criteria of a getOrders call. The\
+ \ collection is grouped into a result set, and based on the query parameters\
+ \ that are set (including the limit and offset\
+ \ parameters), the result set may included multiple pages, but only one page\
+ \ of the result set can be viewed at a time."
+ Payment:
+ type: "object"
+ properties:
+ amount:
+ description: "The amount that seller receives for the order via the payment\
+ \ method mentioned in Payment.paymentMethod.
Note: For orders that are subject\
+ \ to 'eBay Collect and Remit' tax, which includes US state-mandated sales\
+ \ tax, Federal and Provincial Sales Tax in Canada, 'Good and Services'\
+ \ tax in Canada, Australia, and New Zealand, and VAT collected for UK\
+ \ or EU, the 'Collect and Remit' tax amount for the order will be included\
+ \ in this amount.value field (and in the amount.convertedFromValue\
+ \ field if currency conversion is applicable).
To determine if\
+ \ 'Collect and Remit' taxes were added into this totalDueSeller\
+ \ value, the user can check for the corresponding lineItems.ebayCollectAndRemitTaxes\
+ \ and the lineItems.taxes containers in the response.\
+ \ If both of these containers appear for one or more line items in the\
+ \ response with the following taxType values, the 'Collect\
+ \ and Remit' tax amount that the buyer paid is included in this amount:STATE_SALES_TAX:\
+ \ USPROVINCE_SALES_TAX: Provincial Sales Tax in\
+ \ CanadaGST: Canada, Australia, and New ZealandVAT:\
+ \ UK and EU countries
"
+ $ref: "#/components/schemas/Amount"
+ paymentDate:
+ type: "string"
+ description: "The date and time that the payment was received by the seller.\
+ \ This field will not be returned if buyer has yet to pay for the order.\
+ \ This timestamp is in ISO 8601 format, which uses the 24-hour Universal\
+ \ Coordinated Time (UTC) clock.
Format: [YYYY]-[MM]-[DD]T[hh]:[mm]:[ss].[sss]Z\
+ \
Example: 2015-08-04T19:09:02.768Z"
+ paymentHolds:
+ type: "array"
+ description: "This container is only returned if eBay is temporarily holding\
+ \ the seller's funds for the order. If a payment hold has been placed\
+ \ on the order, this container includes the reason for the payment hold,\
+ \ the expected release date of the funds into the seller's account, the\
+ \ current state of the hold, and as soon as the payment hold has been\
+ \ released, the actual release date."
+ items:
+ $ref: "#/components/schemas/PaymentHold"
+ paymentMethod:
+ type: "string"
+ description: "The payment method used to pay for the order. See the PaymentMethodTypeEnum\
+ \ type for more information on the payment methods. For implementation\
+ \ help, refer to eBay\
+ \ API documentation"
+ paymentReferenceId:
+ type: "string"
+ description: "This field is only returned if payment has been made by the\
+ \ buyer, and the paymentMethod is ESCROW.\
+ \ This field contains a special ID for ESCROW."
+ paymentStatus:
+ type: "string"
+ description: "The enumeration value returned in this field indicates the\
+ \ status of the payment for the order. See the PaymentStatusEnum\
+ \ type definition for more information on the possible payment states.\
+ \ For implementation help, refer to eBay\
+ \ API documentation"
+ description: "This type is used to provide details about the seller payments\
+ \ for an order."
+ PaymentDispute:
+ type: "object"
+ properties:
+ amount:
+ description: "This container shows the dollar value associated with the\
+ \ payment dispute in the currency used by the seller's marketplace."
+ $ref: "#/components/schemas/SimpleAmount"
+ availableChoices:
+ type: "array"
+ description: "The value(s) returned in this array indicate the choices that\
+ \ the seller has when responding to the payment dispute. Once the seller\
+ \ has responded to the payment dispute, this field will no longer be shown,\
+ \ and instead, the sellerResponse field will show the\
+ \ decision that the seller made."
+ items:
+ type: "string"
+ description: " For implementation help, refer to eBay\
+ \ API documentation"
+ buyerProvided:
+ description: "This container is returned if the buyer is returning one or\
+ \ more line items in an order that is associated with the payment dispute,\
+ \ and that buyer has provided return shipping tracking information and/or\
+ \ a note about the return."
+ $ref: "#/components/schemas/InfoFromBuyer"
+ buyerUsername:
+ type: "string"
+ description: "This is the eBay user ID of the buyer that initiated the payment\
+ \ dispute."
+ closedDate:
+ type: "string"
+ description: "The timestamp in this field shows the date/time when the payment\
+ \ dispute was closed, so this field is only returned for payment disputes\
+ \ in the CLOSED state.
The timestamps returned here\
+ \ use the ISO-8601 24-hour date and time format, and the time zone used\
+ \ is Universal Coordinated Time (UTC), also known as Greenwich Mean Time\
+ \ (GMT), or Zulu. The ISO-8601 format looks like this: yyyy-MM-ddThh:mm.ss.sssZ.\
+ \ An example would be 2019-08-04T19:09:02.768Z."
+ evidence:
+ type: "array"
+ description: "This container shows any evidence that has been provided by\
+ \ the seller to contest the payment dispute. Evidence may include shipment\
+ \ tracking information, proof of authentication documentation, image(s)\
+ \ to proof that an item is as described, or financial documentation/invoice.
This\
+ \ container is only returned if the seller has provided at least one document\
+ \ used as evidence against the payment dispute."
+ items:
+ $ref: "#/components/schemas/DisputeEvidence"
+ evidenceRequests:
+ type: "array"
+ description: "This container is returned if one or more evidence documents\
+ \ are being requested from the seller."
+ items:
+ $ref: "#/components/schemas/EvidenceRequest"
+ lineItems:
+ type: "array"
+ description: "This array is used to identify one or more order line items\
+ \ associated with the payment dispute. There will always be at least one\
+ \ itemId/lineItemId pair returned in this array."
+ items:
+ $ref: "#/components/schemas/OrderLineItems"
+ monetaryTransactions:
+ type: "array"
+ description: "This array provide details about one or more monetary transactions\
+ \ that occur as part of a payment dispute. This array is only returned\
+ \ once one or more monetary transacations occur with a payment dispute."
+ items:
+ $ref: "#/components/schemas/MonetaryTransaction"
+ note:
+ type: "string"
+ description: "This field shows information that the seller provides about\
+ \ the dispute, such as the basis for the dispute, any relevant evidence,\
+ \ tracking numbers, and so forth.
This field is limited to 1000\
+ \ characters."
+ openDate:
+ type: "string"
+ description: "The timestamp in this field shows the date/time when the payment\
+ \ dispute was opened. This field is returned for payment disputes in all\
+ \ states.
The timestamps returned here use the ISO-8601 24-hour\
+ \ date and time format, and the time zone used is Universal Coordinated\
+ \ Time (UTC), also known as Greenwich Mean Time (GMT), or Zulu. The ISO-8601\
+ \ format looks like this: yyyy-MM-ddThh:mm.ss.sssZ. An example\
+ \ would be 2019-08-04T19:09:02.768Z."
+ orderId:
+ type: "string"
+ description: "This is the unique identifier of the order involved in the\
+ \ payment dispute."
+ paymentDisputeId:
+ type: "string"
+ description: "This is the unique identifier of the payment dispute. This\
+ \ is the same identifier that is passed in to the call URI. This identifier\
+ \ is automatically created by eBay once the payment dispute comes into\
+ \ the eBay system."
+ paymentDisputeStatus:
+ type: "string"
+ description: "The enumeration value in this field gives the current status\
+ \ of the payment dispute. The status of a payment dispute partially determines\
+ \ other fields that are returned in the response. For implementation help,\
+ \ refer to eBay\
+ \ API documentation"
+ reason:
+ type: "string"
+ description: "The enumeration value in this field gives the reason why the\
+ \ buyer initiated the payment dispute. See DisputeReasonEnum\
+ \ type for a description of the supported reasons that buyers can give\
+ \ for initiating a payment dispute. For implementation help, refer to\
+ \ eBay\
+ \ API documentation"
+ resolution:
+ description: "This container gives details about a payment dispute that\
+ \ has been resolved. This container is only returned for resolved/closed\
+ \ payment disputes."
+ $ref: "#/components/schemas/PaymentDisputeOutcomeDetail"
+ respondByDate:
+ type: "string"
+ description: "The timestamp in this field shows the date/time when the seller\
+ \ must response to a payment dispute, so this field is only returned for\
+ \ payment disputes in the ACTION_NEEDED state. For payment\
+ \ disputes that currently require action by the seller, that same seller\
+ \ should look at the availableChoices array to see the\
+ \ available actions.
The timestamps returned here use the ISO-8601\
+ \ 24-hour date and time format, and the time zone used is Universal Coordinated\
+ \ Time (UTC), also known as Greenwich Mean Time (GMT), or Zulu. The ISO-8601\
+ \ format looks like this: yyyy-MM-ddThh:mm.ss.sssZ. An example\
+ \ would be 2019-08-04T19:09:02.768Z."
+ returnAddress:
+ description: "This container gives the address where the order will be returned\
+ \ to. This container is returned if the seller is accepting the payment\
+ \ dispute and will issue a refund to the buyer once the item is returned\
+ \ to this address."
+ $ref: "#/components/schemas/ReturnAddress"
+ revision:
+ type: "integer"
+ description: "This integer value indicates the revision number of the payment\
+ \ dispute. Each time an action is taken against a payment dispute, this\
+ \ integer value increases by 1."
+ format: "int32"
+ sellerResponse:
+ type: "string"
+ description: "The enumeration value returned in this field indicates how\
+ \ the seller has responded to the payment dispute. The seller has the\
+ \ option of accepting the payment dispute and agreeing to issue a refund,\
+ \ accepting the payment dispute and agreeing to issue a refund as long\
+ \ as the buyer returns the item, or contesting the payment dispute. This\
+ \ field is returned as soon as the seller makes an initial decision on\
+ \ the payment dispute. For implementation help, refer to eBay\
+ \ API documentation"
+ description: "This type is used by the base response of the getPaymentDispute\
+ \ method. The getPaymentDispute method retrieves detailed\
+ \ information on a specific payment dispute."
+ PaymentDisputeActivity:
+ type: "object"
+ properties:
+ activityDate:
+ type: "string"
+ description: "The timestamp in this field shows the date/time of the payment\
+ \ dispute activity.
The timestamps returned here use the ISO-8601\
+ \ 24-hour date and time format, and the time zone used is Universal Coordinated\
+ \ Time (UTC), also known as Greenwich Mean Time (GMT), or Zulu. The ISO-8601\
+ \ format looks like this: yyyy-MM-ddThh:mm.ss.sssZ. An example\
+ \ would be 2019-08-04T19:09:02.768Z."
+ activityType:
+ type: "string"
+ description: "This enumeration value indicates the type of activity that\
+ \ occured on the payment dispute. For example, a value of DISPUTE_OPENED\
+ \ is returned when a payment disute is first created, a value indicating\
+ \ the seller's decision on the dispute, such as SELLER_CONTEST,\
+ \ is returned when seller makes a decision to accept or contest dispute,\
+ \ and a value of DISPUTE_CLOSED is returned when a payment\
+ \ disute is resolved. See ActivityEnum for an explanation\
+ \ of each of the values that may be returned here. For implementation\
+ \ help, refer to eBay\
+ \ API documentation"
+ actor:
+ type: "string"
+ description: "This enumeration value indicates the actor that performed\
+ \ the action. Possible values include the BUYER, SELLER,\
+ \ CS_AGENT (eBay customer service), or SYSTEM.\
+ \ For implementation help, refer to eBay\
+ \ API documentation"
+ description: "This type is used by each recorded activity on a payment dispute,\
+ \ from creation to resolution."
+ PaymentDisputeActivityHistory:
+ type: "object"
+ properties:
+ activity:
+ type: "array"
+ description: "This array holds all activities of a payment dispute, from\
+ \ creation to resolution. For each activity, the activity type, the actor,\
+ \ and a timestamp is shown. The getActivities response\
+ \ is dynamic, and grows with each recorded activity."
+ items:
+ $ref: "#/components/schemas/PaymentDisputeActivity"
+ description: "This type is used by the base response of the getActivities\
+ \ method, and includes a log of all activities of a payment dispute, from\
+ \ creation to resolution."
+ PaymentDisputeOutcomeDetail:
+ type: "object"
+ properties:
+ fees:
+ description: "This container will show the dollar value of any fees associated\
+ \ with the payment dispute. This container is only returned if there are\
+ \ fees associated with the payment dispute."
+ $ref: "#/components/schemas/SimpleAmount"
+ protectedAmount:
+ description: "This container shows the amount of money that the seller is\
+ \ protected against in a payment dispute under eBay's seller protection\
+ \ policy."
+ $ref: "#/components/schemas/SimpleAmount"
+ protectionStatus:
+ type: "string"
+ description: "This enumeration value indicates if the seller is fully protected,\
+ \ partially protected, or not protected by eBay for the payment dispute.\
+ \ This field is always returned once the payment dispute is resolved.\
+ \ For implementation help, refer to eBay\
+ \ API documentation"
+ reasonForClosure:
+ type: "string"
+ description: "The enumeration value returned in this field indicates the\
+ \ outcome of the payment dispute for the seller. This field is always\
+ \ returned once the payment dispute is resolved. For implementation help,\
+ \ refer to eBay\
+ \ API documentation"
+ recoupAmount:
+ description: "This container shows the dollar amount being recouped from\
+ \ the seller. This container is empty if the seller wins the payment dispute\
+ \ or if the seller is fully protected by eBay's seller protection policy."
+ $ref: "#/components/schemas/SimpleAmount"
+ totalFeeCredit:
+ description: "This container shows the amount of money in selling fee credits\
+ \ due back to the seller after a payment dispute is settled."
+ $ref: "#/components/schemas/SimpleAmount"
+ description: "This type is used by the resolution container\
+ \ that is returned for payment disputes that have been resolved."
+ PaymentDisputeSummary:
+ type: "object"
+ properties:
+ amount:
+ description: "This container shows the dollar value associated with the\
+ \ payment dispute in the currency used by the seller's marketplace. This\
+ \ container is returned for all payment disputes returned in the response."
+ $ref: "#/components/schemas/SimpleAmount"
+ buyerUsername:
+ type: "string"
+ description: "This is the buyer's eBay user ID. This field is returned for\
+ \ all payment disputes returned in the response."
+ closedDate:
+ type: "string"
+ description: "The timestamp in this field shows the date/time when the payment\
+ \ dispute was closed, so this field is only returned for payment disputes\
+ \ in the CLOSED state.
The timestamps returned here\
+ \ use the ISO-8601 24-hour date and time format, and the time zone used\
+ \ is Universal Coordinated Time (UTC), also known as Greenwich Mean Time\
+ \ (GMT), or Zulu. The ISO-8601 format looks like this: yyyy-MM-ddThh:mm.ss.sssZ.\
+ \ An example would be 2019-08-04T19:09:02.768Z."
+ openDate:
+ type: "string"
+ description: "The timestamp in this field shows the date/time when the payment\
+ \ dispute was opened. This field is returned for payment disputes in all\
+ \ states.
The timestamps returned here use the ISO-8601 24-hour\
+ \ date and time format, and the time zone used is Universal Coordinated\
+ \ Time (UTC), also known as Greenwich Mean Time (GMT), or Zulu. The ISO-8601\
+ \ format looks like this: yyyy-MM-ddThh:mm.ss.sssZ. An example\
+ \ would be 2019-08-04T19:09:02.768Z."
+ orderId:
+ type: "string"
+ description: "This is the unique identifier of the order involved in the\
+ \ payment dispute."
+ paymentDisputeId:
+ type: "string"
+ description: "This is the unique identifier of the payment dispute. This\
+ \ identifier is automatically created by eBay once the payment dispute\
+ \ comes into the eBay system. This identifier is passed in at the end\
+ \ of the getPaymentDispute call URI to retrieve a specific\
+ \ payment dispute. The getPaymentDispute method returns\
+ \ more details about a payment dispute than the getPaymentDisputeSummaries\
+ \ method."
+ paymentDisputeStatus:
+ type: "string"
+ description: "The enumeration value in this field gives the current status\
+ \ of the payment dispute. For implementation help, refer to eBay\
+ \ API documentation"
+ reason:
+ type: "string"
+ description: "The enumeration value in this field gives the reason why the\
+ \ buyer initiated the payment dispute. See DisputeReasonEnum\
+ \ type for a description of the supported reasons that buyers can give\
+ \ for initiating a payment dispute. For implementation help, refer to\
+ \ eBay\
+ \ API documentation"
+ respondByDate:
+ type: "string"
+ description: "The timestamp in this field shows the date/time when the seller\
+ \ must response to a payment dispute, so this field is only returned for\
+ \ payment disputes in the ACTION_NEEDED state. For payment\
+ \ disputes that require action by the seller, that same seller must call\
+ \ getPaymentDispute to see the next action(s) that they\
+ \ can take against the payment dispute.
The timestamps returned\
+ \ here use the ISO-8601 24-hour date and time format, and the time zone\
+ \ used is Universal Coordinated Time (UTC), also known as Greenwich Mean\
+ \ Time (GMT), or Zulu. The ISO-8601 format looks like this: yyyy-MM-ddThh:mm.ss.sssZ.\
+ \ An example would be 2019-08-04T19:09:02.768Z."
+ description: "This type is used by each payment dispute that is returned with\
+ \ the getPaymentDisputeSummaries method."
+ PaymentHold:
+ type: "object"
+ properties:
+ expectedReleaseDate:
+ type: "string"
+ description: "The date and time that the payment being held is expected\
+ \ to be released to the seller. This timestamp is in ISO 8601 format,\
+ \ which uses the 24-hour Universal Coordinated Time (UTC) clock. This\
+ \ field will be returned if known by eBay.
Format: [YYYY]-[MM]-[DD]T[hh]:[mm]:[ss].[sss]Z\
+ \
Example: 2015-08-04T19:09:02.768Z"
+ holdAmount:
+ description: "The monetary amount of the payment being held. This field\
+ \ is always returned with the paymentHolds array. "
+ $ref: "#/components/schemas/Amount"
+ holdReason:
+ type: "string"
+ description: "The reason that the payment is being held. A seller's payment\
+ \ may be held for a number of reasons, including when the seller is new,\
+ \ the seller's level is below standard, or if a return case or 'Significantly\
+ \ not as described' case is pending against the seller. This field is\
+ \ always returned with the paymentHolds array."
+ holdState:
+ type: "string"
+ description: "The current stage or condition of the hold. This field is\
+ \ always returned with the paymentHolds array.
Applicable\
+ \ values:HELDHELD_PENDINGNOT_HELDRELEASE_CONFIRMEDRELEASE_FAILEDRELEASE_PENDINGRELEASED
"
+ releaseDate:
+ type: "string"
+ description: "The date and time that the payment being held was actually\
+ \ released to the seller. This timestamp is in ISO 8601 format, which\
+ \ uses the 24-hour Universal Coordinated Time (UTC) clock. This field\
+ \ is not returned until the seller's payment is actually released into\
+ \ the seller's account.
Format: [YYYY]-[MM]-[DD]T[hh]:[mm]:[ss].[sss]Z\
+ \
Example: 2015-08-04T19:09:02.768Z"
+ sellerActionsToRelease:
+ type: "array"
+ description: "A list of one or more possible actions that the seller can\
+ \ take to expedite the release of the payment hold."
+ items:
+ $ref: "#/components/schemas/SellerActionsToRelease"
+ description: "This type contains information about a hold placed on a payment\
+ \ to a seller for an order, including the reason why the buyer's payment for\
+ \ the order is being held, the expected release date of the funds into the\
+ \ seller's account, the current state of the hold, and the actual release\
+ \ date if the payment has been released, and possible actions the seller can\
+ \ take to expedite the payout of funds into their account."
+ PaymentSummary:
+ type: "object"
+ properties:
+ payments:
+ type: "array"
+ description: "This array consists of payment information for the order,\
+ \ including payment status, payment method, payment amount, and payment\
+ \ date. This array is always returned, although some of the fields under\
+ \ this container will not be returned until payment has been made."
+ items:
+ $ref: "#/components/schemas/Payment"
+ refunds:
+ type: "array"
+ description: "This array is always returned, but is returned as an empty\
+ \ array unless the seller has submitted a partial or full refund to the\
+ \ buyer for the order. If a refund has occurred, the refund amount and\
+ \ refund date will be shown for each refund."
+ items:
+ $ref: "#/components/schemas/OrderRefund"
+ totalDueSeller:
+ description: "This is the total price that the seller receives for the entire\
+ \ order after all costs (item cost, delivery cost, taxes) are added for\
+ \ all line items, minus any discounts and/or promotions for any of the\
+ \ line items. Note that this value is subject to change before payment\
+ \ is actually made by the buyer (if the paymentStatus\
+ \ value was PENDING or FAILED), or if a partial\
+ \ or full refund occurs with the order.
Note: For orders that are subject to 'eBay Collect and\
+ \ Remit' tax, the 'Collect and Remit' tax amount for the order will be\
+ \ included in this totalDueSeller value.
To determine\
+ \ if 'Collect and Remit' taxes were added into this totalDueSeller\
+ \ value, the user can check for the corresponding lineItems.ebayCollectAndRemitTaxes\
+ \ and the lineItems.taxes containers in the response.\
+ \ If both of these containers appear for one or more line items in the\
+ \ response with the following taxType values, the 'Collect\
+ \ and Remit' tax amount that the buyer paid is included in this amount:STATE_SALES_TAX:\
+ \ USPROVINCE_SALES_TAX: Provincial Sales Tax in\
+ \ CanadaGST: Canada, Australia, and New ZealandVAT:\
+ \ VAT collected for UK and EU countries
"
+ $ref: "#/components/schemas/Amount"
+ description: "This type contains information about the various monetary exchanges\
+ \ that apply to the net balance due for the order."
+ Phone:
+ type: "object"
+ properties:
+ countryCode:
+ type: "string"
+ description: " The two-letter, ISO 3166 code associated with the seller's\
+ \ phone number. This field is needed if the buyer is located in a different\
+ \ country than the seller. It is also OK to provide if the buyer and seller\
+ \ are both located in the same country
See CountryCodeEnum for a list of supported values."
+ number:
+ type: "string"
+ description: "The seller's primary phone number associated with the return\
+ \ address. When this number is provided in a contestPaymentDispute\
+ \ or contestPaymentDispute method, it is provided as\
+ \ one continuous numeric string, including the area code. So, if the phone\
+ \ number's area code was '408', a number in this field may look something\
+ \ like this:
\"number\" : \"4088084356\"
If\
+ \ the buyer is located in a different country than the seller, the seller's\
+ \ country code will need to be specified in the countryCode\
+ \ field."
+ description: "This type is used by the returnAddress
This\
+ \ field is always returned with the pickupStep container."
+ description: "This type is used to indicate the merchant's store where the buyer\
+ \ will pickup their In-Store Pickup order. The pickupStep container\
+ \ is only returned for In-Store Pickup orders. The In-Store Pickup feature\
+ \ is supported in the US, Canada, UK, Germany, and Australia marketplaces."
+ PostSaleAuthenticationProgram:
+ type: "object"
+ properties:
+ outcomeReason:
+ type: "string"
+ description: "This field indicates the result of the authenticity verification\
+ \ inspection on an order line item. This field is not returned when the\
+ \ status value of the order line item is PENDING or PASSED.\
+ \ The possible values returned here are NOT_AUTHENTIC, NOT_AS_DESCRIBED,\
+ \ CUSTOMIZED, MISCATEGORIZED, or NOT_AUTHENTIC_NO_RETURN.\
+ \ For implementation help, refer to eBay\
+ \ API documentation"
+ status:
+ type: "string"
+ description: "The value in this field indicates whether the order line item\
+ \ has passed or failed the authenticity verification inspection, or if\
+ \ the inspection and/or results are still pending. The possible values\
+ \ returned here are PENDING, PASSED, FAILED,\
+ \ or PASSED_WITH_EXCEPTION. For implementation help, refer\
+ \ to eBay\
+ \ API documentation"
+ description: "This type is used to provide the status and outcome of an order\
+ \ line item going through the Authenticity Guarantee verification process."
+ PricingSummary:
+ type: "object"
+ properties:
+ adjustment:
+ description: "This container shows the total amount of any adjustments that\
+ \ were applied to the cost of the item(s) in the order. This amount does\
+ \ not include shipping, discounts, fixed fees, or taxes.
This container\
+ \ is only returned if price adjustments were made to the order after the\
+ \ initial transaction/commitment to buy occurred."
+ $ref: "#/components/schemas/Amount"
+ deliveryCost:
+ description: "This container shows the total cost of delivering the order\
+ \ to the buyer, before any shipping/delivery discount is applied."
+ $ref: "#/components/schemas/Amount"
+ deliveryDiscount:
+ description: "This container shows the total amount of delivery discounts\
+ \ (including shipping discounts) that apply to the order. This should\
+ \ be a negative real number.
This container is only returned if\
+ \ delivery discounts are being applied to the order."
+ $ref: "#/components/schemas/Amount"
+ fee:
+ description: "This container shows the total amount of any special fees\
+ \ applied to the order, such as a tire recycling fee or an electronic\
+ \ waste fee.
This container is returned if special fees are being\
+ \ applied to the order and if the fieldGroups is set to TAX_BREAKDOWN."
+ $ref: "#/components/schemas/Amount"
+ priceDiscount:
+ description: "This container shows the total amount of all item price discounts\
+ \ (including promotions) that apply to the order and reduce its cost to\
+ \ the buyer. This should be a negative real number.
This container\
+ \ is only returned if special discounts are being applied to the order."
+ $ref: "#/components/schemas/Amount"
+ priceSubtotal:
+ description: "This container shows the cumulative costs of of all units\
+ \ of all line items in the order, before any discount is applied."
+ $ref: "#/components/schemas/Amount"
+ tax:
+ description: "This container shows the total amount of tax for the order.\
+ \ To calculate the tax percentage rate, divide this value by the value\
+ \ of the total field.
This container is only returned if\
+ \ any type of tax (sales tax, tax on shipping, tax on handling, import\
+ \ tax, etc.) is applied to the order."
+ $ref: "#/components/schemas/Amount"
+ total:
+ description: "The total cost of the order after adding all line item costs,\
+ \ delivery costs, sales tax, and special fees, and then subtracting all\
+ \ special discounts and price adjustments.
Note: For orders that are subject to 'eBay Collect and\
+ \ Remit' tax, the 'Collect and Remit' tax amount for the order will be\
+ \ included in this total value only when the fieldGroups\
+ \ query parameter is set to TAX_BREAKDOWN. If the fieldGroups\
+ \ query parameter is not set to TAX_BREAKDOWN, 'Collect and\
+ \ Remit' will not be added into this total value.
To\
+ \ determine if 'Collect and Remit' taxes were added into this total\
+ \ value, the user can check for the corresponding lineItems.ebayCollectAndRemitTaxes\
+ \ and the lineItems.taxes containers in the response.\
+ \ If both of these containers appear for one or more line items in the\
+ \ response with the following taxType values, the 'Collect\
+ \ and Remit' tax amount that the buyer paid is included in this amount:STATE_SALES_TAX:\
+ \ US state-mandated sales taxPROVINCE_SALES_TAX:\
+ \ Provincial Sales Tax in CanadaGST: 'Good and Services'\
+ \ tax in Canada, Australia, and New ZealandVAT:\
+ \ VAT collected for UK and EU countries
"
+ $ref: "#/components/schemas/Amount"
+ description: "This type contains a summary of cumulative costs and charges for\
+ \ all line items of an order, including item price, price adjustments, sales\
+ \ taxes, delivery costs, and order discounts."
+ Program:
+ type: "object"
+ properties:
+ authenticityVerification:
+ description: "This field is returned when the third-party authenticator\
+ \ performs the authentication verification inspection on the order line\
+ \ item. Different values will be returned based on whether the item passed\
+ \ or failed the authentication verification inspection."
+ $ref: "#/components/schemas/PostSaleAuthenticationProgram"
+ ebayShipping:
+ description: "This container is returned only if the order is an eBay shipping\
+ \ order. It consists of a field that indicates the provider of a shipping\
+ \ label for this order."
+ $ref: "#/components/schemas/EbayShipping"
+ ebayVault:
+ description: "This field provides information about the eBay vault program\
+ \ that has been selected for an order. This is returned only for those\
+ \ items that are eligible for the eBay Vault Program."
+ $ref: "#/components/schemas/EbayVaultProgram"
+ ebayInternationalShipping:
+ description: "This container is returned if the order is being fulfilled\
+ \ through eBay International Shipping."
+ $ref: "#/components/schemas/EbayInternationalShipping"
+ fulfillmentProgram:
+ description: "This field provides details about an order line item being\
+ \ handled by eBay fulfillment. It is only returned for paid orders being\
+ \ fulfilled by eBay or an eBay fulfillment partner."
+ $ref: "#/components/schemas/EbayFulfillmentProgram"
+ description: "This type is returned for order line items eligible for the Authenticity\
+ \ Guarantee service and/or for order line items fulfilled by the eBay Fulfillment\
+ \ program or eBay shipping."
+ Property:
+ type: "object"
+ properties:
+ propertyDisplayName:
+ type: "string"
+ description: "The display name of the motor vehicle aspect. This is the\
+ \ localized name of the compatibility property."
+ propertyName:
+ type: "string"
+ description: "The name of the motor vehicle aspect.
For example,\
+ \ typical vehicle property names are 'Make', 'Model', 'Year', 'Engine',\
+ \ and 'Trim', but will vary based on the eBay marketplace and the eBay\
+ \ category."
+ propertyValue:
+ type: "string"
+ description: "The value of the property specified in the propertyName\
+ \ field.
For example, if the propertyName is Make,\
+ \ then the propertyValue will be the specific make of the vehicle,\
+ \ such as Toyota."
+ description: "This type defines the property name and value for an order."
+ Refund:
+ type: "object"
+ properties:
+ refundId:
+ type: "string"
+ description: "The unique identifier of the order refund. This value is returned\
+ \ unless the refund operation fails (refundStatus value shows FAILED).\
+ \ This identifier can be used to track the status of the refund through\
+ \ a getOrder or getOrders call. For order-level refunds,\
+ \ check the paymentSummary.refunds.refundId field in the getOrder/getOrders\
+ \ response, and for line item level refunds, check the lineItems.refunds.refundId\
+ \ field(s) in the getOrder/getOrders response."
+ refundStatus:
+ type: "string"
+ description: "The value returned in this field indicates the success or\
+ \ failure of the refund operation. A successful issueRefund operation\
+ \ should result in a value of PENDING. A failed issueRefund\
+ \ operation should result in a value of FAILED, and an HTTP\
+ \ status code and/or and API error code may also get returned to possibly\
+ \ indicate the issue.
The refunds issued through this method are\
+ \ processed asynchronously, so the refund will not show as 'Refunded'\
+ \ right away. A seller will have to make a subsequent getOrder call to check the status of the refund.\
+ \ The status of an order refund can be found in the paymentSummary.refunds.refundStatus field of the\
+ \ getOrder response. For implementation help, refer\
+ \ to eBay\
+ \ API documentation"
+ description: "This is the base type of the issueRefund response payload.\
+ \ As long as the issueRefund method does not trigger an error, a response\
+ \ payload will be returned."
+ RefundItem:
+ type: "object"
+ properties:
+ refundAmount:
+ description: "This container is used to specify the amount of the refund\
+ \ for the corresponding order line item. If a seller wants to issue a\
+ \ refund for an entire order, the seller would use the orderLevelRefundAmount\
+ \ container instead."
+ $ref: "#/components/schemas/SimpleAmount"
+ lineItemId:
+ type: "string"
+ description: "The unique identifier of an order line item. This identifier\
+ \ is created once a buyer purchases a 'Buy It Now' item or if an auction\
+ \ listing ends with a winning bidder.
Either this field or the\
+ \ legacyReference container is needed to identify an individual\
+ \ order line item that will receive a refund.
This value is returned\
+ \ using the getOrders method."
+ legacyReference:
+ description: "This container is needed if the seller is issuing a refund\
+ \ for an individual order line item, and wishes to use an item ID/transaction\
+ \ ID pair to identify the order line item.
Either this container\
+ \ or the lineItemId field is needed to identify an individual order\
+ \ line item that will receive a refund.
Note: This container should only be used if a\
+ \ seller is using the GetOrders method of the Trading API."
+ $ref: "#/components/schemas/LegacyReference"
+ description: "This type is used if the seller is issuing a refund for one or\
+ \ more individual order line items in a multiple line item order. Otherwise,\
+ \ the seller just uses the orderLevelRefundAmount container to specify\
+ \ the amount of the refund for the entire order."
+ ReturnAddress:
+ type: "object"
+ properties:
+ addressLine1:
+ type: "string"
+ description: "The first line of the street address."
+ addressLine2:
+ type: "string"
+ description: "The second line of the street address. This line is not always\
+ \ necessarily, but is often used for apartment number or suite number,\
+ \ or other relevant information that can not fit on the first line."
+ city:
+ type: "string"
+ description: "The city of the return address."
+ country:
+ type: "string"
+ description: "The country's two-letter, ISO 3166-1 country code. See the\
+ \ enumeration type for a country's value. For implementation help, refer\
+ \ to eBay\
+ \ API documentation"
+ county:
+ type: "string"
+ description: "The county of the return address. Counties are not applicable\
+ \ to all countries."
+ fullName:
+ type: "string"
+ description: "The full name of return address owner."
+ postalCode:
+ type: "string"
+ description: "The postal code of the return address."
+ primaryPhone:
+ description: "This container shows the seller's primary phone number associated\
+ \ with the return address."
+ $ref: "#/components/schemas/Phone"
+ stateOrProvince:
+ type: "string"
+ description: "The state or province of the return address."
+ description: "This type is used by the payment dispute methods, and is relevant\
+ \ if the buyer will be returning the item to the seller."
+ SellerActionsToRelease:
+ type: "object"
+ properties:
+ sellerActionToRelease:
+ type: "string"
+ description: "A possible action that the seller can take to expedite the\
+ \ release of a payment hold. A sellerActionToRelease\
+ \ field is returned for each possible action that a seller may take. Possible\
+ \ actions may include providing shipping/tracking information, issuing\
+ \ a refund, providing refund information, contacting customer support,\
+ \ etc."
+ description: "This type is used to state possible action(s) that a seller can\
+ \ take to release a payment hold placed against an order."
+ ShippingFulfillment:
+ type: "object"
+ properties:
+ fulfillmentId:
+ type: "string"
+ description: "The unique identifier of the fulfillment; for example, 9405509699937003457459.\
+ \ This eBay-generated value is created with a successful createShippingFulfillment\
+ \ call."
+ lineItems:
+ type: "array"
+ description: "This array contains a list of one or more line items (and\
+ \ purchased quantity) to which the fulfillment applies."
+ items:
+ $ref: "#/components/schemas/LineItemReference"
+ shipmentTrackingNumber:
+ type: "string"
+ description: "The tracking number provided by the shipping carrier for the\
+ \ package shipped in this fulfillment. This field is returned if available."
+ shippedDate:
+ type: "string"
+ description: "The date and time that the fulfillment package was shipped.\
+ \ This timestamp is in ISO 8601 format, which uses the 24-hour Universal\
+ \ Coordinated Time (UTC) clock. This field should only be returned if\
+ \ the package has been shipped.
Format: [YYYY]-[MM]-[DD]T[hh]:[mm]:[ss].[sss]Z\
+ \
Example: 2015-08-04T19:09:02.768Z"
+ shippingCarrierCode:
+ type: "string"
+ description: "The eBay code identifying the shipping carrier for this fulfillment.\
+ \ This field is returned if available.
Note: The Trading API's ShippingCarrierCodeType\
+ \ enumeration type contains the most current list of eBay shipping carrier\
+ \ codes and the countries served by each carrier. See ShippingCarrierCodeType."
+ description: "This type contains the complete details of an existing fulfillment\
+ \ for an order."
+ ShippingFulfillmentDetails:
+ type: "object"
+ properties:
+ lineItems:
+ type: "array"
+ description: "This array contains a list of or more line items and the quantity\
+ \ that will be shipped in the same package."
+ items:
+ $ref: "#/components/schemas/LineItemReference"
+ shippedDate:
+ type: "string"
+ description: "This is the actual date and time that the fulfillment package\
+ \ was shipped. This timestamp is in ISO 8601 format, which uses the 24-hour\
+ \ Universal Coordinated Time (UTC) clock. The seller should use the actual\
+ \ date/time that the package was shipped, but if this field is omitted,\
+ \ it will default to the current date/time.
Format: [YYYY]-[MM]-[DD]T[hh]:[mm]:[ss].[sss]Z\
+ \
Example: 2015-08-04T19:09:02.768Z
Default:\
+ \ The current date and time."
+ shippingCarrierCode:
+ type: "string"
+ description: "The unique identifier of the shipping carrier being used to\
+ \ ship the line item(s). Technically, the shippingCarrierCode\
+ \ and trackingNumber fields are optional, but generally\
+ \ these fields will be provided if the shipping carrier and tracking number\
+ \ are known.
Note:\
+ \ Use the Trading API's GeteBayDetails call to retrieve the latest\
+ \ shipping carrier enumeration values. When making the GeteBayDetails call, include the DetailName\
+ \ field in the request payload and set its value to ShippingCarrierDetails.\
+ \ Each valid shipping carrier enumeration value is returned in a ShippingCarrierDetails.ShippingCarrier\
+ \ field in the response payload."
+ trackingNumber:
+ type: "string"
+ description: "The tracking number provided by the shipping carrier for this\
+ \ fulfillment. The seller should be careful that this tracking number\
+ \ is accurate since the buyer will use this tracking number to track shipment,\
+ \ and eBay has no way to verify the accuracy of this number.
This\
+ \ field and the shippingCarrierCode field are mutually dependent.\
+ \ If you include one, you must also include the other.
Note: If you include trackingNumber\
+ \ (and shippingCarrierCode) in the request, the resulting fulfillment's\
+ \ ID (returned in the HTTP location response header) is the tracking number.\
+ \ If you do not include shipment tracking information, the resulting fulfillment\
+ \ ID will default to an arbitrary number such as 999.
Note: Only alphanumeric characters\
+ \ are supported for shipment tracking numbers. Spaces, hyphens, and all\
+ \ other special characters are not supported. Do not include a space in\
+ \ the tracking number even if a space appears in the tracking number on\
+ \ the shipping label."
+ description: "This type contains the details for creating a fulfillment for\
+ \ an order."
+ ShippingFulfillmentPagedCollection:
+ type: "object"
+ properties:
+ fulfillments:
+ type: "array"
+ description: "This array contains one or more fulfillments required for\
+ \ the order that was specified in method endpoint."
+ items:
+ $ref: "#/components/schemas/ShippingFulfillment"
+ total:
+ type: "integer"
+ description: "The total number of fulfillments in the specified order.
Note: If no fulfillments are found\
+ \ for the order, this field is returned with a value of 0."
+ format: "int32"
+ warnings:
+ type: "array"
+ description: "This array is only returned if one or more errors or warnings\
+ \ occur with the call request."
+ items:
+ $ref: "#/components/schemas/Error"
+ description: "This type contains the specifications for the entire collection\
+ \ of shipping fulfillments that are associated with the order specified by\
+ \ a getShippingFulfillments call. The fulfillments container\
+ \ returns an array of all the fulfillments in the collection."
+ ShippingStep:
+ type: "object"
+ properties:
+ shippingCarrierCode:
+ type: "string"
+ description: "The unique identifier of the shipping carrier being used to\
+ \ ship the line item.
Note:\
+ \ The Trading API's GeteBayDetails call can be used to retrieve\
+ \ the latest shipping carrier and shipping service option enumeration\
+ \ values."
+ shippingServiceCode:
+ type: "string"
+ description: "The unique identifier of the shipping service option being\
+ \ used to ship the line item.
Note:\
+ \ Use the Trading API's GeteBayDetails call to retrieve the latest\
+ \ shipping carrier and shipping service option enumeration values. When\
+ \ making the GeteBayDetails call, include the DetailName\
+ \ field in the request payload and set its value to ShippingServiceDetails.\
+ \ Each valid shipping service option (returned in ShippingServiceDetails.ShippingService\
+ \ field) and corresponding shipping carrier (returned in ShippingServiceDetails.ShippingCarrier\
+ \ field) is returned in response payload."
+ shipTo:
+ description: "This container consists of shipping and contact information\
+ \ about the individual or organization to whom the fulfillment package\
+ \ will be shipped.
Note:\
+ \ When FulfillmentInstructionsType is FULFILLED_BY_EBAY,\
+ \ there will be no shipTo address displayed.
Note: For Digitally Delivered Goods (DDG),\
+ \ this address is the same as the Buyer's Registration Address.
Note: For a Global Shipping Program\
+ \ shipment, this is the address of the international shipping provider's\
+ \ domestic warehouse. The international shipping provider is responsible\
+ \ for delivery to the final destination address. For more information,\
+ \ see Addressing Shipments."
+ $ref: "#/components/schemas/ExtendedContact"
+ shipToReferenceId:
+ type: "string"
+ description: "This is the unique identifer of the Global Shipping Program\
+ \ (GSP) shipment. This field is only returned if the line item is being\
+ \ shipped via GSP (the value of the fulfillmentStartInstructions.ebaySupportedFulfillment\
+ \ field will be true. The international shipping provider\
+ \ uses the shipToReferenceId value as the primary reference number\
+ \ to retrieve the relevant details about the buyer, the order, and the\
+ \ fulfillment, so the shipment can be completed.
Sellers must\
+ \ include this value on the shipping label immediately above the street\
+ \ address of the international shipping provider.
Example: \"\
+ Reference #1234567890123456\"
Note:\
+ \ This value is the same as the ShipToAddress.ReferenceID value\
+ \ returned by the Trading API's GetOrders call."
+ description: "This type contains shipping information for a fulfillment, including\
+ \ the shipping carrier, the shipping service option, the shipment destination,\
+ \ and the Global Shipping Program reference ID."
+ SimpleAmount:
+ type: "object"
+ properties:
+ currency:
+ type: "string"
+ description: "A three-letter ISO 4217 code (such as USD for\
+ \ US site) that indicates the currency of the amount in the value\
+ \ field. Both the value and currency\
+ \ fields are always returned with the amount container.\
+ \ For implementation help, refer to eBay\
+ \ API documentation"
+ value:
+ type: "string"
+ description: "The monetary amount of the payment dispute. Both the value\
+ \ and currency fields are always returned with the amount\
+ \ container."
+ description: "This type defines the monetary value of the payment dispute, and\
+ \ the currency used."
+ Tax:
+ type: "object"
+ properties:
+ amount:
+ description: "The monetary amount of the tax. The taxes\
+ \ array is always returned for each line item in the order, but this amount\
+ \ will only be returned when the line item is subject to any type of sales\
+ \ tax. "
+ $ref: "#/components/schemas/Amount"
+ taxType:
+ type: "string"
+ description: "Tax type. This field is only available when fieldGroups\
+ \ is set to TAX_BREAKDOWN. If the order has fees, a breakdown\
+ \ of the fees is also provided. For implementation help, refer to eBay\
+ \ API documentation"
+ description: "This type contains information about any sales tax applied to\
+ \ a line item."
+ TaxAddress:
+ type: "object"
+ properties:
+ city:
+ type: "string"
+ description: "The city name that can be used by sellers for tax purpose."
+ countryCode:
+ type: "string"
+ description: "The country code that can be used by sellers for tax purpose,\
+ \ represented as a two-letter ISO 3166-1 alpha-2 country code. For example,\
+ \ US represents the United States, and DE\
+ \ represents Germany. For implementation help, refer to eBay\
+ \ API documentation"
+ postalCode:
+ type: "string"
+ description: "The postal code that can be used by sellers for tax purpose.\
+ \ Usually referred to as Zip codes in the US."
+ stateOrProvince:
+ type: "string"
+ description: "The state name that can be used by sellers for tax purpose."
+ description: "This container consists of address information that can be used\
+ \ by sellers for tax purpose."
+ TaxIdentifier:
+ type: "object"
+ properties:
+ taxpayerId:
+ type: "string"
+ description: "This value is the unique tax ID associated with the buyer.\
+ \ The type of tax identification is shown in the taxIdentifierType\
+ \ field."
+ taxIdentifierType:
+ type: "string"
+ description: "This enumeration value indicates the type of tax identification\
+ \ being used for the buyer. The different tax types are defined in the\
+ \ TaxIdentifierTypeEnum type. For implementation help,\
+ \ refer to eBay\
+ \ API documentation"
+ issuingCountry:
+ type: "string"
+ description: "This two-letter code indicates the country that issued the\
+ \ buyer's tax ID. The country that the two-letter code represents can\
+ \ be found in the CountryCodeEnum type, or in the ISO 3166\
+ \ standard. For implementation help, refer to eBay\
+ \ API documentation"
+ description: "This type is used by the taxIdentifier container\
+ \ that is returned in getOrder. The taxIdentifier\
+ \ container consists of taxpayer identification information for buyers from\
+ \ Italy, Spain, or Guatemala. It is currently only returned for orders occurring\
+ \ on the eBay Italy or eBay Spain marketplaces.
Note: Currently, the taxIdentifier container\
+ \ is only returned in getOrder and not in getOrders.\
+ \ So, if a seller wanted to view a buyer's tax information for a particular\
+ \ order returned in getOrders, that seller would need to\
+ \ use the orderId value for that particular order, and then\
+ \ run a getOrder call against that order ID. "
+ TrackingInfo:
+ type: "object"
+ properties:
+ shipmentTrackingNumber:
+ type: "string"
+ description: "This string value represents the shipment tracking number\
+ \ of the package."
+ shippingCarrierCode:
+ type: "string"
+ description: "This string value represents the shipping carrier used to\
+ \ ship the package."
+ description: "This type is used for seller provided shipment tracking information."
+ UpdateEvidencePaymentDisputeRequest:
+ type: "object"
+ properties:
+ evidenceId:
+ type: "string"
+ description: "The unique identifier of the evidence set that is being updated\
+ \ with new evidence files.
This ID is returned under the evidence\
+ \ array in the getPaymentDispute response."
+ evidenceType:
+ type: "string"
+ description: "This field is used to indicate the type of evidence being\
+ \ provided through one or more evidence files. All evidence files (if\
+ \ more than one) should be associated with the evidence type passed in\
+ \ this field.
See the EvidenceTypeEnum type for the supported evidence\
+ \ types. For implementation help, refer to eBay\
+ \ API documentation"
+ files:
+ type: "array"
+ description: "This array is used to specify one or more evidence files that\
+ \ will be added to the evidence set associated with a payment dispute.\
+ \ At least one evidence file must be specified in the files\
+ \ array.
The unique identifier of an evidence file is returned\
+ \ in the response payload of the uploadEvidence method."
+ items:
+ $ref: "#/components/schemas/FileEvidence"
+ lineItems:
+ type: "array"
+ description: "This required array identifies the order line item(s) for\
+ \ which the evidence file(s) will be applicable.
These values\
+ \ are returned under the evidenceRequests.lineItems array\
+ \ in the getPaymentDispute response.
Note: Both the itemId and lineItemID\
+ \ fields are needed to identify each order line item."
+ items:
+ $ref: "#/components/schemas/OrderLineItems"
+ description: "This type is used by the request payload of the updateEvidence\
+ \ method. The updateEvidence method is used to update an\
+ \ existing evidence set against a payment dispute with one or more evidence\
+ \ files."
+ securitySchemes:
+ api_auth:
+ type: "oauth2"
+ description: "The security definitions for this API. Please check individual\
+ \ operations for applicable scopes."
+ flows:
+ authorizationCode:
+ authorizationUrl: "https://auth.ebay.com/oauth2/authorize"
+ tokenUrl: "https://api.ebay.com/identity/v1/oauth2/token"
+ scopes:
+ https://api.ebay.com/oauth/api_scope/sell.fulfillment: "View and manage\
+ \ your order fulfillments"
+ https://api.ebay.com/oauth/api_scope/sell.finances: "View and manage your\
+ \ payment and order information to display this information to you and\
+ \ allow you to initiate refunds using the third party application"
+ https://api.ebay.com/oauth/api_scope/sell.payment.dispute: "View and manage\
+ \ disputes and related details (including payment and order information)."
+ https://api.ebay.com/oauth/api_scope/sell.fulfillment.readonly: "View\
+ \ your order fulfillments"
diff --git a/sell_inventory_v1_oas3.yaml b/sell_inventory_v1_oas3.yaml
new file mode 100644
index 0000000..17d3cfd
--- /dev/null
+++ b/sell_inventory_v1_oas3.yaml
@@ -0,0 +1,11446 @@
+---
+openapi: "3.0.0"
+info:
+ title: "Inventory API"
+ description: "The Inventory API is used to create and manage inventory, and then\
+ \ to publish and manage this inventory on an eBay marketplace. There are also\
+ \ methods in this API that will convert eligible, active eBay listings into the\
+ \ Inventory API model."
+ contact:
+ name: "eBay Inc,"
+ license:
+ name: "eBay API License Agreement"
+ url: "https://developer.ebay.com/join/api-license-agreement"
+ version: "1.18.4"
+servers:
+- url: "https://api.ebay.com{basePath}"
+ description: "Production"
+ variables:
+ basePath:
+ default: "/sell/inventory/v1"
+paths:
+ /bulk_create_or_replace_inventory_item:
+ post:
+ tags:
+ - "inventory_item"
+ description: "Note: Please note that\
+ \ any eBay listing created using the Inventory API cannot be revised or relisted\
+ \ using the Trading API calls.
Note:\
+ \ Each listing can be revised up to 250 times in one calendar day. If this\
+ \ revision threshold is reached, the seller will be blocked from revising\
+ \ the item until the next calendar day.
This call can be used to\
+ \ create and/or update up to 25 new inventory item records. It is up to sellers\
+ \ whether they want to create a complete inventory item records right from\
+ \ the start, or sellers can provide only some information with the initial\
+ \ bulkCreateOrReplaceInventoryItem call, and then make one\
+ \ or more additional bulkCreateOrReplaceInventoryItem calls\
+ \ to complete all required fields for the inventory item records and prepare\
+ \ for publishing. Upon first creating inventory item records, only the SKU\
+ \ values are required.
Important!Publish offer note: Fields\
+ \ may be optional or conditionally required when calling this method, but\
+ \ become required when publishing the offer to create an active listing. For\
+ \ this method, see Inventory item fields for a list of fields required\
+ \ to publish an offer.
Note:\
+ \ In addition to the authorization header, which is required\
+ \ for all eBay REST API calls, this call also requires the Content-Language\
+ \ and Content-Type headers. See the HTTP request headers section for more information.
In the\
+ \ case of updating existing inventory item records, the bulkCreateOrReplaceInventoryItem\
+ \ call will do a complete replacement of the existing inventory item records,\
+ \ so all fields that are currently defined for the inventory item record are\
+ \ required in that update action, regardless of whether their values changed.\
+ \ So, when replacing/updating an inventory item record, it is advised that\
+ \ the seller run a 'Get' call to retrieve the full details of the inventory\
+ \ item records and see all of its current values/settings before attempting\
+ \ to update the records. Any changes that are made to inventory item records\
+ \ that are part of one or more active eBay listings, a successful call will\
+ \ automatically update these active listings.
The key information\
+ \ that is set with the bulkCreateOrReplaceInventoryItem call\
+ \ include: - Seller-defined SKU value for the product. Each seller\
+ \ product, including products within an item inventory group, must have their\
+ \ own SKU value.
- Condition of the item
- Product details,\
+ \ including any product identifier(s), such as a UPC, ISBN, EAN, or Brand/Manufacturer\
+ \ Part Number pair, a product description, a product title, product/item aspects,\
+ \ and links to images. eBay will use any supplied eBay Product ID (ePID) or\
+ \ a GTIN (UPC, ISBN, or EAN) and attempt to match those identifiers to a product\
+ \ in the eBay Catalog, and if a product match is found, the product details\
+ \ for the inventory item will automatically be populated.
- Quantity\
+ \ of the inventory item that is available for purchase
- Package weight\
+ \ and dimensions, which is required if the seller will be offering calculated\
+ \ shipping options. The package weight will also be required if the seller\
+ \ will be providing flat-rate shipping services, but charging a weight surcharge.
\
+ \
For those who prefer to create or update a single inventory item\
+ \ record, the createOrReplaceInventoryItem method can be\
+ \ used.
"
+ operationId: "bulkCreateOrReplaceInventoryItem"
+ parameters:
+ - name: "Content-Type"
+ in: "header"
+ description: "This header indicates the format of the request body provided\
+ \ by the client. Its value should be set to application/json.
For\
+ \ more information, refer to HTTP request headers."
+ required: true
+ schema:
+ type: "string"
+ - name: "Content-Language"
+ in: "header"
+ description: "This header sets the natural language that will be used in the\
+ \ field values of the request payload. For example, the value passed in\
+ \ this header should be en-US for English or de-DE\
+ \ for German.
For more information on the Content-Language header,\
+ \ refer to HTTP request headers."
+ required: true
+ schema:
+ type: "string"
+ requestBody:
+ description: "Details of the inventories with sku and locale"
+ content:
+ application/json:
+ schema:
+ description: "Details of the inventories with sku and locale"
+ $ref: "#/components/schemas/BulkInventoryItem"
+ required: true
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/BulkInventoryItemResponse"
+ x-response-codes:
+ errors:
+ 25504:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "{additionalInfo}"
+ 25124:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This P&A listing requires a minimum 30-day return period\
+ \ and seller-paid return shipping. eBay automatically updated the\
+ \ listing's return policy settings to meet these requirements. Sellers\
+ \ using business policies should update their return business policy\
+ \ for future P&A listings. To learn more, visit https://www.ebay.com/sellercenter/news/2025-june/parts-accessories-return-policy."
+ 25096:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This listing is on hold due to a policy violation. You\
+ \ may revise it to resolve the situation. Please check your email\
+ \ for more information."
+ 25401:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "Invalid listing options removed. {additionalInfo}"
+ 25753:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "listingStartDate is in the past or the offer is live.\
+ \ Value is not updated on the listing."
+ 25402:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "System warning. {additionalInfo}"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 25728:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "InventoryItems should be unique in the request."
+ 25601:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid attribute. {fieldName}"
+ 25026:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Selling limits exceeded. {additionalInfo}"
+ 25604:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Input error. {additionalInfo}"
+ 25733:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Valid SKU and locale information are required for all\
+ \ the InventoryItems in the request."
+ 25097:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This listing is on hold due to a policy violation, and\
+ \ revisions are not possible. Please check your email for more information."
+ 25098:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{replaceable_value} transaction is not possible as the\
+ \ parent listing is on-hold. Please check your email for further\
+ \ information. "
+ 25501:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid picture. {additionalInfo}"
+ 25502:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid attribute information. {additionalInfo}"
+ 25503:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid product information. {additionalInfo}"
+ 25759:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "shipToLocationAvailability quantity value should be\
+ \ greater than or equal to auction allocation. Please provide valid\
+ \ quantity or unpublish auction offers of the sku."
+ 25123:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This P&A listing has a non-compliant domestic return\
+ \ policy. Please update the return window to 30-days (or more) and/or\
+ \ update return shipping cost payer to Seller, and then make another\
+ \ call. Sellers using business policies must make the same changes\
+ \ to their return business policy and then make another call. To\
+ \ learn more, visit https://www.ebay.com/sellercenter/news/2025-june/parts-accessories-return-policy."
+ 25701:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "These SKU(s) are not in the system"
+ 25702:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "SKU {additionalInfo} is not available in the system"
+ 25002:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Any User error. {additionalInfo}"
+ 25003:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid price. {additionalInfo}"
+ 25707:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid sku. sku has to be alphanumeric with upto 50\
+ \ characters in length"
+ 25004:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid quantity. {additionalInfo}"
+ 25708:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid sku"
+ 25005:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid category. {additionalInfo}"
+ 25709:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid request. Invalid value for field {additionalInfo}"
+ 25006:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid listing option. {additionalInfo}"
+ 25710:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "We didn't find the resource/entity you are requesting.\
+ \ Please verify the request"
+ 25007:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid Shipping policy information. {additionalInfo}"
+ 25008:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid Payment policy information. {additionalInfo}"
+ 25009:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid Return policy information. {additionalInfo}"
+ 25713:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This Offer is not available : {additionalInfo}."
+ 25011:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid tax information. {additionalInfo}"
+ 25715:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid Dimension and Weight"
+ 25012:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid location. {additionalInfo}"
+ 25013:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This error code is associated with multiple possible\
+ \ errors. See 25013 Invalid data in the Inventory Item\
+ \ Group for the full list of messages returned and any available\
+ \ troubleshooting information."
+ 25014:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid pictures. {additionalInfo}"
+ 25015:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid picture URL. {additionalInfo}"
+ 25016:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid {fieldName}. {additionalInfo}"
+ 25017:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This error code is associated with multiple possible\
+ \ errors. See 25017 Missing information in fields for\
+ \ the full list of messages returned and any available troubleshooting\
+ \ information."
+ 25018:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This error code is associated with multiple possible\
+ \ errors. See 25018 Incomplete account information\
+ \ for the full list of messages returned and any available troubleshooting\
+ \ information."
+ 25019:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This error code is associated with multiple possible\
+ \ errors. See 25019 Cannot revise the listing for the\
+ \ full list of messages returned and any available troubleshooting\
+ \ information."
+ 25020:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid package details. {additionalInfo}"
+ 25021:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid condition information. {additionalInfo}"
+ 25022:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid attribute. {fieldName}"
+ 25023:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid compatibility information. {additionalInfo}"
+ 25727:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The number of InventoryItems in the request cannot exceed\
+ \ {additionalInfo}."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 25025:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "Concurrent access of Inventory or InventoryItemGroup.\
+ \ Please try again later"
+ 25001:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "Any System error. {additionalInfo}"
+ "207":
+ description: "Multi-Status"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory"
+ /bulk_get_inventory_item:
+ post:
+ tags:
+ - "inventory_item"
+ description: "This call retrieves up to 25 inventory item records. The SKU value\
+ \ of each inventory item record to retrieve is specified in the request payload.
Note: In addition to the authorization\
+ \ header, which is required for all Inventory API calls, this call also requires\
+ \ the Content-Type header. See the HTTP request headers for more information.
For those who prefer\
+ \ to retrieve only one inventory item record by SKU value, the getInventoryItem\
+ \ method can be used. To retrieve all inventory item records defined on the\
+ \ seller's account, the getInventoryItems method can be used\
+ \ (with pagination control if desired)."
+ operationId: "bulkGetInventoryItem"
+ parameters:
+ - name: "Content-Type"
+ in: "header"
+ description: "This header indicates the format of the request body provided\
+ \ by the client. Its value should be set to application/json.
For\
+ \ more information, refer to HTTP request headers."
+ required: true
+ schema:
+ type: "string"
+ requestBody:
+ description: "Details of the inventories with sku and locale"
+ content:
+ application/json:
+ schema:
+ description: "Details of the inventories with sku and locale"
+ $ref: "#/components/schemas/BulkGetInventoryItem"
+ required: true
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/BulkGetInventoryItemResponse"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 25702:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "SKU {additionalInfo} is not available in the system"
+ 25734:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "SKU should be unique in the request."
+ 25708:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid SKU."
+ 25709:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid request. Invalid value for field {additionalInfo}"
+ 25710:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "We didn't find the resource/entity you are requesting.\
+ \ Please verify the request"
+ 25727:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The number of InventoryItems in the request cannot exceed\
+ \ {additionalInfo}."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 25001:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "Any System error. {additionalInfo}"
+ "207":
+ description: "Multi-Status"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory.readonly"
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory"
+ /bulk_update_price_quantity:
+ post:
+ tags:
+ - "inventory_item"
+ description: "This call is used by the seller to update the total ship-to-home\
+ \ quantity of one inventory item, and/or to update the price and/or quantity\
+ \ of one or more offers associated with one inventory item. Up to 25 offers\
+ \ associated with an inventory item may be updated with one bulkUpdatePriceQuantity\
+ \ call. Only one SKU (one product) can be updated per call.
Note: Each listing can be revised up to 250 times\
+ \ in one calendar day. If this revision threshold is reached, the seller will\
+ \ be blocked from revising the item until the next calendar day.
Note: In addition to the authorization\
+ \ header, which is required for all Inventory API calls, this call also requires\
+ \ the Content-Type header. See the HTTP request headers for more information.
The getOffers\
+ \ call can be used to retrieve all offers associated with a SKU. The seller\
+ \ will just pass in the correct SKU value through the sku\
+ \ query parameter. To update an offer, the offerId value\
+ \ is required, and this value is returned in the getOffers\
+ \ call response. It is also useful to know which offers are unpublished and\
+ \ which ones are published. To get this status, look for the status\
+ \ value in the getOffers call response. Offers in the published\
+ \ state are live eBay listings, and these listings will be revised with a\
+ \ successful bulkUpdatePriceQuantity call.
An issue\
+ \ will occur if duplicate offerId values are passed through\
+ \ the same offers container, or if one or more of the specified\
+ \ offers are associated with different products/SKUs.
Note: For multiple-variation listings, it is\
+ \ recommended that the bulkUpdatePriceQuantity call be used\
+ \ to update price and quantity information for each SKU within that multiple-variation\
+ \ listing instead of using createOrReplaceInventoryItem calls\
+ \ to update the price and quantity for each SKU. Just remember that only one\
+ \ SKU (one product variation) can be updated per call."
+ operationId: "bulkUpdatePriceQuantity"
+ parameters:
+ - name: "Content-Type"
+ in: "header"
+ description: "This header indicates the format of the request body provided\
+ \ by the client. Its value should be set to application/json.
For\
+ \ more information, refer to HTTP request headers."
+ required: true
+ schema:
+ type: "string"
+ requestBody:
+ description: "Price and allocation details for the given SKU and Marketplace"
+ content:
+ application/json:
+ schema:
+ description: "Price and allocation details for the given SKU and Marketplace"
+ $ref: "#/components/schemas/BulkPriceQuantity"
+ required: true
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/BulkPriceQuantityResponse"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 25002:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Any User error. {additionalInfo}"
+ 25709:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid value for {fieldName}. {additionalInfo}"
+ 25759:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "shipToLocationAvailability quantity value should be\
+ \ greater than or equal to auction allocation. Please provide valid\
+ \ quantity or unpublish auction offers of the sku."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 25001:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "A system error has occurred. {additionalInfo}"
+ "207":
+ description: "Multi-Status"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory"
+ /inventory_item/{sku}:
+ get:
+ tags:
+ - "inventory_item"
+ description: "This call retrieves the inventory item record for a given SKU.\
+ \ The SKU value is passed in at the end of the call URI. There is no request\
+ \ payload for this call.
The authorization header is the\
+ \ only required HTTP header for this call, and it is required for all Inventory\
+ \ API calls. See the HTTP request headers section for more\
+ \ information.
For those who prefer to retrieve numerous inventory\
+ \ item records by SKU value with one call (up to 25 at a time), the bulkGetInventoryItem\
+ \ method can be used. To retrieve all inventory item records defined on the\
+ \ seller's account, the getInventoryItems method can be used\
+ \ (with pagination control if desired)."
+ operationId: "getInventoryItem"
+ parameters:
+ - name: "sku"
+ in: "path"
+ description: "This path parameter specifies the seller-defined SKU value of\
+ \ the product whose inventory item record you wish to retrieve.
Use\
+ \ the getInventoryItems method to retrieve SKU values.
Max\
+ \ length: 50"
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/InventoryItemWithSkuLocaleGroupid"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 25702:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{skuValue} could not be found or is not available in\
+ \ the system."
+ 25709:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid value for {fieldName}"
+ 25710:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "We didn't find the resource/entity you are requesting.\
+ \ Please verify the request"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 25001:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "A system error has occurred. {additionalInfo}"
+ "404":
+ description: "Not Found"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory.readonly"
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory"
+ put:
+ tags:
+ - "inventory_item"
+ description: "Note: Please note that\
+ \ any eBay listing created using the Inventory API cannot be revised or relisted\
+ \ using the Trading API calls.
Note:\
+ \ Each listing can be revised up to 250 times in one calendar day. If this\
+ \ revision threshold is reached, the seller will be blocked from revising\
+ \ the item until the next calendar day.
This call creates a new\
+ \ inventory item record or replaces an existing inventory item record. It\
+ \ is up to sellers whether they want to create a complete inventory item record\
+ \ right from the start, or sellers can provide only some information with\
+ \ the initial createOrReplaceInventoryItem call, and then\
+ \ make one or more additional createOrReplaceInventoryItem\
+ \ calls to complete all required fields for the inventory item record and\
+ \ prepare it for publishing. Upon first creating an inventory item record,\
+ \ only the SKU value in the call path is required.
Important!Publish offer note: Fields\
+ \ may be optional or conditionally required when calling this method, but\
+ \ become required when publishing the offer to create an active listing. For\
+ \ this method, see Inventory item fields for a list of fields required\
+ \ to publish an offer.
Note:\
+ \ In addition to the authorization header, which is required\
+ \ for all Inventory API calls, this call also requires the Content-Type\
+ \ and Content-Language headers. See the HTTP request headers for more information.
In the case of\
+ \ replacing an existing inventory item record, the createOrReplaceInventoryItem\
+ \ call will do a complete replacement of the existing inventory item record,\
+ \ so all fields that are currently defined for the inventory item record are\
+ \ required in that update action, regardless of whether their values changed.\
+ \ So, when replacing/updating an inventory item record, it is advised that\
+ \ the seller run a getInventoryItem call to retrieve the\
+ \ full inventory item record and see all of its current values/settings before\
+ \ attempting to update the record. And if changes are made to an inventory\
+ \ item that is part of one or more active eBay listings, a successful call\
+ \ will automatically update these eBay listings.
The key information\
+ \ that is set with the createOrReplaceInventoryItem call\
+ \ include: - Seller-defined SKU value for the product. Each seller\
+ \ product, including products within an item inventory group, must have their\
+ \ own SKU value. This SKU value is passed in at the end of the call URI
\
+ \ - Condition of the item
- Product details, including any product\
+ \ identifier(s), such as a UPC, ISBN, EAN, or Brand/Manufacturer Part Number\
+ \ pair, a product description, a product title, product/item aspects, and\
+ \ links to images. eBay will use any supplied eBay Product ID (ePID) or a\
+ \ GTIN (UPC, ISBN, or EAN) and attempt to match those identifiers to a product\
+ \ in the eBay Catalog, and if a product match is found, the product details\
+ \ for the inventory item will automatically be populated.
- Quantity\
+ \ of the inventory item that is available for purchase
- Package weight\
+ \ and dimensions, which is required if the seller will be offering calculated\
+ \ shipping options. The package weight will also be required if the seller\
+ \ will be providing flat-rate shipping services, but charging a weight surcharge.
\
+ \
In addition to the authorization header, which is\
+ \ required for all eBay REST API calls, the createOrReplaceInventoryItem\
+ \ call also requires the Content-Language header, that sets the\
+ \ natural language that will be used in the field values of the request payload.\
+ \ For US English, the code value passed in this header should be en-US.\
+ \ To view other supported Content-Language values, and to read\
+ \ more about all supported HTTP headers for eBay REST API calls, see the HTTP request headers topic in the Using eBay RESTful APIs\
+ \ document.
For those who prefer to create or update numerous inventory\
+ \ item records with one call (up to 25 at a time), the bulkCreateOrReplaceInventoryItem\
+ \ method can be used.
"
+ operationId: "createOrReplaceInventoryItem"
+ parameters:
+ - name: "Content-Language"
+ in: "header"
+ description: "This header sets the natural language that will be used in the\
+ \ field values of the request payload. For example, the value passed in\
+ \ this header should be en-US for English or de-DE\
+ \ for German.
For more information on the Content-Language header,\
+ \ refer to HTTP request headers."
+ required: true
+ schema:
+ type: "string"
+ - name: "sku"
+ in: "path"
+ description: "This path parameter specifies the seller-defined SKU value for\
+ \ the inventory item being created or updated. SKU values must be unique\
+ \ across the seller's inventory.
Max length: 50"
+ required: true
+ schema:
+ type: "string"
+ - name: "Content-Type"
+ in: "header"
+ description: "This header indicates the format of the request body provided\
+ \ by the client. Its value should be set to application/json.
For\
+ \ more information, refer to HTTP request headers."
+ required: true
+ schema:
+ type: "string"
+ requestBody:
+ description: "Details of the inventory item record."
+ content:
+ application/json:
+ schema:
+ description: "Details of the inventory item record."
+ $ref: "#/components/schemas/InventoryItem"
+ required: true
+ responses:
+ "200":
+ description: "Success"
+ headers:
+ Content-Language:
+ schema:
+ type: "string"
+ description: "This header controls the language that is used for any\
+ \ returned errors or warnings in the call response."
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/BaseResponse"
+ x-response-codes:
+ errors:
+ 25504:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "service\t{additionalInfo}"
+ 25124:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This P&A listing requires a minimum 30-day return period\
+ \ and seller-paid return shipping. eBay automatically updated the\
+ \ listing's return policy settings to meet these requirements. Sellers\
+ \ using business policies should update their return business policy\
+ \ for future P&A listings. To learn more, visit https://www.ebay.com/sellercenter/news/2025-june/parts-accessories-return-policy."
+ 25096:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This listing is on hold due to a policy violation. You\
+ \ may revise it to resolve the situation. Please check your email\
+ \ for more information."
+ 25401:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "Invalid listing format removed. {additionalInfo}"
+ 25753:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "listingStartDate is in the past or the offer is live.\
+ \ Value is not updated on the listing."
+ 25402:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "System warning. {additionalInfo}"
+ "201":
+ description: "Created"
+ headers:
+ Content-Language:
+ schema:
+ type: "string"
+ description: "This header controls the language that is used for any\
+ \ returned errors or warnings in the call response."
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/BaseResponse"
+ x-response-codes:
+ errors:
+ 25504:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "service\t{additionalInfo}"
+ 25124:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This P&A listing requires a minimum 30-day return period\
+ \ and seller-paid return shipping. eBay automatically updated the\
+ \ listing's return policy settings to meet these requirements. Sellers\
+ \ using business policies should update their return business policy\
+ \ for future P&A listings. To learn more, visit https://www.ebay.com/sellercenter/news/2025-june/parts-accessories-return-policy."
+ 25096:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This listing is on hold due to a policy violation. You\
+ \ may revise it to resolve the situation. Please check your email\
+ \ for more information."
+ 25401:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "Invalid listing format removed. {additionalInfo}"
+ 25753:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "listingStartDate is in the past or the offer is live.\
+ \ Value is not updated on the listing."
+ 25402:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "System warning. {additionalInfo}"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 25088:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The email address provided is formatted incorrectly."
+ 25089:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "No more than {replaceable_value} global compliance policies\
+ \ allowed. Excess policies ignored."
+ 25601:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{fieldName} is an invalid attribute. "
+ 25090:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "No more than {replaceable_value} compliance policies\
+ \ per region allowed. Excess policies ignored."
+ 25091:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "No more than a total of {replaceable_value} compliance\
+ \ policies allowed. Excess policies ignored."
+ 25092:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "No more than {replaceable_value} global takeback policy\
+ \ allowed."
+ 25604:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Input error. {additionalInfo}"
+ 25093:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "No more than {replaceable_value} takeback policy per\
+ \ region allowed. Excess policies ignored."
+ 25094:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "No more than a total of {replaceable_value} takeback\
+ \ policies allowed."
+ 25095:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Region invalid for regional custom policy. Regions allowed\
+ \ are {replaceable_value}."
+ 25097:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This listing is on hold due to a policy violation, and\
+ \ revisions are not possible. Please check your email for more information."
+ 25098:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{replaceable_value} transaction is not possible as the\
+ \ parent listing is on-hold. Please check your email for further\
+ \ information."
+ 25104:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Regulatory document ID(s) {replaceable_value} not found.\
+ \ Please use valid ID(s)."
+ 25106:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Regulatory document structure incorrect. Max allowed\
+ \ number of entries is {replaceable_value}."
+ 25107:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid document state for ID(s) {replaceable_value}.\
+ \ Documents must be in the SUBMITTED or ACCEPTED state."
+ 25108:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Product Safety structure incorrect for {replaceable_value}.\
+ \ Max allowed number of entries is {replaceable_value}."
+ 25109:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Product safety information incomplete. Your listing\
+ \ must include pictograms or safety statements."
+ 25110:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Manufacturer address information is incomplete. When\
+ \ providing the address, please provide the street, city, postal\
+ \ code and country"
+ 25111:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Manufacturer information is incomplete. Please provide\
+ \ the company name."
+ 25112:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Responsible Person structure incorrect for {replaceable_value}.\
+ \ Max allowed number of entries is {replaceable_value}."
+ 25113:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Responsible Person address information is incomplete.\
+ \ When providing the address, please provide the street, city, postal\
+ \ code and country"
+ 25114:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Responsible Person information is incomplete. Please\
+ \ provide the company name."
+ 25115:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Either the Manufacturer or at least one of the Responsible\
+ \ Persons must be located in the EU."
+ 25116:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Please provide a minimum of {replaceable_value} and\
+ \ a maximum of {replaceable_value} types for a Responsible Person."
+ 25118:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Seller must provide at least one form of contact info\
+ \ for Manufacturer - either address, email, contact URL or phone."
+ 25119:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Seller must provide at least one form of contact info\
+ \ for Responsible Person - either address, email, contact URL or\
+ \ phone."
+ 25120:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "When listing in {categoryName}, key information such\
+ \ as {fieldName} comes from eBay’s catalog and should be left blank."
+ 25121:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "When listing in {categoryName}, sellers are required\
+ \ to adopt eBay’s catalog data which will provide all the necessary\
+ \ details for the product."
+ 25122:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The contact URL is incorrectly formatted. Please update\
+ \ the formatting."
+ 25123:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This P&A listing has a non-compliant domestic return\
+ \ policy. Please update the return window to 30-days (or more) and/or\
+ \ update return shipping cost payer to Seller, and then make another\
+ \ call. Sellers using business policies must make the same changes\
+ \ to their return business policy and then make another call. To\
+ \ learn more, visit https://www.ebay.com/sellercenter/news/2025-june/parts-accessories-return-policy."
+ 25701:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "One or more of the supplied SKU(s) could not be found\
+ \ in the system."
+ 25702:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{skuValue} could not be found or is not available in\
+ \ the system."
+ 25707:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This is an invalid value for a SKU. Only alphanumeric\
+ \ characters can be used for SKUs, and their length must not exceed\
+ \ 50 characters."
+ 25708:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid SKU."
+ 25709:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid value for {fieldName}"
+ 25710:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "We didn't find the resource/entity you are requesting.\
+ \ Please verify the request."
+ 25713:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This Offer is not available : {additionalInfo}."
+ 25715:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid values for dimensions and/or weight of shipping\
+ \ package."
+ 25752:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "listingStartDate provided is invalid."
+ 25501:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has an invalid picture. {additionalInfo}"
+ 25502:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid attribute information. {additionalInfo}"
+ 25503:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has invalid product information. {additionalInfo}"
+ 25759:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{replaceable_value} transaction is not possible as the\
+ \ parent listing is on-hold. Please check your email for further\
+ \ information. "
+ 25760:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "shipToLocationAvailability quantity insufficient to\
+ \ create auction listings."
+ 25766:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The takeBackPolicyId field must be a long value type.\
+ \ Please correct the error."
+ 25767:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The productCompliancePolicyId field must be a long value\
+ \ type. Please correct the error."
+ 25002:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "A user error has occurred. {additionalInfo}"
+ 25003:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has an invalid price. {additionalInfo}"
+ 25004:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has an invalid quantity. {additionalInfo}"
+ 25005:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has an invalid category ID. {additionalInfo}"
+ 25006:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has an invalid listing option. {additionalInfo}"
+ 25007:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has invalid data in the associated Fulfillment\
+ \ policy. {additionalInfo}"
+ 25008:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has invalid data in the associated Payment\
+ \ policy. {additionalInfo}"
+ 25009:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has invalid data in the associated Return\
+ \ policy. {additionalInfo}"
+ 25011:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has invalid tax information. {additionalInfo}"
+ 25012:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid inventory location. {additionalInfo}"
+ 25013:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This error code is associated with multiple possible\
+ \ errors. See 25013 Invalid data in the Inventory Item\
+ \ Group for the full list of messages returned and any available\
+ \ troubleshooting information."
+ 25014:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has invalid pictures. {additionalInfo}"
+ 25015:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has an invalid picture URL. {additionalInfo}"
+ 25016:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The {fieldName} value is invalid. {additionalInfo}"
+ 25017:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This error code is associated with multiple possible\
+ \ errors. See 25017 Missing information in fields for\
+ \ the full list of messages returned and any available troubleshooting\
+ \ information."
+ 25018:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This error code is associated with multiple possible\
+ \ errors. See 25018 Incomplete account information\
+ \ for the full list of messages returned and any available troubleshooting\
+ \ information."
+ 25019:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This error code is associated with multiple possible\
+ \ errors. See 25019 Cannot revise the listing for the\
+ \ full list of messages returned and any available troubleshooting\
+ \ information."
+ 25020:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has invalid shipping package details.\
+ \ {additionalInfo}"
+ 25021:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has invalid item condition information.\
+ \ {additionalInfo}"
+ 25022:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid attribute. {fieldName}"
+ 25023:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid compatibility information. {additionalInfo}"
+ 25026:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Selling limit exceeded. {additionalInfo}"
+ 25029:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{field} is required for this category."
+ 25031:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{field} is not valid and needs to be a number between\
+ \ {min} and {max}"
+ 25034:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Only {max value} policies can be specified"
+ 25035:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The specified policy is not found for the market place"
+ 25036:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The policy(ies) {PolicyId} is not of type {PolicyEnum}"
+ 25038:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{ItemId} cannot be revised if the item has a bid or\
+ \ a best offer or is ending within 12 hours"
+ 25039:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{ItemId} cannot be revised if the item has a bid or\
+ \ a best offer and is ending within 12 hours"
+ 25040:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{ItemId} cannot be revised if the item has a bid or\
+ \ a best offer and is ending within 12 hours"
+ 25041:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "When listing an item with Refurbished condition, maximum\
+ \ handling time must be {replaceable_value} business day(s)."
+ 25042:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "When listing an item with Refurbished condition, free\
+ \ shipping must be provided."
+ 25043:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "When listing an item with Refurbished condition, returns\
+ \ must be accepted."
+ 25044:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "When listing an item with Refurbished condition, refund\
+ \ must be provided as Money Back."
+ 25045:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "When listing an item with Refurbished condition, the\
+ \ minimum time you'll accept returns must be {replaceable_value}\
+ \ days."
+ 25046:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "When listing an item with Refurbished condition, seller\
+ \ must pay the cost for return shipping."
+ 25047:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Seller is not eligible to use Refurbished Item Condition"
+ 25048:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Seller is not eligible to use Refurbished Item Condition\
+ \ in this Category"
+ 25049:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Seller is not eligible to use Refurbished Item Condition\
+ \ for the selected Brand"
+ 25050:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "When listing an item with Refurbished condition, {replaceable_value}\
+ \ cannot be used in the Title."
+ 25051:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "When listing an item with Refurbished condition, {replaceable_value}\
+ \ cannot be used in the Subtitle"
+ 25052:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "When listing an item with Refurbished condition, at\
+ \ least {replaceable_value} images must be provided"
+ 25076:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{replaceable_value} ID(s) {replaceable_value} not found.\
+ \ Please use valid ID(s)."
+ 25077:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Duplicate Regulatory ID(s) {replaceable_value} sent\
+ \ in the request. Duplicate ID(s) have been ignored."
+ 25078:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Hazmat structure incorrect for {replaceable_value}."
+ 25079:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Repair score invalid. Repair score must be in the range\
+ \ from {replaceable_value} to {replaceable_value} with one decimal\
+ \ place."
+ 25080:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The value of the {0} field is invalid. Field must not\
+ \ exceed {replaceable_value} characters."
+ 25081:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Hazardous material information incomplete. Your listing\
+ \ must include hazardous statements."
+ 25083:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Energy efficiency image is missing. Image is required\
+ \ with image description."
+ 25084:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The listing must have both an energy efficiency label\
+ \ and a product information sheet."
+ 25086:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The URL provided must be an eBay Picture Service URL."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 25025:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "Concurrent access of the same Inventory or Inventory\
+ \ Item Group object is not allowed. Please try again later."
+ 25001:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "A system error has occurred. {additionalInfo}"
+ "204":
+ description: "No Content"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory"
+ delete:
+ tags:
+ - "inventory_item"
+ description: "This call is used to delete an inventory item record associated\
+ \ with a specified SKU. A successful call will not only delete that inventory\
+ \ item record, but will also have the following effects:- Delete any\
+ \ and all unpublished offers associated with that SKU;
- Delete any\
+ \ and all single-variation eBay listings associated with that SKU;
- Automatically\
+ \ remove that SKU from a multiple-variation listing and remove that SKU from\
+ \ any and all inventory item groups in which that SKU was a member.
The\
+ \ authorization header is the only required HTTP header for this\
+ \ call. See the HTTP request headers section for more information.
"
+ operationId: "deleteInventoryItem"
+ parameters:
+ - name: "sku"
+ in: "path"
+ description: "This path parameter specifies the seller-defined SKU value of\
+ \ the product whose inventory item record you wish to delete.
Use\
+ \ the getInventoryItems method to retrieve SKU values.
Max\
+ \ length: 50"
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 25702:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{skuValue} could not be found or is not available in\
+ \ the system."
+ 25709:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid value for {fieldName}. {additionalInfo}"
+ 25710:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "We didn't find the resource/entity you are requesting.\
+ \ Please verify the request"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 25001:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "A system error has occurred. {additionalInfo}"
+ "204":
+ description: "No Content"
+ "404":
+ description: "Not Found"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory"
+ /inventory_item:
+ get:
+ tags:
+ - "inventory_item"
+ description: "This call retrieves all inventory item records defined for the\
+ \ seller's account. The limit query parameter allows the\
+ \ seller to control how many records are returned per page, and the offset\
+ \ query parameter is used to retrieve a specific page of records. The seller\
+ \ can make multiple calls to scan through multiple pages of records. There\
+ \ is no request payload for this call.
The authorization\
+ \ header is the only required HTTP header for this call, and it is required\
+ \ for all Inventory API calls. See the HTTP request headers\
+ \ section for more information.
For those who prefer to retrieve numerous\
+ \ inventory item records by SKU value with one call (up to 25 at a time),\
+ \ the bulkGetInventoryItem method can be used."
+ operationId: "getInventoryItems"
+ parameters:
+ - name: "limit"
+ in: "query"
+ description: "The value passed in this query parameter sets the maximum number\
+ \ of records to return per page of data. Although this field is a string,\
+ \ the value passed in this field should be an integer from 1\
+ \ to 200.
Min: 1
Max:\
+ \ 200
Default: 25"
+ required: false
+ schema:
+ type: "string"
+ - name: "offset"
+ in: "query"
+ description: "The value passed in this query parameter sets the page number\
+ \ to retrieve. The first page of records has a value of 0,\
+ \ the second page of records has a value of 1, and so on. If\
+ \ this query parameter is not set, its value defaults to 0,\
+ \ and the first page of records is returned. "
+ required: false
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/InventoryItems"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 25706:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "You have provided invalid pagination values. {additionalInfo}."
+ 25709:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid value for {fieldName}."
+ 25710:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "We didn't find the resource/entity you are requesting.\
+ \ Please verify the request"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 25001:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "A system error has occurred. {additionalInfo}"
+ "404":
+ description: "Not Found"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory.readonly"
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory"
+ /inventory_item/{sku}/product_compatibility:
+ get:
+ tags:
+ - "product_compatibility"
+ description: "This call is used by the seller to retrieve the list of products\
+ \ that are compatible with the inventory item. The SKU value for the inventory\
+ \ item is passed into the call URI, and a successful call with return the\
+ \ compatible vehicle list associated with this inventory item. Product compatibility\
+ \ is currently only applicable to motor vehicle parts and accessory categories,\
+ \ but more categories may be supported in the future."
+ operationId: "getProductCompatibility"
+ parameters:
+ - name: "sku"
+ in: "path"
+ description: "This path parameter specifies the SKU (stock keeping unit) of\
+ \ the inventory item associated with the product compatibility list being\
+ \ retrieved.
Use the getInventoryItems method to retrieve SKU values."
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Compatibility"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 25702:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{skuValue} could not be found or is not available in\
+ \ the system."
+ 25709:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid value for {fieldName}. {additionalInfo}"
+ 25710:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "We didn't find the resource/entity you are requesting.\
+ \ Please verify the request"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 25001:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "A system error has occurred. {additionalInfo}"
+ "404":
+ description: "Not Found"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory.readonly"
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory"
+ put:
+ tags:
+ - "product_compatibility"
+ description: "This call is used by the seller to create or replace a list of\
+ \ products that are compatible with the inventory item. The inventory item\
+ \ is identified with a SKU value in the URI. Product compatibility is currently\
+ \ only applicable to motor vehicle parts and accessory categories, but more\
+ \ categories may be supported in the future.
Note: In addition to the authorization header, which\
+ \ is required for all Inventory API calls, this call also requires the Content-Type\
+ \ and Content-Language headers. See the HTTP request headers for more information."
+ operationId: "createOrReplaceProductCompatibility"
+ parameters:
+ - name: "Content-Language"
+ in: "header"
+ description: "This header sets the natural language that will be used in the\
+ \ field values of the request payload. For example, the value passed in\
+ \ this header should be en-US for English or de-DE\
+ \ for German.
For more information on the Content-Language header,\
+ \ refer to HTTP request headers."
+ required: true
+ schema:
+ type: "string"
+ - name: "sku"
+ in: "path"
+ description: "This path parameter specifies the SKU (stock keeping unit) of\
+ \ the inventory item associated with the compatibility list being created.
Use\
+ \ the getInventoryItems method to retrieve SKU values."
+ required: true
+ schema:
+ type: "string"
+ - name: "Content-Type"
+ in: "header"
+ description: "This header indicates the format of the request body provided\
+ \ by the client. Its value should be set to application/json.
For\
+ \ more information, refer to HTTP request headers."
+ required: true
+ schema:
+ type: "string"
+ requestBody:
+ description: "Details of the compatibility"
+ content:
+ application/json:
+ schema:
+ description: "Details of the compatibility"
+ $ref: "#/components/schemas/Compatibility"
+ required: true
+ responses:
+ "200":
+ description: "Success"
+ headers:
+ Content-Language:
+ schema:
+ type: "string"
+ description: "This response header sets the natural language that\
+ \ will be provided in the field values of the response payload."
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/BaseResponse"
+ x-response-codes:
+ errors:
+ 25124:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This P&A listing requires a minimum 30-day return period\
+ \ and seller-paid return shipping. eBay automatically updated the\
+ \ listing's return policy settings to meet these requirements. Sellers\
+ \ using business policies should update their return business policy\
+ \ for future P&A listings. To learn more, visit https://www.ebay.com/sellercenter/news/2025-june/parts-accessories-return-policy."
+ 25401:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "Invalid listing format removed. {additionalInfo}"
+ 25402:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "System warning. {additionalInfo}"
+ "201":
+ description: "Created"
+ headers:
+ Content-Language:
+ schema:
+ type: "string"
+ description: "This response header sets the natural language that\
+ \ will be provided in the field values of the response payload."
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/BaseResponse"
+ x-response-codes:
+ errors:
+ 25124:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This P&A listing requires a minimum 30-day return period\
+ \ and seller-paid return shipping. eBay automatically updated the\
+ \ listing's return policy settings to meet these requirements. Sellers\
+ \ using business policies should update their return business policy\
+ \ for future P&A listings. To learn more, visit https://www.ebay.com/sellercenter/news/2025-june/parts-accessories-return-policy."
+ 25401:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "Invalid listing format removed. {additionalInfo}"
+ 25402:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "System warning. {additionalInfo}"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 25026:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Selling limit exceeded. {additionalInfo}"
+ 25739:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "User input error. The number of compatibilityProperties\
+ \ in the request cannot exceed {additionalInfo}."
+ 25740:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "User input error. Invalid name for compatibilityProperties.\
+ \ The length should be between 1 and {additionalInfo} characters."
+ 25741:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "User input error. Invalid value for compatibilityProperties.\
+ \ The length should be between 1 and {additionalInfo} characters."
+ 25742:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "User input error. productFamilyProperties and compatibilityProperties\
+ \ cannot be used together. Please use compatibilityProperties."
+ 25123:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This P&A listing has a non-compliant domestic return\
+ \ policy. Please update the return window to 30-days (or more) and/or\
+ \ update return shipping cost payer to Seller, and then make another\
+ \ call. Sellers using business policies must make the same changes\
+ \ to their return business policy and then make another call. To\
+ \ learn more, visit https://www.ebay.com/sellercenter/news/2025-june/parts-accessories-return-policy."
+ 25702:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{skuValue} could not be found or is not available in\
+ \ the system."
+ 25002:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "A user error has occurred. {additionalInfo}"
+ 25003:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has an invalid price. {additionalInfo}"
+ 25004:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has an invalid quantity. {additionalInfo}"
+ 25005:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has an invalid category ID. {additionalInfo}"
+ 25006:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has an invalid listing option. {additionalInfo}"
+ 25007:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has invalid data in the associated Fulfillment\
+ \ policy. {additionalInfo}"
+ 25008:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has invalid data in the associated Payment\
+ \ policy. {additionalInfo}"
+ 25009:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has invalid data in the associated Return\
+ \ policy. {additionalInfo}"
+ 25011:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has invalid tax information. {additionalInfo}"
+ 25012:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid inventory location. {additionalInfo}"
+ 25013:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This error code is associated with multiple possible\
+ \ errors. See 25013 Invalid data in the Inventory Item\
+ \ Group for the full list of messages returned and any available\
+ \ troubleshooting information."
+ 25014:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has invalid pictures. {additionalInfo}"
+ 25015:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has an invalid picture URL. {additionalInfo}"
+ 25016:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The {fieldName} value is invalid. {additionalInfo}"
+ 25017:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This error code is associated with multiple possible\
+ \ errors. See 25017 Missing information in fields for\
+ \ the full list of messages returned and any available troubleshooting\
+ \ information."
+ 25018:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This error code is associated with multiple possible\
+ \ errors. See 25018 Incomplete account information\
+ \ for the full list of messages returned and any available troubleshooting\
+ \ information."
+ 25019:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This error code is associated with multiple possible\
+ \ errors. See 25019 Cannot revise the listing for the\
+ \ full list of messages returned and any available troubleshooting\
+ \ information."
+ 25020:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has invalid shipping package details.\
+ \ {additionalInfo}"
+ 25021:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has invalid item condition information.\
+ \ {additionalInfo}"
+ 25022:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid attribute. {fieldName}"
+ 25023:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid compatibility information. {additionalInfo}"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 25025:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "Concurrent access of the same Inventory or Inventory\
+ \ Item Group object is not allowed. Please try again later."
+ 25001:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "A system error has occurred. {additionalInfo}"
+ "204":
+ description: "No Content"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory"
+ delete:
+ tags:
+ - "product_compatibility"
+ description: "This call is used by the seller to delete the list of products\
+ \ that are compatible with the inventory item that is associated with the\
+ \ compatible product list. The inventory item is identified with a SKU value\
+ \ in the URI. Product compatibility is currently only applicable to motor\
+ \ vehicle parts and accessory categories, but more categories may be supported\
+ \ in the future."
+ operationId: "deleteProductCompatibility"
+ parameters:
+ - name: "sku"
+ in: "path"
+ description: "This path parameter specifies the SKU (stock keeping unit) of\
+ \ the inventory item that is associated with the product compatibility list\
+ \ that is being deleted.
Use the getInventoryItems method to retrieve SKU values."
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 25702:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{skuValue} could not be found or is not available in\
+ \ the system."
+ 25709:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid value for {fieldName}. {additionalInfo}"
+ 25710:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "We didn't find the resource/entity you are requesting.\
+ \ Please verify the request"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 25001:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "A system error has occurred. <additional_information>"
+ "204":
+ description: "No Content"
+ "404":
+ description: "Not Found"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory"
+ /inventory_item_group/{inventoryItemGroupKey}:
+ get:
+ tags:
+ - "inventory_item_group"
+ description: "This call retrieves the inventory item group for a given inventoryItemGroupKey\
+ \ value. The inventoryItemGroupKey value is passed in at\
+ \ the end of the call URI."
+ operationId: "getInventoryItemGroup"
+ parameters:
+ - name: "inventoryItemGroupKey"
+ in: "path"
+ description: "This path parameter specifies the unique identifier of the inventory\
+ \ item group being retrieved. This value is assigned by the seller when\
+ \ an inventory item group is created."
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/InventoryItemGroup"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 25705:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The Inventory Item Group named {inventoryItemGroupKey}\
+ \ could not be found or is not available in the system."
+ 25709:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid value for {fieldName}. {additionalInfo}"
+ 25710:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "We didn't find the resource/entity you are requesting.\
+ \ Please verify the request"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 25001:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "A system error has occurred. {additionalInfo}"
+ "404":
+ description: "Not Found"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory.readonly"
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory"
+ put:
+ tags:
+ - "inventory_item_group"
+ description: "Note: Each listing\
+ \ can be revised up to 250 times in one calendar day. If this revision threshold\
+ \ is reached, the seller will be blocked from revising the item until the\
+ \ next calendar day.
This call creates a new inventory item group\
+ \ or updates an existing inventory item group. It is up to sellers whether\
+ \ they want to create a complete inventory item group record right from the\
+ \ start, or sellers can provide only some information with the initial createOrReplaceInventoryItemGroup\
+ \ call, and then make one or more additional createOrReplaceInventoryItemGroup\
+ \ calls to complete the inventory item group record. Upon first creating an\
+ \ inventory item group record, the only required elements are the inventoryItemGroupKey\
+ \ identifier in the call URI, and the members of the inventory item group\
+ \ specified through the variantSKUs array in the request\
+ \ payload.
Important!Publish\
+ \ offer note: Fields may be optional or conditionally required when calling\
+ \ this method, but become required when publishing the offer to create an\
+ \ active listing. For this method, see Inventory item group fields for a list of fields\
+ \ required to publish an offer.
Note: In addition to the authorization header, which\
+ \ is required for all Inventory API calls, this call also requires the Content-Type\
+ \ and Content-Language headers. See the HTTP request headers for more information.
In the case of updating/replacing\
+ \ an existing inventory item group, this call does a complete replacement\
+ \ of the existing inventory item group record, so all fields (including the\
+ \ member SKUs) that make up the inventory item group are required, regardless\
+ \ of whether their values changed. So, when replacing/updating an inventory\
+ \ item group record, it is advised that the seller run a getInventoryItemGroup\
+ \ call for that inventory item group to see all of its current values/settings/members\
+ \ before attempting to update the record. And if changes are made to an inventory\
+ \ item group that is part of a live, multiple-variation eBay listing, these\
+ \ changes automatically update the eBay listing. For example, if a SKU value\
+ \ is removed from the inventory item group, the corresponding product variation\
+ \ will be removed from the eBay listing as well.
In addition to the\
+ \ required inventory item group identifier and member SKUs, other key information\
+ \ that is set with this call include: - Title and description of the\
+ \ inventory item group. The string values provided in these fields will actually\
+ \ become the listing title and listing description of the listing once the\
+ \ first SKU of the inventory item group is published successfully
- Common\
+ \ aspects that inventory items in the group share
- Product aspects\
+ \ that vary within each product variation
- Links to images demonstrating\
+ \ the variations of the product, and these images should correspond to the\
+ \ product aspect that is set with the variesBy.aspectsImageVariesBy\
+ \ field
Note: For more information,\
+ \ see Creating and managing inventory item groups."
+ operationId: "createOrReplaceInventoryItemGroup"
+ parameters:
+ - name: "Content-Language"
+ in: "header"
+ description: "This header sets the natural language that will be used in the\
+ \ field values of the request payload. For example, the value passed in\
+ \ this header should be en-US for English or de-DE\
+ \ for German.
For more information on the Content-Language header,\
+ \ refer to HTTP request headers."
+ required: true
+ schema:
+ type: "string"
+ - name: "inventoryItemGroupKey"
+ in: "path"
+ description: "This path parameter specifies the unique identifier of the inventory\
+ \ item group being created or updated. This identifier is defined by the\
+ \ seller.
This value cannot be changed once it is set.
Max\
+ \ Length: 50"
+ required: true
+ schema:
+ type: "string"
+ - name: "Content-Type"
+ in: "header"
+ description: "This header indicates the format of the request body provided\
+ \ by the client. Its value should be set to application/json.
For\
+ \ more information, refer to HTTP request headers."
+ required: true
+ schema:
+ type: "string"
+ requestBody:
+ description: "Details of the inventory Item Group"
+ content:
+ application/json:
+ schema:
+ description: "Details of the inventory Item Group"
+ $ref: "#/components/schemas/InventoryItemGroup"
+ required: true
+ responses:
+ "200":
+ description: "Success"
+ headers:
+ Content-Language:
+ schema:
+ type: "string"
+ description: "This describes the natural language(s) of the intended\
+ \ audience for the enclosed entity"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/BaseResponse"
+ x-response-codes:
+ errors:
+ 25124:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This P&A listing requires a minimum 30-day return period\
+ \ and seller-paid return shipping. eBay automatically updated the\
+ \ listing's return policy settings to meet these requirements. Sellers\
+ \ using business policies should update their return business policy\
+ \ for future P&A listings. To learn more, visit https://www.ebay.com/sellercenter/news/2025-june/parts-accessories-return-policy."
+ 25096:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This listing is on hold due to a policy violation. You\
+ \ may revise it to resolve the situation. Please check your email\
+ \ for more information."
+ 25401:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "Invalid listing format removed {additionalInfo}"
+ 25402:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "System warning. {additionalInfo}"
+ "201":
+ description: "Created"
+ headers:
+ Content-Language:
+ schema:
+ type: "string"
+ description: "This describes the natural language(s) of the intended\
+ \ audience for the enclosed entity"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/BaseResponse"
+ x-response-codes:
+ errors:
+ 25124:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This P&A listing requires a minimum 30-day return period\
+ \ and seller-paid return shipping. eBay automatically updated the\
+ \ listing's return policy settings to meet these requirements. Sellers\
+ \ using business policies should update their return business policy\
+ \ for future P&A listings. To learn more, visit https://www.ebay.com/sellercenter/news/2025-june/parts-accessories-return-policy."
+ 25096:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This listing is on hold due to a policy violation. You\
+ \ may revise it to resolve the situation. Please check your email\
+ \ for more information."
+ 25401:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "Invalid listing format removed {additionalInfo}"
+ 25402:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "System warning. {additionalInfo}"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 25024:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid Best Offer information. {additionalInfo}"
+ 25026:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Selling limit exceeded. {additionalInfo}"
+ 25097:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This listing is on hold due to a policy violation, and\
+ \ revisions are not possible. Please check your email for more information."
+ 25098:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{replaceable_value} transaction is not possible as the\
+ \ parent listing is on-hold. Please check your email for further\
+ \ information. "
+ 25041:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "When listing an item with Refurbished condition, maximum\
+ \ handling time must be {replaceable_value} business day(s)."
+ 25042:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "When listing an item with Refurbished condition, free\
+ \ shipping must be provided."
+ 25043:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "When listing an item with Refurbished condition, returns\
+ \ must be accepted."
+ 25044:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "When listing an item with Refurbished condition, refund\
+ \ must be provided as Money Back."
+ 25045:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "When listing an item with Refurbished condition, the\
+ \ minimum time you'll accept returns must be {replaceable_value}\
+ \ days."
+ 25046:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "When listing an item with Refurbished condition, seller\
+ \ must pay the cost for return shipping."
+ 25047:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Seller is not eligible to use Refurbished Item Condition"
+ 25048:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Seller is not eligible to use Refurbished Item Condition\
+ \ in this Category"
+ 25049:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Seller is not eligible to use Refurbished Item Condition\
+ \ for the selected Brand"
+ 25050:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "When listing an item with Refurbished condition, {replaceable_value}\
+ \ cannot be used in the Title."
+ 25051:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "When listing an item with Refurbished condition, {replaceable_value}\
+ \ cannot be used in the Subtitle"
+ 25756:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Auction format is not permitted with a SKU that is part\
+ \ of an InventoryItemGroup."
+ 25052:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "When listing an item with Refurbished condition, at\
+ \ least {replaceable_value} images must be provided"
+ 25120:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "When listing in {categoryName}, key information such\
+ \ as {fieldName} comes from eBay’s catalog and should be left blank."
+ 25121:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "When listing in {categoryName}, sellers are required\
+ \ to adopt eBay’s catalog data which will provide all the necessary\
+ \ details for the product."
+ 25123:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This P&A listing has a non-compliant domestic return\
+ \ policy. Please update the return window to 30-days (or more) and/or\
+ \ update return shipping cost payer to Seller, and then make another\
+ \ call. Sellers using business policies must make the same changes\
+ \ to their return business policy and then make another call. To\
+ \ learn more, visit https://www.ebay.com/sellercenter/news/2025-june/parts-accessories-return-policy."
+ 25701:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "One or more of the supplied SKU(s) could not be found\
+ \ in the system."
+ 25702:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{skuValue} could not be found or is not available in\
+ \ the system."
+ 25703:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The following SKU is already a member of another group.\
+ \ SKU : {skuValue} groupId : {inventoryItemGroupKey}"
+ 25704:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The following SKU is already listed as a single SKU\
+ \ listing. SKU : {skuValue} Listing ID : {listingId}"
+ 25705:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The Inventory Item Group named {inventoryItemGroupKey}\
+ \ could not be found or is not available in the system."
+ 25002:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "A user error has occurred. {additionalInfo}"
+ 25003:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has an invalid price. {additionalInfo}"
+ 25004:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has an invalid quantity. {additionalInfo}"
+ 25005:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has an invalid category ID. {additionalInfo}"
+ 25709:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid value for {fieldName}. {additionalInfo}"
+ 25006:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has an invalid listing option. {additionalInfo}"
+ 25007:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has invalid data in the associated Fulfillment\
+ \ policy. {additionalInfo}"
+ 25008:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has invalid data in the associated Payment\
+ \ policy. {additionalInfo}"
+ 25009:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has invalid data in the associated Return\
+ \ policy. {additionalInfo}"
+ 25011:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has invalid tax information. {additionalInfo}"
+ 25012:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid inventory location. {additionalInfo}"
+ 25013:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This error code is associated with multiple possible\
+ \ errors. See 25013 Invalid data in the Inventory Item\
+ \ Group for the full list of messages returned and any available\
+ \ troubleshooting information."
+ 25014:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has invalid pictures. {additionalInfo}"
+ 25015:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has an invalid picture URL. {additionalInfo}"
+ 25016:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The {fieldName} value is invalid. {additionalInfo}"
+ 25017:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This error code is associated with multiple possible\
+ \ errors. See 25017 Missing information in fields for\
+ \ the full list of messages returned and any available troubleshooting\
+ \ information."
+ 25018:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This error code is associated with multiple possible\
+ \ errors. See 25018 Incomplete account information\
+ \ for the full list of messages returned and any available troubleshooting\
+ \ information."
+ 25019:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This error code is associated with multiple possible\
+ \ errors. See 25019 Cannot revise the listing for the\
+ \ full list of messages returned and any available troubleshooting\
+ \ information."
+ 25020:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has invalid shipping package details.\
+ \ {additionalInfo}"
+ 25021:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has invalid item condition information.\
+ \ {additionalInfo}"
+ 25022:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid attribute. {fieldName}"
+ 25023:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid compatibility information. {additionalInfo}"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 25025:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "Concurrent access of the same Inventory or Inventory\
+ \ Item Group object is not allowed. Please try again later."
+ 25001:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "A system error has occurred. {additionalInfo}"
+ "204":
+ description: "No Content"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory"
+ delete:
+ tags:
+ - "inventory_item_group"
+ description: "This call deletes the inventory item group for a given inventoryItemGroupKey\
+ \ value."
+ operationId: "deleteInventoryItemGroup"
+ parameters:
+ - name: "inventoryItemGroupKey"
+ in: "path"
+ description: "This path parameter specifies the unique identifier of the inventory\
+ \ item group being deleted. This value is assigned by the seller when an\
+ \ inventory item group is created."
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 25705:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The Inventory Item Group named {inventoryItemGroupKey}\
+ \ could not be found or is not available in the system."
+ 25709:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid value for {fieldName}. {additionalInfo}"
+ 25710:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "We didn't find the resource/entity you are requesting.\
+ \ Please verify the request"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 25001:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "A system error has occurred. {additionalInfo}"
+ "204":
+ description: "No Content"
+ "404":
+ description: "Not Found"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory"
+ /bulk_migrate_listing:
+ post:
+ tags:
+ - "listing"
+ description: "This call is used to convert existing eBay Listings to the corresponding\
+ \ Inventory API objects. If an eBay listing is successfully migrated to the\
+ \ Inventory API model, new Inventory Location, Inventory Item, and Offer objects\
+ \ are created. For a multiple-variation listing that is successfully migrated,\
+ \ in addition to the three new Inventory API objects just mentioned, an Inventory\
+ \ Item Group object will also be created. If the eBay listing is a motor vehicle\
+ \ part or accessory listing with a compatible vehicle list (ItemCompatibilityList\
+ \ container in Trading API's Add/Revise/Relist/Verify calls), a Product Compatibility\
+ \ object will be created.
Migration Requirements
To be\
+ \ eligible for migration, the active eBay listings must meet the following\
+ \ requirements:
Unsupported Listing\
+ \ Features
The following features are not yet available to be set\
+ \ or modified through the Inventory API, but they will remain on the active\
+ \ eBay listing, even after a successful migration to the Inventory model.\
+ \ The downside to this is that the seller will be completely blocked (in APIs\
+ \ or My eBay) from revising these features/settings once the migration takes\
+ \ place:- Any listing-level Buyer Requirements
- Listing enhancements\
+ \ like a bold listing title or Gallery Plus
Making the Call
In\
+ \ the request payload of the bulkMigrateListings call, the\
+ \ seller will pass in an array of one to five eBay listing IDs (aka Item IDs).\
+ \ To save time and hassle, that seller should do a pre-check on each listing\
+ \ to make sure those listings meet the requirements to be migrated to the\
+ \ new Inventory model. This method also requires the Content-Type\
+ \ request header. See the HTTP request headers for more information. There are no path or query\
+ \ parameters for this call.
Call Response
If an eBay listing\
+ \ is migrated successfully to the new Inventory model, the following will\
+ \ occur:- An Inventory Item object will be created for the item(s) in\
+ \ the listing, and this object will be accessible through the Inventory API
- An\
+ \ Offer object will be created for the listing, and this object will be accessible\
+ \ through the Inventory API
- An Inventory Location object will be created\
+ \ and associated with the Offer object, as an Inventory Location must be associated\
+ \ with a published Offer
The response payload of the Bulk Migrate\
+ \ Listings call will show the results of each listing migration. These results\
+ \ include an HTTP status code to indicate the success or failure of each listing\
+ \ migration, the SKU value associated with each item, and if the migration\
+ \ is successful, an Offer ID value. The SKU value will be used in the Inventory\
+ \ API to manage the Inventory Item object, and the Offer ID value will be\
+ \ used in the Inventory API to manage the Offer object. Errors and/or warnings\
+ \ containers will be returned for each listing where an error and/or warning\
+ \ occurred with the attempted migration.
If a multiple-variation listing\
+ \ is successfully migrated, along with the Offer and Inventory Location objects,\
+ \ an Inventory Item object will be created for each product variation within\
+ \ the listing, and an Inventory Item Group object will also be created, grouping\
+ \ those variations together in the Inventory API platform. For a motor vehicle\
+ \ part or accessory listing that has a specified list of compatible vehicles,\
+ \ in addition to the Inventory Item, Inventory Location, and Offer objects\
+ \ that are created, a Product Compatibility object will also be created in\
+ \ the Inventory API platform."
+ operationId: "bulkMigrateListing"
+ parameters:
+ - name: "Content-Type"
+ in: "header"
+ description: "This header indicates the format of the request body provided\
+ \ by the client. Its value should be set to application/json.
For\
+ \ more information, refer to HTTP request headers."
+ required: true
+ schema:
+ type: "string"
+ requestBody:
+ description: "Details of the listings that needs to be migrated into Inventory"
+ content:
+ application/json:
+ schema:
+ description: "Details of the listings that needs to be migrated into\
+ \ Inventory"
+ $ref: "#/components/schemas/BulkMigrateListing"
+ required: true
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/BulkMigrateListingResponse"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 25718:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Cannot migrate listing. {additionalInfo}"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 25001:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "Any System error. {additionalInfo}"
+ "207":
+ description: "Multi-Status"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory"
+ /listing/{listingId}/sku/{sku}/locations:
+ get:
+ tags:
+ - "listing"
+ description: "This method allows sellers to retrieve the locations mapped to\
+ \ a specific SKU within a listing.
The listingId and sku\
+ \ of the listing are passed in as path parameters. This method only retrieves\
+ \ location mappings for a single SKU value; if a seller wishes to retrieve\
+ \ the location mappings for all items in a multiple-variation listing, this\
+ \ method must be called for each variation in the listing.
If there\
+ \ are fulfillment center locations mapped to the SKU, they will be returned\
+ \ in the locations array. If no locations are mapped to the SKU, status\
+ \ code 404 Not Found will be returned."
+ operationId: "getSkuLocationMapping"
+ parameters:
+ - name: "listingId"
+ in: "path"
+ description: "This path parameter specifies the unique identifier of the listing\
+ \ that the SKU belongs to for which all mapped locations will be retrieved.
Use\
+ \ the getOffers method of the Inventory API or\
+ \ the GetMyEbaySelling method of the Trading API\
+ \ to retrieve all listing IDs for all active listings."
+ required: true
+ schema:
+ type: "string"
+ - name: "sku"
+ in: "path"
+ description: "This path parameter specifies the seller-defined SKU value of\
+ \ the item/variation for which location mappings will be retrieved. This\
+ \ SKU value must be defined in the listing specified in listingId\
+ \ parameter
Use the getOffers method of the Inventory API or\
+ \ the GetMyEbaySelling method of the Trading API\
+ \ to retrieve all SKUs for all active listings."
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/LocationMapping"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 25904:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid listing ID or the listing does not belong to\
+ \ the seller."
+ 25905:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid SKU value or the SKU value is not defined in\
+ \ the listing."
+ 25002:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Any User error. {additionalInfo}"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 25001:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "Any System error. {additionalInfo}"
+ "404":
+ description: "Not Found"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory"
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory.readonly"
+ put:
+ tags:
+ - "listing"
+ description: "This method allows sellers to map multiple fulfillment center\
+ \ locations to single-SKU listing, or to a single SKU within a multiple-variation\
+ \ listing. This allows eBay to leverage the location metadata associated with\
+ \ a seller’s fulfillment centers to calculate more accurate estimated delivery\
+ \ dates on their listing.
Note: While\
+ \ location mappings can be created for listings on any eBay marketplace, the\
+ \ improved delivery date estimate feature is currently only supported for\
+ \ US-based fulfillment centers shipping domestically within the US.
The\
+ \ listing for which the locations will be mapped is specified through the\
+ \ listingId and sku values associated with the item. Note that\
+ \ only a single SKU value can be identified; if the seller wishes to map locations\
+ \ to multiple/all SKU values in a multiple-variation listing, this method\
+ \ must be called for each of those SKUs within the listing.
Note: Sellers should keep track of listingId/sku\
+ \ pairs that have been used for location mapping, as there is no programmatic\
+ \ way to retrieve or delete these pairs at this time.
In the case\
+ \ of replacing/updating existing location mappings, this method will do a\
+ \ complete replacement of the location mappings associated with a SKU. This\
+ \ means that each existing location mappings that the seller wants to continue\
+ \ to associate with the SKU are required in the update call, regardless of\
+ \ if they are affected by the update.
This method is only supported\
+ \ for inventory locations that have FULFILLMENT_CENTER as one\
+ \ of their locationTypes. For more information on fulfillment center\
+ \ locations, see Create a fulfillment center location.
For\
+ \ more information on location mapping features, see Multi-warehouse program in the Selling Integration\
+ \ Guide.
Note: Only listings with\
+ \ SKU values are supported. Sellers using listings creating through the Trading\
+ \ API can add a SKU value to their single variation listing through the Item.SKU field during listing creation or by using\
+ \ the ReviseItem family of calls."
+ operationId: "createOrReplaceSkuLocationMapping"
+ parameters:
+ - name: "listingId"
+ in: "path"
+ description: "This path parameter specifies the unique identifier of the listing\
+ \ for which multiple fulfillment center locations will be mapped to a SKU\
+ \ within that listing.
Use the getOffers method of the Inventory API or the GetMyEbaySelling method of the Trading API to retrieve all\
+ \ listing IDs for all active listings."
+ required: true
+ schema:
+ type: "string"
+ - name: "sku"
+ in: "path"
+ description: "This path parameter specifies the seller-defined SKU value of\
+ \ the item/variation for which multiple fulfillment center locations will\
+ \ be mapped. This SKU value must be defined in the listing specified in\
+ \ listingId parameter.
Use the getOffers method of the Inventory API or the GetMyEbaySelling method of the Trading API to retrieve all\
+ \ listing IDs for all active listings.
Note: SKU values can be updated by a seller at any time. If a seller\
+ \ updates a SKU value that is being used for location mapping, this change\
+ \ will not be reflected until the mapping is updated through the createOrReplaceSkuLocationMapping\
+ \ method."
+ required: true
+ schema:
+ type: "string"
+ - name: "Content-Type"
+ in: "header"
+ description: "This header indicates the format of the request body provided\
+ \ by the client. Its value should be set to application/json.
For\
+ \ more information, refer to HTTP request headers."
+ required: true
+ schema:
+ type: "string"
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/LocationMapping"
+ required: true
+ responses:
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 25904:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid listing ID or the listing does not belong to\
+ \ the seller."
+ 25905:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid SKU value or the SKU value is not defined in\
+ \ the listing."
+ 25906:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The provided inventory location must be a Fulfillment\
+ \ Center. Please use a Fulfillment Center location or use updateInventoryLocation\
+ \ to change location type to FULFILLMENT_CENTER."
+ 25002:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Any User error. {additionalInfo}"
+ 25900:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "One or more inventory locations could not be found for\
+ \ the seller."
+ 25901:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Missing a location. Please specify one or more inventory\
+ \ locations."
+ 25902:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "One or more duplicate inventory locations were specified.\
+ \ Unique inventory locations must be used."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 25001:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "Any System error. {additionalInfo}"
+ "204":
+ description: "No Content"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory"
+ delete:
+ tags:
+ - "listing"
+ description: "This method allows sellers to remove all location mappings associated\
+ \ with a specific SKU within a listing.
The listingId and sku\
+ \ of the listing are passed in as path parameters.
Important! To remove all location\
+ \ mappings from a multiple-variation listing, this method must be used for\
+ \ each individual SKU in the listing.
"
+ operationId: "deleteSkuLocationMapping"
+ parameters:
+ - name: "listingId"
+ in: "path"
+ description: "This path parameter specifies the unique identifier of the listing\
+ \ that the SKU belongs to for which all mapped locations will be removed.
Use\
+ \ the getOffers method of the Inventory API or\
+ \ the GetMyEbaySelling method of the Trading API\
+ \ to retrieve all listing IDs for all active listings."
+ required: true
+ schema:
+ type: "string"
+ - name: "sku"
+ in: "path"
+ description: "This path parameter specifies the seller-defined SKU value of\
+ \ the item/variation for which location mappings will be removed. This SKU\
+ \ value must be defined in the listing specified in listingId parameter
Use\
+ \ the getOffers method of the Inventory API or\
+ \ the GetMyEbaySelling method of the Trading API\
+ \ to retrieve all SKUs for all active listings."
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 25904:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid listing ID or the listing does not belong to\
+ \ the seller."
+ 25905:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid SKU value or the SKU value is not defined in\
+ \ the listing."
+ 25002:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Any User error. {additionalInfo}"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 25001:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "Any System error. {additionalInfo}"
+ "204":
+ description: "No Content"
+ "404":
+ description: "Not Found"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory"
+ /bulk_create_offer:
+ post:
+ tags:
+ - "offer"
+ description: "This call creates multiple offers (up to 25) for specific inventory\
+ \ items on a specific eBay marketplace. Although it is not a requirement for\
+ \ the seller to create complete offers (with all necessary details) right\
+ \ from the start, eBay recommends that the seller provide all necessary details\
+ \ with this call since there is currently no bulk operation available to update\
+ \ multiple offers with one call. The following fields are always required\
+ \ in the request payload: sku, marketplaceId,\
+ \ and (listing) format.
Important!Publish offer note: Fields\
+ \ may be optional or conditionally required when calling this method, but\
+ \ become required when publishing the offer to create an active listing. For\
+ \ this method, see Offer fields for a list of fields required to publish\
+ \ an offer.
Other information that will be required before\
+ \ a offer can be published are highlighted below: - Inventory location
\
+ \ - Offer price
- Available quantity
- eBay listing category
\
+ \ - Referenced listing policy profiles to set payment, return, and fulfillment\
+ \ values/settings
Note:\
+ \ Though the includeCatalogProductDetails parameter is not\
+ \ required to be submitted in the request, the parameter defaults to true\
+ \ if omitted.
Note: In addition\
+ \ to the authorization header, which is required for all Inventory\
+ \ API calls, this call also requires the Content-Type and Content-Language\
+ \ headers. See the HTTP request headers for more information.
If the call\
+ \ is successful, unique offerId values are returned in the\
+ \ response for each successfully created offer. The offerId\
+ \ value will be required for many other offer-related calls. Note that this\
+ \ call only stages an offer for publishing. The seller must run either the\
+ \ publishOffer, bulkPublishOffer, or publishOfferByInventoryItemGroup\
+ \ call to convert offer(s) into an active single- or multiple-variation listing.
For\
+ \ those who prefer to create a single offer per call, the createOffer\
+ \ method can be used instead.
"
+ operationId: "bulkCreateOffer"
+ parameters:
+ - name: "Content-Language"
+ in: "header"
+ description: "This header sets the natural language that will be used in the\
+ \ field values of the request payload. For example, the value passed in\
+ \ this header should be en-US for English or de-DE\
+ \ for German.
For more information on the Content-Language header,\
+ \ refer to HTTP request headers."
+ required: true
+ schema:
+ type: "string"
+ - name: "Content-Type"
+ in: "header"
+ description: "This header indicates the format of the request body provided\
+ \ by the client. Its value should be set to application/json.
For\
+ \ more information, refer to HTTP request headers."
+ required: true
+ schema:
+ type: "string"
+ requestBody:
+ description: "Details of the offer for the channel"
+ content:
+ application/json:
+ schema:
+ description: "Details of the offer for the channel"
+ $ref: "#/components/schemas/BulkEbayOfferDetailsWithKeys"
+ required: true
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/BulkOfferResponse"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 25729:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The combination of SKU, marketplaceId and format should\
+ \ be unique."
+ 25761:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Discount pricing is not applicable for auction offer."
+ 25730:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The number of offers in the request cannot exceed {additionalInfo}"
+ 25762:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "availableQuantity is not applicable for auction offer."
+ 25763:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "quantityLimitPerBuyer is not applicable for auction\
+ \ offer."
+ 25764:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "eBayPlusIfEligible is not applicable for auction offer."
+ 25702:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "SKU {additionalInfo} is not available in the system"
+ 25735:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid SKU, marketplaceId or format."
+ 25709:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid request. Invalid value for field {additionalInfo}"
+ 25752:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "listingStartDate provided is invalid."
+ 25755:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "listingDuration is required for auction offer."
+ 25756:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Auction format is not permitted with a SKU that is part\
+ \ of an InventoryItemGroup."
+ 25757:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "auctionStartPrice is required for auction offer."
+ 25758:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "auctionStartPrice and auctionReservePrice are not supported\
+ \ for fixed price offer."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 25001:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "Any System error. {additionalInfo}"
+ "207":
+ description: "Multi-Status"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory"
+ /bulk_publish_offer:
+ post:
+ tags:
+ - "offer"
+ description: "Note: Each listing\
+ \ can be revised up to 250 times in one calendar day. If this revision threshold\
+ \ is reached, the seller will be blocked from revising the item until the\
+ \ next calendar day.
This call is used to convert unpublished offers\
+ \ (up to 25) into published offers, or live eBay listings. The unique identifier\
+ \ (offerId) of each offer to publish is passed into the request\
+ \ payload. It is possible that some unpublished offers will be successfully\
+ \ created into eBay listings, but others may fail. The response payload will\
+ \ show the results for each offerId value that is passed\
+ \ into the request payload. The errors and warnings\
+ \ containers will be returned for an offer that had one or more issues being\
+ \ published.
Important!Publish\
+ \ offer note: Fields may be optional or conditionally required when calling\
+ \ the create or update methods, but become required when publishing the offer\
+ \ to create active listings. For this method, see Offer fields for a list of fields required to publish\
+ \ an offer.
For those who prefer to publish one offer\
+ \ per call, the publishOffer method can be used instead.\
+ \ In the case of a multiple-variation listing, the publishOfferByInventoryItemGroup\
+ \ call should be used instead, as this call will convert all unpublished offers\
+ \ associated with an inventory item group into a multiple-variation listing."
+ operationId: "bulkPublishOffer"
+ parameters:
+ - name: "Content-Type"
+ in: "header"
+ description: "This header indicates the format of the request body provided\
+ \ by the client. Its value should be set to application/json.
For\
+ \ more information, refer to HTTP request headers."
+ required: true
+ schema:
+ type: "string"
+ requestBody:
+ description: "The base request of the bulkPublishOffer method."
+ content:
+ application/json:
+ schema:
+ description: "The base request of the bulkPublishOffer\
+ \ method."
+ $ref: "#/components/schemas/BulkOffer"
+ required: true
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/BulkPublishResponse"
+ x-response-codes:
+ errors:
+ 25028:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{field} is not applicable and has been dropped"
+ 25124:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This P&A listing requires a minimum 30-day return period\
+ \ and seller-paid return shipping. eBay automatically updated the\
+ \ listing's return policy settings to meet these requirements. Sellers\
+ \ using business policies should update their return business policy\
+ \ for future P&A listings. To learn more, visit https://www.ebay.com/sellercenter/news/2025-june/parts-accessories-return-policy."
+ 25030:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{field} is not applicable for the condition and has\
+ \ been dropped"
+ 25401:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "Invalid listing options removed. {additionalInfo}"
+ 25753:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "listingStartDate is in the past or the offer is live.\
+ \ Value is not updated on the listing."
+ 25033:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Duplicate policy IDs found"
+ 25402:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "System warning. {additionalInfo}"
+ 25037:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Item level Eco Participation Fee will be ignored"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 25088:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The email address provided is formatted incorrectly."
+ 25601:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid attribute. {fieldName}"
+ 25089:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "No more than {replaceable_value} global compliance policies\
+ \ allowed. Excess policies ignored."
+ 25730:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The number of offers in the request cannot exceed {additionalInfo}."
+ 25090:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "No more than {replaceable_value} compliance policies\
+ \ per region allowed. Excess policies ignored."
+ 25731:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "OfferId should be unique in the request."
+ 25091:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "No more than a total of {replaceable_value} compliance\
+ \ policies allowed. Excess policies ignored."
+ 25604:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Input error. {additionalInfo}"
+ 25732:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Offers associated with SKUs that are part of a variation\
+ \ group cannot be published using this endpoint."
+ 25092:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "No more than {replaceable_value} global takeback policy\
+ \ allowed."
+ 25093:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "No more than {replaceable_value} takeback policy per\
+ \ region allowed. Excess policies ignored."
+ 25094:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "No more than a total of {replaceable_value} takeback\
+ \ policies allowed."
+ 25095:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Region invalid for regional custom policy. Regions allowed\
+ \ are {replaceable_value}."
+ 25104:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Regulatory document ID(s) {replaceable_value} not found.\
+ \ Please use valid ID(s)."
+ 25106:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Regulatory document structure incorrect. Max allowed\
+ \ number of entries is {replaceable_value}."
+ 25107:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid document state for ID(s) {replaceable_value}.\
+ \ Documents must be in the SUBMITTED or ACCEPTED state."
+ 25108:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Product Safety structure incorrect for {replaceable_value}.\
+ \ Max allowed number of entries is {replaceable_value}."
+ 25109:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Product safety information incomplete. Your listing\
+ \ must include pictograms or safety statements."
+ 25110:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Manufacturer address information is incomplete. When\
+ \ providing the address, please provide the street, city, postal\
+ \ code and country"
+ 25111:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Manufacturer information is incomplete. Please provide\
+ \ the company name."
+ 25752:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "listingStartDate provided is invalid."
+ 25112:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Responsible Person structure incorrect for {replaceable_value}.\
+ \ Max allowed number of entries is {replaceable_value}."
+ 25113:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Responsible Person address information is incomplete.\
+ \ When providing the address, please provide the street, city, postal\
+ \ code and country"
+ 25114:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Responsible Person information is incomplete. Please\
+ \ provide the company name."
+ 25115:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Either the Manufacturer or at least one of the Responsible\
+ \ Persons must be located in the EU."
+ 25116:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Please provide a minimum of {replaceable_value} and\
+ \ a maximum of {replaceable_value} types for a Responsible Person."
+ 25118:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Seller must provide at least one form of contact info\
+ \ for Manufacturer - either address, email, contact URL or phone."
+ 25119:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Seller must provide at least one form of contact info\
+ \ for Responsible Person - either address, email, contact URL or\
+ \ phone."
+ 25760:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "shipToLocationAvailability quantity insufficient to\
+ \ create auction listings."
+ 25120:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "When listing in {categoryName}, key information such\
+ \ as {fieldName} comes from eBay’s catalog and should be left blank."
+ 25121:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "When listing in {categoryName}, sellers are required\
+ \ to adopt eBay’s catalog data which will provide all the necessary\
+ \ details for the product."
+ 25122:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The contact URL is incorrectly formatted. Please update\
+ \ the formatting."
+ 25123:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This P&A listing has a non-compliant domestic return\
+ \ policy. Please update the return window to 30-days (or more) and/or\
+ \ update return shipping cost payer to Seller, and then make another\
+ \ call. Sellers using business policies must make the same changes\
+ \ to their return business policy and then make another call. To\
+ \ learn more, visit https://www.ebay.com/sellercenter/news/2025-june/parts-accessories-return-policy."
+ 25766:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The takeBackPolicyId field must be a long value type.\
+ \ Please correct the error."
+ 25767:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The productCompliancePolicyId field must be a long value\
+ \ type. Please correct the error."
+ 25002:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Any User error. {additionalInfo}"
+ 25003:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid price. {additionalInfo}"
+ 25004:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid quantity. {additionalInfo}"
+ 25005:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid category. {additionalInfo}"
+ 25006:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid listing option. {additionalInfo}"
+ 25007:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid Shipping policy information. {additionalInfo}"
+ 25008:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid Payment policy information. {additionalInfo}"
+ 25009:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid Return policy information. {additionalInfo}"
+ 25011:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid tax information. {additionalInfo}"
+ 25012:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid location. {additionalInfo}"
+ 25013:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This error code is associated with multiple possible\
+ \ errors. See 25013 Invalid data in the Inventory Item\
+ \ Group for the full list of messages returned and any available\
+ \ troubleshooting information."
+ 25014:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid pictures. {additionalInfo}"
+ 25015:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid picture URL. {additionalInfo}"
+ 25016:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid {fieldName}. {additionalInfo}"
+ 25017:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This error code is associated with multiple possible\
+ \ errors. See 25017 Missing information in fields for\
+ \ the full list of messages returned and any available troubleshooting\
+ \ information."
+ 25018:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This error code is associated with multiple possible\
+ \ errors. See 25018 Incomplete account information\
+ \ for the full list of messages returned and any available troubleshooting\
+ \ information."
+ 25019:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This error code is associated with multiple possible\
+ \ errors. See 25019 Cannot revise the listing for the\
+ \ full list of messages returned and any available troubleshooting\
+ \ information."
+ 25020:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid package details. {additionalInfo}"
+ 25021:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid condition information. {additionalInfo}"
+ 25022:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid attribute. {fieldName}"
+ 25023:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid compatibility information. {additionalInfo}"
+ 25026:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Selling limits exceeded. {additionalInfo}"
+ 25029:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{field} is required for this category."
+ 25031:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{field} is not valid and needs to be a number between\
+ \ {min} and {max}"
+ 25032:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{field} is not valid"
+ 25034:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Only {max value} policies can be specified"
+ 25035:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The specified policy is not found for the market place"
+ 25036:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The policy(ies) {PolicyId} is not of type {PolicyEnum}"
+ 25038:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{ItemId} cannot be revised if the item has a bid or\
+ \ a best offer or is ending within 12 hours"
+ 25039:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{ItemId} cannot be revised if the item has a bid or\
+ \ a best offer and is ending within 12 hours"
+ 25040:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{ItemId} cannot be revised if the item has a bid or\
+ \ a best offer and is ending within 12 hours"
+ 25041:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "When listing an item with Refurbished condition, maximum\
+ \ handling time must be {replaceable_value} business day(s)."
+ 25042:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "When listing an item with Refurbished condition, free\
+ \ shipping must be provided."
+ 25043:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "When listing an item with Refurbished condition, returns\
+ \ must be accepted."
+ 25044:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "When listing an item with Refurbished condition, refund\
+ \ must be provided as Money Back."
+ 25045:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "When listing an item with Refurbished condition, the\
+ \ minimum time you'll accept returns must be {replaceable_value}\
+ \ days."
+ 25046:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "When listing an item with Refurbished condition, seller\
+ \ must pay the cost for return shipping."
+ 25047:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Seller is not eligible to use Refurbished Item Condition"
+ 25048:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Seller is not eligible to use Refurbished Item Condition\
+ \ in this Category"
+ 25049:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Seller is not eligible to use Refurbished Item Condition\
+ \ for the selected Brand"
+ 25050:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "When listing an item with Refurbished condition, {replaceable_value}\
+ \ cannot be used in the Title."
+ 25051:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "When listing an item with Refurbished condition, {replaceable_value}\
+ \ cannot be used in the Subtitle"
+ 25052:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "When listing an item with Refurbished condition, at\
+ \ least {replaceable_value} images must be provided"
+ 25709:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid offerId"
+ 25713:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This Offer is not available : {additionalInfo}."
+ 25076:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{replaceable_value} ID(s) {replaceable_value} not found.\
+ \ Please use valid ID(s)."
+ 25077:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Duplicate Regulatory ID(s) {replaceable_value} sent\
+ \ in the request. Duplicate ID(s) have been ignored."
+ 25078:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Hazmat structure incorrect for {replaceable_value}."
+ 25079:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Repair score invalid. Repair score must be in the range\
+ \ from {replaceable_value} to {replaceable_value} with one decimal\
+ \ place."
+ 25080:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The value of the {0} field is invalid. Field must not\
+ \ exceed {replaceable_value} characters."
+ 25081:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Hazardous material information incomplete. Your listing\
+ \ must include hazardous statements."
+ 25083:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Energy efficiency image is missing. Image is required\
+ \ with image description."
+ 25084:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The listing must have both an energy efficiency label\
+ \ and a product information sheet."
+ 25086:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The URL provided must be an eBay Picture Service URL."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 25025:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "Concurrent access of Inventory or InventoryItemGroup.\
+ \ Please try again later"
+ 25001:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "Any System error. {additionalInfo}"
+ "207":
+ description: "Multi-Status"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory"
+ /offer:
+ get:
+ tags:
+ - "offer"
+ description: "This call retrieves all existing offers for the specified SKU\
+ \ value. The seller has the option of limiting the offers that are retrieved\
+ \ to a specific eBay marketplace, or to a listing format.
Note: At this time, the same SKU value can not\
+ \ be offered across multiple eBay marketplaces, so the marketplace_id\
+ \ query parameter currently does not have any practical use for this call.
Note: The same SKU can be offered through\
+ \ an auction and a fixed-price listing concurrently. If this is the case,\
+ \ getOffers will return two offers. Otherwise, only one offer will\
+ \ be returned.
The authorization header is the only\
+ \ required HTTP header for this call. See the HTTP request headers\
+ \ section for more information."
+ operationId: "getOffers"
+ parameters:
+ - name: "format"
+ in: "query"
+ description: "This enumeration value sets the listing format for the offers\
+ \ being retrieved. This query parameter will be passed in if the seller\
+ \ only wants to see offers in a specified listing format, such as FIXED_PRICE."
+ required: false
+ schema:
+ type: "string"
+ - name: "limit"
+ in: "query"
+ description: "The value passed in this query parameter sets the maximum number\
+ \ of records to return per page of data. Although this field is a string,\
+ \ the value passed in this field should be a positive integer value. If\
+ \ this query parameter is not set, up to 100 records will be returned on\
+ \ each page of results."
+ required: false
+ schema:
+ type: "string"
+ - name: "marketplace_id"
+ in: "query"
+ description: "The unique identifier of the eBay marketplace. This query parameter\
+ \ will be passed in if the seller only wants to see the product's offers\
+ \ on a specific eBay marketplace.
Note:\
+ \ At this time, the same SKU value can not be offered across multiple eBay\
+ \ marketplaces, so the marketplace_id query parameter currently\
+ \ does not have any practical use for this call."
+ required: false
+ schema:
+ type: "string"
+ - name: "offset"
+ in: "query"
+ description: "The value passed in this query parameter sets the page number\
+ \ to retrieve. Although this field is a string, the value passed in this\
+ \ field should be a integer value equal to or greater than 0.\
+ \ The first page of records has a value of 0, the second page\
+ \ of records has a value of 1, and so on. If this query parameter\
+ \ is not set, its value defaults to 0, and the first page of\
+ \ records is returned."
+ required: false
+ schema:
+ type: "string"
+ - name: "sku"
+ in: "query"
+ description: "The seller-defined SKU value is passed in as a query parameter.\
+ \ All offers associated with this product are returned in the response.\
+ \
Note: The same SKU\
+ \ can be offered through an auction and a fixed-price listing concurrently.\
+ \ If this is the case, getOffers will return two offers. Otherwise,\
+ \ only one offer will be returned.
Use the getInventoryItems method to retrieve SKU values.
Max\
+ \ length: 50."
+ required: false
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Offers"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 25706:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "You have provided invalid pagination values. {additionalInfo}."
+ 25709:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid value for {fieldName}. {additionalInfo}"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 25001:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "A system error has occurred. {additionalInfo}"
+ "404":
+ description: "Not Found"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory.readonly"
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory"
+ post:
+ tags:
+ - "offer"
+ description: "This call creates an offer for a specific inventory item on a\
+ \ specific eBay marketplace. It is up to the sellers whether they want to\
+ \ create a complete offer (with all necessary details) right from the start,\
+ \ or sellers can provide only some information with the initial createOffer\
+ \ call, and then make one or more subsequent updateOffer\
+ \ calls to complete the offer and prepare to publish the offer. Upon first\
+ \ creating an offer, the following fields are required in the request payload:\
+ \ sku, marketplaceId, and (listing) format.
Important!Publish\
+ \ offer note: Fields may be optional or conditionally required when calling\
+ \ this method, but become required when publishing the offer to create an\
+ \ active listing. For this method, see Offer fields for a list of fields required to publish\
+ \ an offer.
Other information that will be required before\
+ \ an offer can be published are highlighted below. These settings are either\
+ \ set with createOffer, or they can be set with a subsequent\
+ \ updateOffer call: - Inventory location
- Offer\
+ \ price
- Available quantity
- eBay listing category
- Referenced\
+ \ listing policy profiles to set payment, return, and fulfillment values/settings
\
+ \
Note: Though the includeCatalogProductDetails\
+ \ parameter is not required to be submitted in the request, the parameter\
+ \ defaults to true if omitted.
Note: In addition to the authorization header, which\
+ \ is required for all Inventory API calls, this call also requires the Content-Type\
+ \ and Content-Language headers. See the HTTP request headers for more information.If the call is successful,\
+ \ a unique offerId value is returned in the response. This\
+ \ value will be required for many other offer-related calls. Note that this\
+ \ call only stages an offer for publishing. The seller must run the publishOffer\
+ \ call to convert the offer to an active eBay listing.
For those who\
+ \ prefer to create multiple offers (up to 25 at a time) with one call, the\
+ \ bulkCreateOffer method can be used.
"
+ operationId: "createOffer"
+ parameters:
+ - name: "Content-Language"
+ in: "header"
+ description: "This header sets the natural language that will be used in the\
+ \ field values of the request payload. For example, the value passed in\
+ \ this header should be en-US for English or de-DE\
+ \ for German.
For more information on the Content-Language header,\
+ \ refer to HTTP request headers."
+ required: true
+ schema:
+ type: "string"
+ - name: "Content-Type"
+ in: "header"
+ description: "This header indicates the format of the request body provided\
+ \ by the client. Its value should be set to application/json.
For\
+ \ more information, refer to HTTP request headers."
+ required: true
+ schema:
+ type: "string"
+ requestBody:
+ description: "Details of the offer for the channel"
+ content:
+ application/json:
+ schema:
+ description: "Details of the offer for the channel"
+ $ref: "#/components/schemas/EbayOfferDetailsWithKeys"
+ required: true
+ responses:
+ "201":
+ description: "Created"
+ headers:
+ Content-Language:
+ schema:
+ type: "string"
+ description: "This response header sets the natural language that\
+ \ will be provided in the field values of the response payload."
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/OfferResponse"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 25761:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Discount pricing is not applicable for auction offer."
+ 25762:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "availableQuantity is not applicable for auction offer."
+ 25763:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "quantityLimitPerBuyer is not applicable for auction\
+ \ offer."
+ 25764:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "eBayPlusIfEligible is not applicable for auction offer."
+ 25702:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{skuValue} could not be found or is not available in\
+ \ the system."
+ 25752:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "listingStartDate provided is invalid."
+ 25755:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "listingDuration is required for auction offer."
+ 25756:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Auction format is not permitted with a SKU that is part\
+ \ of an InventoryItemGroup."
+ 25709:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid value for {fieldName}. {additionalInfo}"
+ 25757:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "auctionStartPrice is required for auction offer."
+ 25758:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "auctionStartPrice and auctionReservePrice are not supported\
+ \ for fixed price offer."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 25001:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "A system error has occurred. {additionalInfo}"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory"
+ /offer/{offerId}:
+ get:
+ tags:
+ - "offer"
+ description: "This call retrieves a specific published or unpublished offer.\
+ \ The unique identifier of the offer (offerId) is passed\
+ \ in at the end of the call URI.The authorization header is\
+ \ the only required HTTP header for this call. See the HTTP request\
+ \ headers section for more information.
"
+ operationId: "getOffer"
+ parameters:
+ - name: "offerId"
+ in: "path"
+ description: "This path parameter specifies the unique identifier of the offer\
+ \ that is to be retrieved.
Use the getOffers method to retrieve offer IDs."
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/EbayOfferDetailsWithAll"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 25713:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This Offer is not available : {additionalInfo}."
+ 25709:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid value for {fieldName}. {additionalInfo}"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 25001:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "A system error has occurred. {additionalInfo}"
+ "404":
+ description: "Not Found"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory.readonly"
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory"
+ put:
+ tags:
+ - "offer"
+ description: "This call updates an existing offer. An existing offer may be\
+ \ in published state (active eBay listing), or in an unpublished state and\
+ \ yet to be published with the publishOffer call. The unique\
+ \ identifier (offerId) for the offer to update is passed\
+ \ in at the end of the call URI.
The updateOffer\
+ \ call does a complete replacement of the existing offer object, so all fields\
+ \ that make up the current offer object are required, regardless of whether\
+ \ their values changed.
Important!Publish offer note: Fields\
+ \ may be optional or conditionally required when calling this method, but\
+ \ become required when publishing the offer to create an active listing. For\
+ \ this method, see Offer fields for a list of fields required to publish\
+ \ an offer.
Other information that is required before\
+ \ an unpublished offer can be published or before a published offer can be\
+ \ revised include: - Inventory location
- Offer price
- Available\
+ \ quantity
- eBay listing category
- Referenced listing policy\
+ \ profiles to set payment, return, and fulfillment values/settings
\
+ \ Note: Though the includeCatalogProductDetails\
+ \ parameter is not required to be submitted in the request, the parameter\
+ \ defaults to true if omitted from both the updateOffer\
+ \ and the createOffer calls. If a value is specified in the\
+ \ updateOffer call, this value will be used.
Note: In addition to the authorization\
+ \ header, which is required for all Inventory API calls, this call also requires\
+ \ the Content-Type and Content-Language headers.\
+ \ See the HTTP request headers for more information.
Note: Each listing can be revised up to 250 times in one\
+ \ calendar day. If this revision threshold is reached, the seller will be\
+ \ blocked from revising the item until the next calendar day.
For\
+ \ published offers, the listingDescription field is also\
+ \ required to update the offer/eBay listing. For unpublished offers, this\
+ \ field is not necessarily required unless it is already set for the unpublished\
+ \ offer.
"
+ operationId: "updateOffer"
+ parameters:
+ - name: "Content-Language"
+ in: "header"
+ description: "This header sets the natural language that will be used in the\
+ \ field values of the request payload. For example, the value passed in\
+ \ this header should be en-US for English or de-DE\
+ \ for German.
For more information on the Content-Language header,\
+ \ refer to HTTP request headers."
+ required: true
+ schema:
+ type: "string"
+ - name: "offerId"
+ in: "path"
+ description: "This path parameter specifies the unique identifier of the offer\
+ \ being updated.
Use the getOffers method to retrieve offer IDs."
+ required: true
+ schema:
+ type: "string"
+ - name: "Content-Type"
+ in: "header"
+ description: "This header indicates the format of the request body provided\
+ \ by the client. Its value should be set to application/json.
For\
+ \ more information, refer to HTTP request headers."
+ required: true
+ schema:
+ type: "string"
+ requestBody:
+ description: "Details of the offer for the channel"
+ content:
+ application/json:
+ schema:
+ description: "Details of the offer for the channel"
+ $ref: "#/components/schemas/EbayOfferDetailsWithId"
+ required: true
+ responses:
+ "200":
+ description: "Success"
+ headers:
+ Content-Language:
+ schema:
+ type: "string"
+ description: "This response header sets the natural language that\
+ \ will be provided in the field values of the response payload."
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/OfferResponse"
+ x-response-codes:
+ errors:
+ 25028:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{field} is not applicable and has been dropped"
+ 25124:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This P&A listing requires a minimum 30-day return period\
+ \ and seller-paid return shipping. eBay automatically updated the\
+ \ listing's return policy settings to meet these requirements. Sellers\
+ \ using business policies should update their return business policy\
+ \ for future P&A listings. To learn more, visit https://www.ebay.com/sellercenter/news/2025-june/parts-accessories-return-policy."
+ 25030:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{field} is not applicable for the condition and has\
+ \ been dropped"
+ 25401:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "Invalid listing options removed. {additionalInfo}"
+ 25753:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "listingStartDate is in the past or the offer is live.\
+ \ Value is not updated on the listing."
+ 25033:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Duplicate policy IDs found"
+ 25402:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "System warning. {additionalInfo}"
+ 25037:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Item level Eco Participation Fee will be ignored"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 25088:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The email address provided is formatted incorrectly."
+ 25601:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid attribute. {fieldName}"
+ 25089:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "No more than {replaceable_value} global compliance policies\
+ \ allowed. Excess policies ignored."
+ 25090:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "No more than {replaceable_value} compliance policies\
+ \ per region allowed. Excess policies ignored."
+ 25091:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "No more than a total of {replaceable_value} compliance\
+ \ policies allowed. Excess policies ignored."
+ 25604:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Input error. {additionalInfo}"
+ 25092:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "No more than {replaceable_value} global takeback policy\
+ \ allowed."
+ 25093:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "No more than {replaceable_value} takeback policy per\
+ \ region allowed. Excess policies ignored."
+ 25094:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "No more than a total of {replaceable_value} takeback\
+ \ policies allowed."
+ 25095:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Region invalid for regional custom policy. Regions allowed\
+ \ are {replaceable_value}."
+ 25104:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Regulatory document ID(s) {replaceable_value} not found.\
+ \ Please use valid ID(s)."
+ 25106:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Regulatory document structure incorrect. Max allowed\
+ \ number of entries is {replaceable_value}."
+ 25107:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid document state for ID(s) {replaceable_value}.\
+ \ Documents must be in the SUBMITTED or ACCEPTED state."
+ 25108:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Product Safety structure incorrect for {replaceable_value}.\
+ \ Max allowed number of entries is {replaceable_value}."
+ 25109:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Product safety information incomplete. Your listing\
+ \ must include pictograms or safety statements."
+ 25110:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Manufacturer address information is incomplete. When\
+ \ providing the address, please provide the street, city, postal\
+ \ code and country"
+ 25111:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Manufacturer information is incomplete. Please provide\
+ \ the company name."
+ 25752:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "listingStartDate provided is invalid."
+ 25112:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Responsible Person structure incorrect for {replaceable_value}.\
+ \ Max allowed number of entries is {replaceable_value}."
+ 25113:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Responsible Person address information is incomplete.\
+ \ When providing the address, please provide the street, city, postal\
+ \ code and country"
+ 25114:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Responsible Person information is incomplete. Please\
+ \ provide the company name."
+ 25115:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Either the Manufacturer or at least one of the Responsible\
+ \ Persons must be located in the EU."
+ 25756:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Auction format is not permitted with a SKU that is part\
+ \ of an InventoryItemGroup."
+ 25116:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Please provide a minimum of {replaceable_value} and\
+ \ a maximum of {replaceable_value} types for a Responsible Person."
+ 25757:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "auctionStartPrice is required for auction offer."
+ 25758:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "auctionStartPrice and auctionReservePrice are not supported\
+ \ for fixed price offer."
+ 25118:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Seller must provide at least one form of contact info\
+ \ for Manufacturer - either address, email, contact URL or phone."
+ 25119:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Seller must provide at least one form of contact info\
+ \ for Responsible Person - either address, email, contact URL or\
+ \ phone."
+ 25761:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Discount pricing is not applicable for auction offer."
+ 25762:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "availableQuantity is not applicable for auction offer."
+ 25122:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The contact URL is incorrectly formatted. Please update\
+ \ the formatting."
+ 25763:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "quantityLimitPerBuyer is not applicable for auction\
+ \ offer."
+ 25123:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This P&A listing has a non-compliant domestic return\
+ \ policy. Please update the return window to 30-days (or more) and/or\
+ \ update return shipping cost payer to Seller, and then make another\
+ \ call. Sellers using business policies must make the same changes\
+ \ to their return business policy and then make another call. To\
+ \ learn more, visit https://www.ebay.com/sellercenter/news/2025-june/parts-accessories-return-policy."
+ 25764:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "eBayPlusIfEligible is not applicable for auction offer."
+ 25766:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The takeBackPolicyId field must be a long value type.\
+ \ Please correct the error."
+ 25767:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The productCompliancePolicyId field must be a long value\
+ \ type. Please correct the error."
+ 25002:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "A user error has occurred. {additionalInfo}"
+ 25003:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has an invalid price. {additionalInfo}"
+ 25004:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has an invalid quantity. {additionalInfo}"
+ 25005:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has an invalid category ID. {additionalInfo}"
+ 25006:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has an invalid listing option. {additionalInfo}"
+ 25007:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has invalid data in the associated Fulfillment\
+ \ policy. {additionalInfo}"
+ 25008:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has invalid data in the associated Payment\
+ \ policy. {additionalInfo}"
+ 25009:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has invalid data in the associated Return\
+ \ policy. {additionalInfo}"
+ 25011:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has invalid tax information. {additionalInfo}"
+ 25012:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid inventory location. {additionalInfo}"
+ 25013:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This error code is associated with multiple possible\
+ \ errors. See 25013 Invalid data in the Inventory Item\
+ \ Group for the full list of messages returned and any available\
+ \ troubleshooting information."
+ 25014:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has invalid pictures. {additionalInfo}"
+ 25015:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has an invalid picture URL. {additionalInfo}"
+ 25016:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The {fieldName} value is invalid. {additionalInfo}"
+ 25017:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This error code is associated with multiple possible\
+ \ errors. See 25017 Missing information in fields for\
+ \ the full list of messages returned and any available troubleshooting\
+ \ information."
+ 25018:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This error code is associated with multiple possible\
+ \ errors. See 25018 Incomplete account information\
+ \ for the full list of messages returned and any available troubleshooting\
+ \ information."
+ 25019:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This error code is associated with multiple possible\
+ \ errors. See 25019 Cannot revise the listing for the\
+ \ full list of messages returned and any available troubleshooting\
+ \ information."
+ 25020:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has invalid shipping package details.\
+ \ {additionalInfo}"
+ 25021:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has invalid item condition information.\
+ \ {additionalInfo}"
+ 25022:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid attribute. {fieldName}"
+ 25023:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid compatibility information. {additionalInfo}"
+ 25026:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Selling limit exceeded. {additionalInfo}"
+ 25029:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{field} is required for this category."
+ 25031:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{field} is not valid and needs to be a number between\
+ \ {min} and {max}"
+ 25032:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{field} is not valid"
+ 25034:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Only {max value} policies can be specified"
+ 25035:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The specified policy is not found for the market place"
+ 25036:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The policy(ies) {PolicyId} is not of type {PolicyEnum}"
+ 25038:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{ItemId} cannot be revised if the item has a bid or\
+ \ a best offer or is ending within 12 hours"
+ 25039:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{ItemId} cannot be revised if the item has a bid or\
+ \ a best offer and is ending within 12 hours"
+ 25040:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{ItemId} cannot be revised if the item has a bid or\
+ \ a best offer and is ending within 12 hours"
+ 25710:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "We didn't find the resource/entity you are requesting.\
+ \ Please verify the request"
+ 25713:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This Offer is not available : {additionalInfo}."
+ 25076:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{replaceable_value} ID(s) {replaceable_value} not found.\
+ \ Please use valid ID(s)."
+ 25077:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Duplicate Regulatory ID(s) {replaceable_value} sent\
+ \ in the request. Duplicate ID(s) have been ignored."
+ 25078:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Hazmat structure incorrect for {replaceable_value}."
+ 25079:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Repair score invalid. Repair score must be in the range\
+ \ from {replaceable_value} to {replaceable_value} with one decimal\
+ \ place."
+ 25080:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The value of the {0} field is invalid. Field must not\
+ \ exceed {replaceable_value} characters."
+ 25081:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Hazardous material information incomplete. Your listing\
+ \ must include hazardous statements."
+ 25083:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Energy efficiency image is missing. Image is required\
+ \ with image description."
+ 25084:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The listing must have both an energy efficiency label\
+ \ and a product information sheet."
+ 25086:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The URL provided must be an eBay Picture Service URL."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 25025:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "Concurrent access of the same Inventory or Inventory\
+ \ Item Group object is not allowed. Please try again later."
+ 25001:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "A system error has occurred. {additionalInfo}"
+ "204":
+ description: "No Content"
+ "404":
+ description: "Not Found"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory"
+ delete:
+ tags:
+ - "offer"
+ description: "If used against an unpublished offer, this call will permanently\
+ \ delete that offer. In the case of a published offer (or live eBay listing),\
+ \ a successful call will either end the single-variation listing associated\
+ \ with the offer, or it will remove that product variation from the eBay listing\
+ \ and also automatically remove that product variation from the inventory\
+ \ item group. In the case of a multiple-variation listing, the deleteOffer\
+ \ will not remove the product variation from the listing if that variation\
+ \ has one or more sales. If that product variation has one or more sales,\
+ \ the seller can alternately just set the available quantity of that product\
+ \ variation to 0, so it is not available in the eBay search or\
+ \ View Item page, and then the seller can remove that product variation from\
+ \ the inventory item group at a later time."
+ operationId: "deleteOffer"
+ parameters:
+ - name: "offerId"
+ in: "path"
+ description: "This path parameter specifies the unique identifier of the offer\
+ \ being deleted.
Use the getOffers method to retrieve offer IDs."
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 25713:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This Offer is not available : {additionalInfo}."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 25001:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "A system error has occurred. {additionalInfo}"
+ "204":
+ description: "No Content"
+ "404":
+ description: "Not Found"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory"
+ /offer/get_listing_fees:
+ post:
+ tags:
+ - "offer"
+ description: "This call is used to retrieve the expected listing fees for up\
+ \ to 250 unpublished offers. An array of one or more offerId\
+ \ values are passed in under the offers container.
In\
+ \ the response payload, all listing fees are grouped by eBay marketplace,\
+ \ and listing fees per offer are not shown. A fees container\
+ \ will be returned for each eBay marketplace where the seller is selling the\
+ \ products associated with the specified offers.
Errors will occur\
+ \ if the seller passes in offerIds that represent published\
+ \ offers, so this call should be made before the seller publishes offers with\
+ \ the publishOffer."
+ operationId: "getListingFees"
+ parameters:
+ - name: "Content-Type"
+ in: "header"
+ description: "This header indicates the format of the request body provided\
+ \ by the client. Its value should be set to application/json.
For\
+ \ more information, refer to HTTP request headers."
+ required: true
+ schema:
+ type: "string"
+ requestBody:
+ description: "List of offers that needs fee information"
+ content:
+ application/json:
+ schema:
+ description: "List of offers that needs fee information"
+ $ref: "#/components/schemas/OfferKeysWithId"
+ required: false
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/FeesSummaryResponse"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 25754:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "One or more provided offerId(s) are invalid. All offerId(s)\
+ \ in the request should belong to an inventoryItem or inventoryItemGroup\
+ \ for a specific marketplaceId and format."
+ 25709:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid value for {fieldName}. {additionalInfo}"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 25001:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "A system error has occurred. {additionalInfo}"
+ "404":
+ description: "Not Found"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory.readonly"
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory"
+ /offer/{offerId}/publish:
+ post:
+ tags:
+ - "offer"
+ description: "Note: Each listing\
+ \ can be revised up to 250 times in one calendar day. If this revision threshold\
+ \ is reached, the seller will be blocked from revising the item until the\
+ \ next calendar day.
This call is used to convert an unpublished\
+ \ offer into a published offer, or live eBay listing. The unique identifier\
+ \ of the offer (offerId) is passed in at the end of the call\
+ \ URI.
Important!Publish\
+ \ offer note: Fields may be optional or conditionally required when calling\
+ \ the create or update methods, but become required when publishing the offer\
+ \ to create active listings. For this method, see Offer fields for a list of fields required to publish\
+ \ an offer.
For those who prefer to publish multiple offers\
+ \ (up to 25 at a time) with one call, the bulkPublishOffer\
+ \ method can be used. In the case of a multiple-variation listing, the publishOfferByInventoryItemGroup\
+ \ call should be used instead, as this call will convert all unpublished offers\
+ \ associated with an inventory item group into a multiple-variation listing."
+ operationId: "publishOffer"
+ parameters:
+ - name: "offerId"
+ in: "path"
+ description: "This path parameter specifies the unique identifier of the offer\
+ \ that is to be published.
Use the getOffers method to retrieve offer IDs."
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/PublishResponse"
+ x-response-codes:
+ errors:
+ 25028:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{field} is not applicable and has been dropped"
+ 25124:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This P&A listing requires a minimum 30-day return period\
+ \ and seller-paid return shipping. eBay automatically updated the\
+ \ listing's return policy settings to meet these requirements. Sellers\
+ \ using business policies should update their return business policy\
+ \ for future P&A listings. To learn more, visit https://www.ebay.com/sellercenter/news/2025-june/parts-accessories-return-policy."
+ 25030:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{field} is not applicable for the condition and has\
+ \ been dropped"
+ 25401:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid listing format removed {additionalInfo}"
+ 25753:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "listingStartDate is in the past or the offer is live.\
+ \ Value is not updated on the listing."
+ 25033:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Duplicate policy IDs found"
+ 25402:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "System warning. {additionalInfo}"
+ 25037:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Item level Eco Participation Fee will be ignored"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 25088:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The email address provided is formatted incorrectly."
+ 25601:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{fieldName} is an invalid attribute."
+ 25089:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "No more than {replaceable_value} global compliance policies\
+ \ allowed. Excess policies ignored."
+ 25090:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "No more than {replaceable_value} compliance policies\
+ \ per region allowed. Excess policies ignored."
+ 25091:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "No more than a total of {replaceable_value} compliance\
+ \ policies allowed. Excess policies ignored."
+ 25604:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Input error. {additionalInfo}"
+ 25092:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "No more than {replaceable_value} global takeback policy\
+ \ allowed."
+ 25093:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "No more than {replaceable_value} takeback policy per\
+ \ region allowed. Excess policies ignored."
+ 25094:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "No more than a total of {replaceable_value} takeback\
+ \ policies allowed."
+ 25095:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Region invalid for regional custom policy. Regions allowed\
+ \ are {replaceable_value}."
+ 25104:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Regulatory document ID(s) {replaceable_value} not found.\
+ \ Please use valid ID(s)."
+ 25106:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Regulatory document structure incorrect. Max allowed\
+ \ number of entries is {replaceable_value}."
+ 25107:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid document state for ID(s) {replaceable_value}.\
+ \ Documents must be in the SUBMITTED or ACCEPTED state."
+ 25108:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Product Safety structure incorrect for {replaceable_value}.\
+ \ Max allowed number of entries is {replaceable_value}."
+ 25109:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Product safety information incomplete. Your listing\
+ \ must include pictograms or safety statements."
+ 25110:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Manufacturer address information is incomplete. When\
+ \ providing the address, please provide the street, city, postal\
+ \ code and country"
+ 25111:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Manufacturer information is incomplete. Please provide\
+ \ the company name."
+ 25752:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "listingStartDate provided is invalid."
+ 25112:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Responsible Person structure incorrect for {replaceable_value}.\
+ \ Max allowed number of entries is {replaceable_value}."
+ 25113:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Responsible Person address information is incomplete.\
+ \ When providing the address, please provide the street, city, postal\
+ \ code and country"
+ 25114:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Responsible Person information is incomplete. Please\
+ \ provide the company name."
+ 25115:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Either the Manufacturer or at least one of the Responsible\
+ \ Persons must be located in the EU."
+ 25116:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Please provide a minimum of {replaceable_value} and\
+ \ a maximum of {replaceable_value} types for a Responsible Person."
+ 25118:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Seller must provide at least one form of contact info\
+ \ for Manufacturer - either address, email, contact URL or phone."
+ 25119:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Seller must provide at least one form of contact info\
+ \ for Responsible Person - either address, email, contact URL or\
+ \ phone."
+ 25760:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "shipToLocationAvailability quantity insufficient to\
+ \ create auction listings."
+ 25120:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "When listing in {categoryName}, key information such\
+ \ as {fieldName} comes from eBay’s catalog and should be left blank."
+ 25121:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "When listing in {categoryName}, sellers are required\
+ \ to adopt eBay’s catalog data which will provide all the necessary\
+ \ details for the product."
+ 25122:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The contact URL is incorrectly formatted. Please update\
+ \ the formatting."
+ 25123:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This P&A listing has a non-compliant domestic return\
+ \ policy. Please update the return window to 30-days (or more) and/or\
+ \ update return shipping cost payer to Seller, and then make another\
+ \ call. Sellers using business policies must make the same changes\
+ \ to their return business policy and then make another call. To\
+ \ learn more, visit https://www.ebay.com/sellercenter/news/2025-june/parts-accessories-return-policy."
+ 25766:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The takeBackPolicyId field must be a long value type.\
+ \ Please correct the error."
+ 25767:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The productCompliancePolicyId field must be a long value\
+ \ type. Please correct the error."
+ 25002:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "A user error has occurred. {additionalInfo}"
+ 25003:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has an invalid price. {additionalInfo}"
+ 25004:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has an invalid quantity. {additionalInfo}"
+ 25005:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has an invalid category ID. {additionalInfo}"
+ 25006:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has an invalid listing option. {additionalInfo}"
+ 25007:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has invalid data in the associated Fulfillment\
+ \ policy. {additionalInfo}"
+ 25008:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has invalid data in the associated Payment\
+ \ policy. {additionalInfo}"
+ 25009:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has invalid data in the associated Return\
+ \ policy. {additionalInfo}"
+ 25011:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid tax information. {additionalInfo}"
+ 25012:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid inventory location. {additionalInfo}"
+ 25013:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This error code is associated with multiple possible\
+ \ errors. See 25013 Invalid data in the Inventory Item\
+ \ Group for the full list of messages returned and any available\
+ \ troubleshooting information."
+ 25014:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has invalid pictures. {additionalInfo}"
+ 25015:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has an invalid picture URL. {additionalInfo}"
+ 25016:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The {fieldName} value is invalid. {additionalInfo}"
+ 25017:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This error code is associated with multiple possible\
+ \ errors. See 25017 Missing information in fields for\
+ \ the full list of messages returned and any available troubleshooting\
+ \ information."
+ 25018:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This error code is associated with multiple possible\
+ \ errors. See 25018 Incomplete account information\
+ \ for the full list of messages returned and any available troubleshooting\
+ \ information."
+ 25019:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This error code is associated with multiple possible\
+ \ errors. See 25019 Cannot revise the listing for the\
+ \ full list of messages returned and any available troubleshooting\
+ \ information."
+ 25020:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has invalid shipping package details.\
+ \ {additionalInfo}"
+ 25021:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The eBay listing associated with the inventory item,\
+ \ or the unpublished offer has invalid item condition information.\
+ \ {additionalInfo}"
+ 25022:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid attribute. {fieldName}"
+ 25023:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid compatibility information. {additionalInfo}"
+ 25026:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Selling limit exceeded. {additionalInfo}"
+ 25029:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{field} is required for this category."
+ 25031:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{field} is not valid and needs to be a number between\
+ \ {min} and {max}"
+ 25032:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{field} is not valid"
+ 25034:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Only {max value} policies can be specified"
+ 25035:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The specified policy is not found for the market place"
+ 25036:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The policy(ies) {PolicyId} is not of type {PolicyEnum}"
+ 25038:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{ItemId} cannot be revised if the item has a bid or\
+ \ a best offer or is ending within 12 hours"
+ 25039:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{ItemId} cannot be revised if the item has a bid or\
+ \ a best offer and is ending within 12 hours"
+ 25040:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{ItemId} cannot be revised if the item has a bid or\
+ \ a best offer and is ending within 12 hours"
+ 25041:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "When listing an item with Refurbished condition, maximum\
+ \ handling time must be {replaceable_value} business day(s)."
+ 25042:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "When listing an item with Refurbished condition, free\
+ \ shipping must be provided."
+ 25043:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "When listing an item with Refurbished condition, returns\
+ \ must be accepted."
+ 25044:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "When listing an item with Refurbished condition, refund\
+ \ must be provided as Money Back."
+ 25045:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "When listing an item with Refurbished condition, the\
+ \ minimum time you'll accept returns must be {replaceable_value}\
+ \ days."
+ 25046:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "When listing an item with Refurbished condition, seller\
+ \ must pay the cost for return shipping."
+ 25047:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Seller is not eligible to use Refurbished Item Condition"
+ 25048:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Seller is not eligible to use Refurbished Item Condition\
+ \ in this Category"
+ 25049:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Seller is not eligible to use Refurbished Item Condition\
+ \ for the selected Brand"
+ 25050:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "When listing an item with Refurbished condition, {replaceable_value}\
+ \ cannot be used in the Title."
+ 25051:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "When listing an item with Refurbished condition, {replaceable_value}\
+ \ cannot be used in the Subtitle"
+ 25052:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "When listing an item with Refurbished condition, at\
+ \ least {replaceable_value} images must be provided"
+ 25713:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This Offer is not available : {additionalInfo}."
+ 25076:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{replaceable_value} ID(s) {replaceable_value} not found.\
+ \ Please use valid ID(s)."
+ 25077:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Duplicate Regulatory ID(s) {replaceable_value} sent\
+ \ in the request. Duplicate ID(s) have been ignored."
+ 25078:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Hazmat structure incorrect for {replaceable_value}."
+ 25079:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Repair score invalid. Repair score must be in the range\
+ \ from {replaceable_value} to {replaceable_value} with one decimal\
+ \ place."
+ 25080:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The value of the {0} field is invalid. Field must not\
+ \ exceed {replaceable_value} characters."
+ 25081:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Hazardous material information incomplete. Your listing\
+ \ must include hazardous statements."
+ 25083:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Energy efficiency image is missing. Image is required\
+ \ with image description."
+ 25084:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The listing must have both an energy efficiency label\
+ \ and a product information sheet."
+ 25086:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The URL provided must be an eBay Picture Service URL."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 25025:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "Concurrent access of the same Inventory or Inventory\
+ \ Item Group object is not allowed. Please try again later."
+ 25001:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "A system error has occurred. {additionalInfo}"
+ "404":
+ description: "Not Found"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory"
+ /offer/publish_by_inventory_item_group:
+ post:
+ tags:
+ - "offer"
+ description: "Note: Please note that\
+ \ any eBay listing created using the Inventory API cannot be revised or relisted\
+ \ using the Trading API calls.
Note:\
+ \ Each listing can be revised up to 250 times in one calendar day. If this\
+ \ revision threshold is reached, the seller will be blocked from revising\
+ \ the item until the next calendar day.
This call is used to convert\
+ \ all unpublished offers associated with an inventory item group into an active,\
+ \ multiple-variation listing.
Important!Publish offer note: Fields\
+ \ may be optional or conditionally required when calling the create or update\
+ \ methods, but become required when publishing the offer to create active\
+ \ listings. For this method, see Offer fields for a list of fields required to publish\
+ \ an offer.
The unique identifier of the inventory item\
+ \ group (inventoryItemGroupKey) is passed in the request\
+ \ payload. All inventory items and their corresponding offers in the inventory\
+ \ item group must be valid (meet all requirements) for the publishOfferByInventoryItemGroup\
+ \ call to be completely successful. For any inventory items in the group that\
+ \ are missing required data or have no corresponding offers, the publishOfferByInventoryItemGroup\
+ \ will create a new multiple-variation listing, but any inventory items with\
+ \ missing required data/offers will not be in the newly-created listing. If\
+ \ any inventory items in the group to be published have invalid data, or one\
+ \ or more of the inventory items have conflicting data with one another, the\
+ \ publishOfferByInventoryItemGroup call will fail. Be sure\
+ \ to check for any error or warning messages in the call response for any\
+ \ applicable information about one or more inventory items/offers having issues."
+ operationId: "publishOfferByInventoryItemGroup"
+ parameters:
+ - name: "Content-Type"
+ in: "header"
+ description: "This header indicates the format of the request body provided\
+ \ by the client. Its value should be set to application/json.
For\
+ \ more information, refer to HTTP request headers."
+ required: true
+ schema:
+ type: "string"
+ requestBody:
+ description: "The identifier of the inventory item group to publish and the\
+ \ eBay marketplace where the listing will be published is needed in the\
+ \ request payload."
+ content:
+ application/json:
+ schema:
+ description: "The identifier of the inventory item group to publish\
+ \ and the eBay marketplace where the listing will be published is\
+ \ needed in the request payload."
+ $ref: "#/components/schemas/PublishByInventoryItemGroupRequest"
+ required: true
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/PublishResponse"
+ x-response-codes:
+ errors:
+ 25028:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{field} is not applicable and has been dropped"
+ 25124:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This P&A listing requires a minimum 30-day return period\
+ \ and seller-paid return shipping. eBay automatically updated the\
+ \ listing's return policy settings to meet these requirements. Sellers\
+ \ using business policies should update their return business policy\
+ \ for future P&A listings. To learn more, visit https://www.ebay.com/sellercenter/news/2025-june/parts-accessories-return-policy."
+ 25030:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{field} is not applicable for the condition and has\
+ \ been dropped"
+ 25401:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "Invalid listing options removed. {additionalInfo}"
+ 25753:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "listingStartDate is in the past or the offer is live.\
+ \ Value is not updated on the listing."
+ 25033:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Duplicate policy IDs found"
+ 25402:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "System warning. {additionalInfo}"
+ 25037:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Item level Eco Participation Fee will be ignored"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 25088:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The email address provided is formatted incorrectly."
+ 25601:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid attribute. {fieldName}"
+ 25089:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "No more than {replaceable_value} global compliance policies\
+ \ allowed. Excess policies ignored."
+ 25090:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "No more than {replaceable_value} compliance policies\
+ \ per region allowed. Excess policies ignored."
+ 25091:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "No more than a total of {replaceable_value} compliance\
+ \ policies allowed. Excess policies ignored."
+ 25604:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Input error. {additionalInfo}"
+ 25092:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "No more than {replaceable_value} global takeback policy\
+ \ allowed."
+ 25093:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "No more than {replaceable_value} takeback policy per\
+ \ region allowed. Excess policies ignored."
+ 25094:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "No more than a total of {replaceable_value} takeback\
+ \ policies allowed."
+ 25095:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Region invalid for regional custom policy. Regions allowed\
+ \ are {replaceable_value}."
+ 25104:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Regulatory document ID(s) {replaceable_value} not found.\
+ \ Please use valid ID(s)."
+ 25106:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Regulatory document structure incorrect. Max allowed\
+ \ number of entries is {replaceable_value}."
+ 25107:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid document state for ID(s) {replaceable_value}.\
+ \ Documents must be in the SUBMITTED or ACCEPTED state."
+ 25108:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Product Safety structure incorrect for {replaceable_value}.\
+ \ Max allowed number of entries is {replaceable_value}."
+ 25109:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Product safety information incomplete. Your listing\
+ \ must include pictograms or safety statements."
+ 25110:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Manufacturer address information is incomplete. When\
+ \ providing the address, please provide the street, city, postal\
+ \ code and country"
+ 25111:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Manufacturer information is incomplete. Please provide\
+ \ the company name."
+ 25752:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "listingStartDate provided is invalid."
+ 25112:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Responsible Person structure incorrect for {replaceable_value}.\
+ \ Max allowed number of entries is {replaceable_value}."
+ 25113:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Responsible Person address information is incomplete.\
+ \ When providing the address, please provide the street, city, postal\
+ \ code and country"
+ 25114:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Responsible Person information is incomplete. Please\
+ \ provide the company name."
+ 25115:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Either the Manufacturer or at least one of the Responsible\
+ \ Persons must be located in the EU."
+ 25116:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Please provide a minimum of {replaceable_value} and\
+ \ a maximum of {replaceable_value} types for a Responsible Person."
+ 25118:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Seller must provide at least one form of contact info\
+ \ for Manufacturer - either address, email, contact URL or phone."
+ 25119:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Seller must provide at least one form of contact info\
+ \ for Responsible Person - either address, email, contact URL or\
+ \ phone."
+ 25120:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "When listing in {categoryName}, key information such\
+ \ as {fieldName} comes from eBay’s catalog and should be left blank."
+ 25121:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "When listing in {categoryName}, sellers are required\
+ \ to adopt eBay’s catalog data which will provide all the necessary\
+ \ details for the product."
+ 25122:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The contact URL is incorrectly formatted. Please update\
+ \ the formatting."
+ 25123:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This P&A listing has a non-compliant domestic return\
+ \ policy. Please update the return window to 30-days (or more) and/or\
+ \ update return shipping cost payer to Seller, and then make another\
+ \ call. Sellers using business policies must make the same changes\
+ \ to their return business policy and then make another call. To\
+ \ learn more, visit https://www.ebay.com/sellercenter/news/2025-june/parts-accessories-return-policy."
+ 25766:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The takeBackPolicyId field must be a long value type.\
+ \ Please correct the error."
+ 25767:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The productCompliancePolicyId field must be a long value\
+ \ type. Please correct the error."
+ 25002:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Any User error. {additionalInfo}"
+ 25003:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid price. {additionalInfo}"
+ 25004:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid quantity. {additionalInfo}"
+ 25005:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid category. {additionalInfo}"
+ 25006:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid listing option. {additionalInfo}"
+ 25007:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid Shipping policy information. {additionalInfo}"
+ 25008:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid Payment policy information. {additionalInfo}"
+ 25009:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid Return policy information. {additionalInfo}"
+ 25011:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid tax information. {additionalInfo}"
+ 25012:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid location. {additionalInfo}"
+ 25013:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This error code is associated with multiple possible\
+ \ errors. See 25013 Invalid data in the Inventory Item\
+ \ Group for the full list of messages returned and any available\
+ \ troubleshooting information."
+ 25014:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid pictures. {additionalInfo}"
+ 25015:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid picture URL. {additionalInfo}"
+ 25016:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid {fieldName}. {additionalInfo}"
+ 25017:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This error code is associated with multiple possible\
+ \ errors. See 25017 Missing information in fields for\
+ \ the full list of messages returned and any available troubleshooting\
+ \ information."
+ 25018:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This error code is associated with multiple possible\
+ \ errors. See 25018 Incomplete account information\
+ \ for the full list of messages returned and any available troubleshooting\
+ \ information."
+ 25019:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This error code is associated with multiple possible\
+ \ errors. See 25019 Cannot revise the listing for the\
+ \ full list of messages returned and any available troubleshooting\
+ \ information."
+ 25020:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid package details. {additionalInfo}"
+ 25021:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid condition information. {additionalInfo}"
+ 25022:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid attribute. {fieldName}"
+ 25023:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid compatibility information. {additionalInfo}"
+ 25026:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Selling limits exceeded. {additionalInfo}"
+ 25029:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{field} is required for this category."
+ 25031:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{field} is not valid and needs to be a number between\
+ \ {min} and {max}"
+ 25032:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{field} is not valid"
+ 25034:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Only {max value} policies can be specified"
+ 25035:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The specified policy is not found for the market place"
+ 25036:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The policy(ies) {PolicyId} is not of type {PolicyEnum}"
+ 25038:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{ItemId} cannot be revised if the item has a bid or\
+ \ a best offer or is ending within 12 hours"
+ 25039:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{ItemId} cannot be revised if the item has a bid or\
+ \ a best offer and is ending within 12 hours"
+ 25040:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{ItemId} cannot be revised if the item has a bid or\
+ \ a best offer and is ending within 12 hours"
+ 25041:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "When listing an item with Refurbished condition, maximum\
+ \ handling time must be {replaceable_value} business day(s)."
+ 25042:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "When listing an item with Refurbished condition, free\
+ \ shipping must be provided."
+ 25043:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "When listing an item with Refurbished condition, returns\
+ \ must be accepted."
+ 25044:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "When listing an item with Refurbished condition, refund\
+ \ must be provided as Money Back."
+ 25045:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "When listing an item with Refurbished condition, the\
+ \ minimum time you'll accept returns must be {replaceable_value}\
+ \ days."
+ 25046:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "When listing an item with Refurbished condition, seller\
+ \ must pay the cost for return shipping."
+ 25047:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Seller is not eligible to use Refurbished Item Condition"
+ 25048:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Seller is not eligible to use Refurbished Item Condition\
+ \ in this Category"
+ 25049:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Seller is not eligible to use Refurbished Item Condition\
+ \ for the selected Brand"
+ 25050:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "When listing an item with Refurbished condition, {replaceable_value}\
+ \ cannot be used in the Title."
+ 25051:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "When listing an item with Refurbished condition, {replaceable_value}\
+ \ cannot be used in the Subtitle"
+ 25052:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "When listing an item with Refurbished condition, at\
+ \ least {replaceable_value} images must be provided"
+ 25705:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The Inventory Item Group named {inventoryItemGroupKey}\
+ \ could not be found or is not available in the system."
+ 25076:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{replaceable_value} ID(s) {replaceable_value} not found.\
+ \ Please use valid ID(s)."
+ 25077:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Duplicate Regulatory ID(s) {replaceable_value} sent\
+ \ in the request. Duplicate ID(s) have been ignored."
+ 25078:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Hazmat structure incorrect for {replaceable_value}."
+ 25079:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Repair score invalid. Repair score must be in the range\
+ \ from {replaceable_value} to {replaceable_value} with one decimal\
+ \ place."
+ 25080:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The value of the {0} field is invalid. Field must not\
+ \ exceed {replaceable_value} characters."
+ 25081:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Hazardous material information incomplete. Your listing\
+ \ must include hazardous statements."
+ 25083:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Energy efficiency image is missing. Image is required\
+ \ with image description."
+ 25084:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The listing must have both an energy efficiency label\
+ \ and a product information sheet."
+ 25086:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "The URL provided must be an eBay Picture Service URL."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 25025:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "Concurrent access of Inventory or InventoryItemGroup.\
+ \ Please try again later"
+ 25001:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "Any System error. {additionalInfo}"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory"
+ /offer/{offerId}/withdraw:
+ post:
+ tags:
+ - "offer"
+ description: "This call is used to end a single-variation listing that is associated\
+ \ with the specified offer. This call is used in place of the deleteOffer\
+ \ call if the seller only wants to end the listing associated with the offer\
+ \ but does not want to delete the offer object. With this call, the offer\
+ \ object remains, but it goes into the unpublished state, and will require\
+ \ a publishOffer call to relist the offer.
To end\
+ \ a multiple-variation listing that is associated with an inventory item group,\
+ \ the withdrawOfferByInventoryItemGroup method can be used.\
+ \ This call only ends the multiple-variation listing associated with an inventory\
+ \ item group but does not delete the inventory item group object, nor does\
+ \ it delete any of the offers associated with the inventory item group, but\
+ \ instead all of these offers go into the unpublished state."
+ operationId: "withdrawOffer"
+ parameters:
+ - name: "offerId"
+ in: "path"
+ description: "This path parameter specifies the unique identifier of the offer\
+ \ that is to be withdrawn.
Use the getOffers method to retrieve offer IDs."
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/WithdrawResponse"
+ x-response-codes:
+ errors:
+ 25402:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "System warning. {additionalInfo}"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 25713:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "This Offer is not available : {additionalInfo}."
+ 25002:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Any User error. {additionalInfo}"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 25001:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "Any System error. {additionalInfo}"
+ "404":
+ description: "Not Found"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory"
+ /offer/withdraw_by_inventory_item_group:
+ post:
+ tags:
+ - "offer"
+ description: "This call is used to end a multiple-variation eBay listing that\
+ \ is associated with the specified inventory item group. This call only ends\
+ \ multiple-variation eBay listing associated with the inventory item group\
+ \ but does not delete the inventory item group object. Similarly, this call\
+ \ also does not delete any of the offers associated with the inventory item\
+ \ group, but instead all of these offers go into the unpublished state. If\
+ \ the seller wanted to relist the multiple-variation eBay listing, they could\
+ \ use the publishOfferByInventoryItemGroup method."
+ operationId: "withdrawOfferByInventoryItemGroup"
+ parameters:
+ - name: "Content-Type"
+ in: "header"
+ description: "This header indicates the format of the request body provided\
+ \ by the client. Its value should be set to application/json.
For\
+ \ more information, refer to HTTP request headers."
+ required: true
+ schema:
+ type: "string"
+ requestBody:
+ description: "The base request of the withdrawOfferByInventoryItemGroup\
+ \ call."
+ content:
+ application/json:
+ schema:
+ description: "The base request of the withdrawOfferByInventoryItemGroup\
+ \ call."
+ $ref: "#/components/schemas/WithdrawByInventoryItemGroupRequest"
+ required: true
+ responses:
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 25725:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "No offer found"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 25001:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "Any System error. {additionalInfo}"
+ "204":
+ description: "No Content"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory"
+ /location/{merchantLocationKey}:
+ get:
+ tags:
+ - "location"
+ description: "This call retrieves all defined details of the inventory location\
+ \ that is specified by the merchantLocationKey path parameter.A\
+ \ successful call will return an HTTP status value of 200 OK.
"
+ operationId: "getInventoryLocation"
+ parameters:
+ - name: "merchantLocationKey"
+ in: "path"
+ description: "This path parameter specifies the unique merchant-defined key\
+ \ (ID) for an inventory location that is being retrieved.
Use the\
+ \ getInventoryLocations method to retrieve merchant location keys.
Max\
+ \ length: 36"
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/InventoryLocationResponse"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 25804:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Input error. {additionalInfo}"
+ 25805:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{fieldName} Not Found."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 25001:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "System error. {additionalInfo}"
+ "404":
+ description: "Not Found"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory.readonly"
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory"
+ post:
+ tags:
+ - "location"
+ description: "Use this call to create a new inventory location. In order\
+ \ to create and publish an offer (and create an eBay listing), a seller must\
+ \ have at least one location, as every offer must be associated with at least\
+ \ one location.
Important!Publish\
+ \ offer note: Fields may be optional or conditionally required when calling\
+ \ this method, but become required when publishing the offer to create an\
+ \ active listing. For this method, see Location fields for a list of fields required to\
+ \ publish an offer.
Upon first creating an inventory location,\
+ \ only a seller-defined location identifier and a physical location is required,\
+ \ and once set, these values can not be changed. The unique identifier value\
+ \ (merchantLocationKey) is passed in at the end of the call URI. This\
+ \ merchantLocationKey value will be used in other Inventory Location\
+ \ calls to identify the location to perform an action against.
When\
+ \ creating an inventory location, the locationTypes can be specified\
+ \ to define the function of a location. At this time, the following locationTypes\
+ \ are supported:
- Fulfillment center locations are used by sellers\
+ \ selling products through the Multi-warehouse program to get improved estimated\
+ \ delivery dates on their listings. A full address is required when creating\
+ \ a fulfillment center location, as well as the fulfillmentCenterSpecifications\
+ \ of the location. For more information on using the fulfillment center location\
+ \ type to get improved delivery dates, see Multi-warehouse program.
- Warehouse\
+ \ locations are used for traditional shipping. A full street address is not\
+ \ needed, but the postalCode and country OR city, stateOrProvince,\
+ \ and country of the location must be provided.
- Store\
+ \ locations are generally used by merchants selling product through the In-Store\
+ \ Pickup program. A full address is required when creating a store location.
Note\
+ \ that all inventory locations are \"enabled\" by default when they are created,\
+ \ and you must specifically disable them (by passing in a value of DISABLED\
+ \ in the merchantLocationStatus field) if you want them to\
+ \ be set to the disabled state. The seller's inventory cannot be loaded to\
+ \ inventory locations in the disabled state.
Unless one or more errors\
+ \ and/or warnings occur with the call, there is no response payload for this\
+ \ call. A successful call will return an HTTP status value of 204 No Content.
"
+ operationId: "createInventoryLocation"
+ parameters:
+ - name: "merchantLocationKey"
+ in: "path"
+ description: "This path parameter specifies the unique, seller-defined key\
+ \ (ID) for an inventory location.
Max length: 36"
+ required: true
+ schema:
+ type: "string"
+ - name: "Content-Type"
+ in: "header"
+ description: "This header indicates the format of the request body provided\
+ \ by the client. Its value should be set to application/json.
\
+ \ For more information, refer to HTTP request headers."
+ required: true
+ schema:
+ type: "string"
+ requestBody:
+ description: "Inventory Location details"
+ content:
+ application/json:
+ schema:
+ description: "Inventory Location details"
+ $ref: "#/components/schemas/InventoryLocationFull"
+ required: true
+ responses:
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 25800:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid {fieldName}."
+ 25801:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Missing field {fieldName}."
+ 25802:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Input error. {additionalInfo}"
+ 25803:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{fieldName} already exists."
+ 25804:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Input error. {additionalInfo}"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 25001:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "System error. {additionalInfo}"
+ "204":
+ description: "No Content"
+ "409":
+ description: "Location Already Exists"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory"
+ delete:
+ tags:
+ - "location"
+ description: "This call deletes the inventory location that is specified\
+ \ in the merchantLocationKey path parameter. Note that deleting\
+ \ a location will not affect any active eBay listings associated with the\
+ \ deleted location, but the seller will not be able modify the offers associated\
+ \ with the location once it is deleted.
Note:\
+ \ Deletion is not currently supported for fulfillment center locations, as\
+ \ location mappings will still be retained despite the location being deleted.\
+ \ Instead, fulfillment center locations should be disabled using the disableInventoryLocation method.Unless one\
+ \ or more errors and/or warnings occur with the call, there is no response\
+ \ payload for this call. A successful call will return an HTTP status value\
+ \ of 200 OK.
"
+ operationId: "deleteInventoryLocation"
+ parameters:
+ - name: "merchantLocationKey"
+ in: "path"
+ description: "This path parameter specifies the unique merchant-defined key\
+ \ (ID) for the inventory location that is to be deleted.
Use the\
+ \ getInventoryLocations method to retrieve merchant location keys.
Max\
+ \ length: 36"
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 25802:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Input error. {additionalInfo}"
+ 25804:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Input error. {additionalInfo}"
+ 25805:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{fieldName} Not Found."
+ 25806:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Deletion is not allowed when the location type of an\
+ \ inventory location has been set to fulfillment center. However,\
+ \ you may disable it."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 25001:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "System error. {additionalInfo}"
+ "204":
+ description: "Success"
+ "404":
+ description: "Not Found"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory"
+ /location/{merchantLocationKey}/disable:
+ post:
+ tags:
+ - "location"
+ description: "This call disables the inventory location that is specified\
+ \ in the merchantLocationKey path parameter. Sellers can not\
+ \ load/modify inventory to disabled locations. Note that disabling a location\
+ \ will not affect any active eBay listings associated with the disabled location,\
+ \ but the seller will not be able modify the offers associated with a disabled\
+ \ location.
A successful call will return an HTTP status value of 200\
+ \ OK.
"
+ operationId: "disableInventoryLocation"
+ parameters:
+ - name: "merchantLocationKey"
+ in: "path"
+ description: "This path parameter specifies the unique merchant-defined key\
+ \ (ID) for an inventory location that is to be disabled.
Use the\
+ \ getInventoryLocations method to retrieve merchant location keys.
Max\
+ \ length: 36"
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ type: "object"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 25802:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Input error. {additionalInfo}"
+ 25804:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Input error. {additionalInfo}"
+ 25805:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{fieldName} Not Found."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 25001:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "System error. {additionalInfo}"
+ "404":
+ description: "Not Found"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory"
+ /location/{merchantLocationKey}/enable:
+ post:
+ tags:
+ - "location"
+ description: "This call enables a disabled inventory location that is specified\
+ \ in the merchantLocationKey path parameter. Once a disabled\
+ \ location is enabled, sellers can start loading/modifying inventory to that\
+ \ location.
A successful call will return an HTTP status value of 200\
+ \ OK.
"
+ operationId: "enableInventoryLocation"
+ parameters:
+ - name: "merchantLocationKey"
+ in: "path"
+ description: "This path parameter specifies unique merchant-defined key (ID)\
+ \ for a disabled inventory location that is to be enabled.
Use\
+ \ the getInventoryLocations method to retrieve merchant location keys.
Max\
+ \ length: 36"
+ required: true
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ type: "object"
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 25802:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Input error. {additionalInfo}"
+ 25804:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Input error. {additionalInfo}"
+ 25805:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{fieldName} Not Found."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 25001:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "System error. {additionalInfo}"
+ "404":
+ description: "Not Found"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory"
+ /location:
+ get:
+ tags:
+ - "location"
+ description: "This call retrieves all defined details for every inventory location\
+ \ associated with the seller's account. There are no required parameters for\
+ \ this call and no request payload. However, there are two optional query\
+ \ parameters, limit and offset. The limit\
+ \ query parameter sets the maximum number of locations returned on one page\
+ \ of data, and the offset query parameter specifies the page\
+ \ of data to return. These query parameters are discussed more in the URI\
+ \ parameters table below. The authorization HTTP\
+ \ header is the only required request header for this call.
A successful\
+ \ call will return an HTTP status value of 200 OK.
"
+ operationId: "getInventoryLocations"
+ parameters:
+ - name: "limit"
+ in: "query"
+ description: "The value passed in this query parameter sets the maximum number\
+ \ of records to return per page of data. Although this field is a string,\
+ \ the value passed in this field should be a positive integer value. If\
+ \ this query parameter is not set, up to 100 records will be returned on\
+ \ each page of results.
Min: 1"
+ required: false
+ schema:
+ type: "string"
+ - name: "offset"
+ in: "query"
+ description: "Specifies the number of locations to skip in the result set\
+ \ before returning the first location in the paginated response. Combine\
+ \ offset with the limit query parameter to control the items\
+ \ returned in the response. For example, if you supply an offset\
+ \ of 0 and a limit of 10, the first page\
+ \ of the response contains the first 10 items from the complete list of\
+ \ items retrieved by the call. If offset is 10 and limit\
+ \ is 20, the first page of the response contains items 11-30\
+ \ from the complete result set.
Default: 0
"
+ required: false
+ schema:
+ type: "string"
+ responses:
+ "200":
+ description: "Success"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/LocationResponse"
+ "400":
+ description: "Bad Request"
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 25001:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "System error. {additionalInfo}"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory.readonly"
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory"
+ /location/{merchantLocationKey}/update_location_details:
+ post:
+ tags:
+ - "location"
+ description: "Use this call to update location details for an existing inventory\
+ \ location. Specify the inventory location you want to update using the merchantLocationKey\
+ \ path parameter.
You can update the following text-based fields: name,\
+ \ phone, timeZoneId, geoCoordinates,\
+ \ fulfillmentCenterSpecifications, locationTypes,\
+ \ locationWebUrl, locationInstructions and\
+ \ locationAdditionalInformation any number of times for any\
+ \ location type.
For warehouse and store inventory locations, address\
+ \ fields can be updated any number of times. Address fields cannot\
+ \ be updated for fulfillment center locations. However, if any address fields\
+ \ were omitted during the createInventoryLocation call, they can be\
+ \ added through this method.
Note: When\
+ \ updating a warehouse location to a fulfillment center, sellers can update\
+ \ any of the address fields a single time during the same call used to make\
+ \ this update. After this, they can no longer be updated.For store\
+ \ locations, the operating hours and/or the special hours can also be updated.
Whatever\
+ \ text is passed in for these fields in an updateInventoryLocation\
+ \ call will replace the current text strings defined for these fields.
Unless\
+ \ one or more errors and/or warnings occurs with the call, there is no response\
+ \ payload for this call. A successful call will return an HTTP status value\
+ \ of 204 No Content.
"
+ operationId: "updateInventoryLocation"
+ parameters:
+ - name: "merchantLocationKey"
+ in: "path"
+ description: "This path parameter specifies the unique merchant-defined key\
+ \ (ID) for an inventory location that is to be updated.
Use the\
+ \ getInventoryLocations method to retrieve merchant location keys.
Max\
+ \ length: 36"
+ required: true
+ schema:
+ type: "string"
+ - name: "Content-Type"
+ in: "header"
+ description: "This header indicates the format of the request body provided\
+ \ by the client. Its value should be set to application/json.
\
+ \ For more information, refer to HTTP request headers."
+ required: true
+ schema:
+ type: "string"
+ requestBody:
+ description: "The inventory location details to be updated."
+ content:
+ application/json:
+ schema:
+ description: "The inventory location details to be updated."
+ $ref: "#/components/schemas/InventoryLocation"
+ required: true
+ responses:
+ "400":
+ description: "Bad Request"
+ x-response-codes:
+ errors:
+ 25800:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Invalid {fieldName}."
+ 25801:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Missing field {fieldName}."
+ 25802:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Input error. {additionalInfo}"
+ 25803:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{fieldName} already exists."
+ 25804:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "Input error. {additionalInfo}"
+ 25805:
+ domain: "API_INVENTORY"
+ category: "REQUEST"
+ description: "{fieldName} Not Found."
+ "500":
+ description: "Internal Server Error"
+ x-response-codes:
+ errors:
+ 25001:
+ domain: "API_INVENTORY"
+ category: "APPLICATION"
+ description: "System error. {additionalInfo}"
+ "204":
+ description: "Success"
+ "404":
+ description: "Not Found"
+ security:
+ - api_auth:
+ - "https://api.ebay.com/oauth/api_scope/sell.inventory"
+components:
+ schemas:
+ Address:
+ type: "object"
+ properties:
+ addressLine1:
+ type: "string"
+ description: "The first line of a street address. This field is required\
+ \ for store and fulfillment center locations. A street address is not\
+ \ required for warehouse locations.
This field will be returned\
+ \ if defined for an inventory location.
Max length: 128"
+ addressLine2:
+ type: "string"
+ description: "The second line of a street address. This field can be used\
+ \ for additional address information, such as a suite or apartment number.\
+ \
This field will be returned if defined for an inventory location.\
+ \
Max length: 128"
+ city:
+ type: "string"
+ description: "The city in which the inventory location resides. This field\
+ \ is required for store and fulfillment center locations. For warehouse\
+ \ locations, this field is conditionally required as part of a city\
+ \ and stateOrProvince pair if a postalCode\
+ \ is not provided. If a postalCode is provided, the city\
+ \ is derived from the provided postal code and this field is technically\
+ \ optional.
This field is returned if defined for an inventory\
+ \ location.
Max length: 128"
+ country:
+ type: "string"
+ description: "The country in which the address resides, represented as two-letter\
+ \ ISO 3166 country code. For\
+ \ example, US represents the United States, and DE\
+ \ represents Germany. For implementation help, refer to eBay\
+ \ API documentation"
+ county:
+ type: "string"
+ description: "The county in which the address resides.
This field\
+ \ is returned if defined for an inventory location."
+ postalCode:
+ type: "string"
+ description: "The postal/zip code of the address. eBay uses postal codes\
+ \ to surface In-Store Pickup items within the vicinity of a buyer's location,\
+ \ and it also uses postal codes (origin and destination) to estimate shipping\
+ \ costs when the seller uses calculated shipping. This field is required\
+ \ for store and fulfillment center locations.
For warehouse locations,\
+ \ this field is conditionally required if a city and\
+ \ stateOrProvince pair is not provided.
Note: For warehouse locations,\
+ \ city and stateOrProvince pair can\
+ \ be used instead of a postalCode value, and then the\
+ \ postal code is just derived from the city and state/province.
This\
+ \ field is returned if defined for an inventory location.
Max\
+ \ length: 16"
+ stateOrProvince:
+ type: "string"
+ description: "The state/province in which the inventory location resides.\
+ \ This field is required for store and fulfillment center locations. For\
+ \ warehouse locations, this field is conditionally required as part of\
+ \ a city and stateOrProvince pair if\
+ \ a postalCode is not provided. If a postalCode\
+ \ is provided, the state or province is derived from the provided zip\
+ \ code and this field is technically optional.
Max length:\
+ \ 128"
+ description: "This type is used to define the physical address of an inventory\
+ \ location."
+ Amount:
+ type: "object"
+ properties:
+ currency:
+ type: "string"
+ description: "A three-digit string value representing the type of currency\
+ \ being used. Both the value and currency\
+ \ fields are required/always returned when expressing prices.
See\
+ \ the CurrencyCodeEnum type for the full list of currencies and\
+ \ their corresponding three-digit string values."
+ value:
+ type: "string"
+ description: "A string representation of a dollar value expressed in the\
+ \ currency specified in the currency field. Both the\
+ \ value and currency fields are required/always\
+ \ returned when expressing prices."
+ description: "This type is used to express a dollar value and the applicable\
+ \ currency."
+ Availability:
+ type: "object"
+ properties:
+ pickupAtLocationAvailability:
+ type: "array"
+ description: "This container consists of an array of one or more of the\
+ \ merchant's physical store locations where the inventory item is available\
+ \ for In-Store Pickup orders. The merchant's location, the quantity available,\
+ \ and the fulfillment time (how soon the item will be ready for pickup\
+ \ after the order takes place) are all in this container. In-Store Pickup\
+ \ is only available to large merchants selling on the US, UK, Germany,\
+ \ and Australia sites."
+ items:
+ $ref: "#/components/schemas/PickupAtLocationAvailability"
+ shipToLocationAvailability:
+ description: "This container specifies the quantity of the inventory item\
+ \ that are available for purchase across one or more eBay marketplaces."
+ $ref: "#/components/schemas/ShipToLocationAvailability"
+ description: "This type is used to specify the quantity of the inventory item\
+ \ that is available for purchase if the item will be shipped to the buyer,\
+ \ and the quantity of the inventory item that is available for In-Store Pickup\
+ \ at one or more of the merchant's physical stores. In-Store Pickup is only\
+ \ available to large merchants selling on the US, UK, Germany, and Australia\
+ \ sites."
+ AvailabilityDistribution:
+ type: "object"
+ properties:
+ fulfillmentTime:
+ description: "This container is used to indicate the expected fulfillment\
+ \ time if the inventory item is shipped from the warehouse location identified\
+ \ in the corresponding merchantLocationKey field. The\
+ \ fulfillment time is the estimated number of business days after purchase\
+ \ that the buyer can expect the item to be delivered.
This field\
+ \ is optional, and is used by eBay to provide the estimated delivery date\
+ \ to buyers. This field is returned by getInventoryItem and getInventoryItems if set for the inventory item."
+ $ref: "#/components/schemas/TimeDuration"
+ merchantLocationKey:
+ type: "string"
+ description: "The unique identifier of an inventory location where quantity\
+ \ is available for the inventory item. This field is conditionally required\
+ \ to identify the inventory location that has quantity of the inventory\
+ \ item.
Use the getInventoryLocations method to retrieve merchant\
+ \ location keys."
+ quantity:
+ type: "integer"
+ description: "The integer value passed into this field indicates the quantity\
+ \ of the inventory item that is available at this inventory location.\
+ \ This field is conditionally required."
+ format: "int32"
+ description: "This type is used to set the available quantity of the inventory\
+ \ item at one or more warehouse locations."
+ AvailabilityWithAll:
+ type: "object"
+ properties:
+ pickupAtLocationAvailability:
+ type: "array"
+ description: "This container consists of an array of one or more of the\
+ \ merchant's physical stores where the inventory item is available for\
+ \ in-store pickup.
The store ID, the quantity available, and the\
+ \ fulfillment time (how soon the item will be ready for pickup after the\
+ \ order occurs) are all returned in this container."
+ items:
+ $ref: "#/components/schemas/PickupAtLocationAvailability"
+ shipToLocationAvailability:
+ description: "This container specifies the quantity of the inventory items\
+ \ that are available for a standard purchase, where the item is shipped\
+ \ to the buyer."
+ $ref: "#/components/schemas/ShipToLocationAvailabilityWithAll"
+ description: "This type is used to specify the quantity of the inventory items\
+ \ that are available for purchase if the items will be shipped to the buyer,\
+ \ and the quantity of the inventory items that are available for In-Store\
+ \ Pickup at one or more of the merchant's physical stores.
In-Store\
+ \ Pickup is only available to large merchants selling on the US, UK, Germany,\
+ \ and Australia sites."
+ BaseResponse:
+ type: "object"
+ properties:
+ warnings:
+ type: "array"
+ description: "This container will be returned in a call response payload\
+ \ if one or more warnings or errors are triggered when an Inventory API\
+ \ call is made. This container will contain detailed information about\
+ \ the error or warning."
+ items:
+ $ref: "#/components/schemas/Error"
+ description: "This is the base response of the createOrReplaceInventoryItem,\
+ \ createOrReplaceInventoryItemGroup, and createOrReplaceProductCompatibility\
+ \ calls. A response payload will only be returned for these three calls if\
+ \ one or more errors or warnings occur with the call."
+ BestOffer:
+ type: "object"
+ properties:
+ autoAcceptPrice:
+ description: "This is the price at which Best Offers are automatically accepted.\
+ \ If a buyer submits a Best Offer that is equal to or above this value,\
+ \ the offer is automatically accepted on behalf of the seller. This field\
+ \ is only applicable if the bestOfferEnabled value is\
+ \ set to true.
The price set here must be lower than\
+ \ the current 'Buy it Now' price. This field is only returned by getOffer\
+ \ and getOffers if set."
+ $ref: "#/components/schemas/Amount"
+ autoDeclinePrice:
+ description: "This is the price at which Best Offers are automatically declined.\
+ \ If a buyer submits a Best Offer that is equal to or below this value,\
+ \ the offer is automatically declined on behalf of the seller. This field\
+ \ is only applicable if the bestOfferEnabled value is\
+ \ set to true.
The price set here must be lower than\
+ \ the current 'Buy it Now' price and the price set in the autoAcceptPrice\
+ \ field (if used). This field is only returned by getOffer and getOffers if set."
+ $ref: "#/components/schemas/Amount"
+ bestOfferEnabled:
+ type: "boolean"
+ description: "This field indicates whether or not the Best Offer feature\
+ \ is enabled for the listing. A seller can enable the Best Offer feature\
+ \ for a listing as long as the category supports the Best Offer feature.
The\
+ \ seller includes this field and sets its value to true to\
+ \ enable Best Offer feature.
Note:\
+ \ Best Offer is not available for multi-variation listings."
+ description: "This type is used by the bestOfferTerms container,\
+ \ which is used if the seller would like to support the Best Offer feature\
+ \ on their listing."
+ BulkEbayOfferDetailsWithKeys:
+ type: "object"
+ properties:
+ requests:
+ type: "array"
+ description: "The details of each offer that is being created is passed\
+ \ in under this container. Up to 25 offers can be created with one bulkCreateOffer\
+ \ call."
+ items:
+ $ref: "#/components/schemas/EbayOfferDetailsWithKeys"
+ description: "This type is used by the base request of the bulkCreateOffer\
+ \ method, which is used to create up to 25 new offers."
+ BulkGetInventoryItem:
+ type: "object"
+ properties:
+ requests:
+ type: "array"
+ description: "The seller passes in multiple SKU values under this container\
+ \ to retrieve multiple inventory item records. Up to 25 inventory item\
+ \ records can be retrieved at one time."
+ items:
+ $ref: "#/components/schemas/GetInventoryItem"
+ description: "This type is used by the base request of the bulkGetInventoryItem\
+ \ method."
+ BulkGetInventoryItemResponse:
+ type: "object"
+ properties:
+ responses:
+ type: "array"
+ description: "This is the base container of the bulkGetInventoryItem\
+ \ response. The results of each attempted inventory item retrieval is\
+ \ captured under this container."
+ items:
+ $ref: "#/components/schemas/GetInventoryItemResponse"
+ description: "This type is used by the base response of the bulkGetInventoryItem\
+ \ method."
+ BulkInventoryItem:
+ type: "object"
+ properties:
+ requests:
+ type: "array"
+ description: "The details of each inventory item that is being created or\
+ \ updated is passed in under this container. Up to 25 inventory item records\
+ \ can be created and/or updated with one bulkCreateOrReplaceInventoryItem\
+ \ call."
+ items:
+ $ref: "#/components/schemas/InventoryItemWithSkuLocale"
+ description: "The base request of the bulkCreateOrReplaceInventoryItem\
+ \ method."
+ BulkInventoryItemResponse:
+ type: "object"
+ properties:
+ responses:
+ type: "array"
+ description: "This is the base container of the bulkCreateOrReplaceInventoryItem\
+ \ response. The results of each attempted inventory item creation/update\
+ \ is captured under this container."
+ items:
+ $ref: "#/components/schemas/InventoryItemResponse"
+ description: "This type is used by the base response of the bulkCreateOrReplaceInventoryItem\
+ \ method."
+ BulkMigrateListing:
+ type: "object"
+ properties:
+ requests:
+ type: "array"
+ description: "This is the base container of the bulkMigrateListings\
+ \ request payload. One to five eBay listings will be included under this\
+ \ container."
+ items:
+ $ref: "#/components/schemas/MigrateListing"
+ description: "This type is used by the base container of the bulkMigrateListings\
+ \ request payload."
+ BulkMigrateListingResponse:
+ type: "object"
+ properties:
+ responses:
+ type: "array"
+ description: "This is the base container of the response payload of the\
+ \ bulkMigrateListings call. The results of each attempted\
+ \ listing migration is captured under this container."
+ items:
+ $ref: "#/components/schemas/MigrateListingResponse"
+ description: "This type is used by the response payload of the bulkMigrateListings\
+ \ call."
+ BulkOffer:
+ type: "object"
+ properties:
+ requests:
+ type: "array"
+ description: "This container is used to pass in an array of offers to publish.\
+ \ Up to 25 offers can be published with one bulkPublishOffer\
+ \ method."
+ items:
+ $ref: "#/components/schemas/OfferKeyWithId"
+ description: "This type is used by the base request of the bulkPublishOffer\
+ \ method, which is used to publish up to 25 different offers."
+ BulkOfferResponse:
+ type: "object"
+ properties:
+ responses:
+ type: "array"
+ items:
+ $ref: "#/components/schemas/OfferSkuResponse"
+ description: "This type is used by the base response of the bulkCreateOffer\
+ \ method."
+ BulkPriceQuantity:
+ type: "object"
+ properties:
+ requests:
+ type: "array"
+ description: "This container is used by the seller to update the total 'ship-to-home'\
+ \ quantity of one or more inventory items (up to 25) and/or to update\
+ \ the price and/or quantity of one or more specific published offers."
+ items:
+ $ref: "#/components/schemas/PriceQuantity"
+ description: "This type is used by the base request payload of the bulkUpdatePriceQuantity\
+ \ call. The bulkUpdatePriceQuantity call allows the seller\
+ \ to update the total 'ship-to-home' quantity of one or more inventory items\
+ \ (up to 25) and/or to update the price and/or quantity of one or more specific\
+ \ published offers."
+ BulkPriceQuantityResponse:
+ type: "object"
+ properties:
+ responses:
+ type: "array"
+ description: "This container will return an HTTP status code, offer ID,\
+ \ and SKU value for each offer/inventory item being updated, as well as\
+ \ an errors and/or warnings container\
+ \ if any errors or warnings are triggered while trying to update those\
+ \ offers/inventory items."
+ items:
+ $ref: "#/components/schemas/PriceQuantityResponse"
+ description: "This type is use by the base response payload of the bulkUpdatePriceQuantity\
+ \ call. The bulkUpdatePriceQuantity call response will return\
+ \ an HTTP status code, offer ID, and SKU value for each offer/inventory item\
+ \ being updated, as well as an errors and/or warnings\
+ \ container if any errors or warnings are triggered while trying to update\
+ \ those offers/inventory items."
+ BulkPublishResponse:
+ type: "object"
+ properties:
+ responses:
+ type: "array"
+ description: "A node is returned under the responses container\
+ \ to indicate the success or failure of each offer that the seller was\
+ \ attempting to publish."
+ items:
+ $ref: "#/components/schemas/OfferResponseWithListingId"
+ description: "This type is used by the base response of the bulkPublishOffer\
+ \ method."
+ Charity:
+ type: "object"
+ properties:
+ charityId:
+ type: "string"
+ description: "The eBay-assigned unique identifier of the charitable organization\
+ \ that will receive a percentage of the sales proceeds. The charitable\
+ \ organization must be reqistered with the PayPal Giving Fund in order\
+ \ to receive sales proceeds through eBay listings.
This field is\
+ \ conditionally required if a seller is planning on donating a percentage\
+ \ of the sale proceeds to a charitable organization.
The eBay-assigned\
+ \ unique identifier of a charitable organization can be found using the\
+ \ getCharityOrgs method of the Charity API. In the\
+ \ getCharityOrgs response, this unique identifier is\
+ \ shown in the charityOrgId field."
+ donationPercentage:
+ type: "string"
+ description: "This field is the percentage of the purchase price that the\
+ \ charitable organization (identified in the charityId\
+ \ field) will receive for each sale that the listing generates. This field\
+ \ is conditionally required if a seller is planning on donating a percentage\
+ \ of the sale proceeds to a charitable organization. This numeric value\
+ \ can range from 10 to 100, and in any 5 (percent) increments in between\
+ \ this range (e.g. 10, 15, 20...95,...\
+ \ 100). The seller would pass in 10 for 10 percent,\
+ \ 15 for 15 percent, 20 for 20 percent, and\
+ \ so on, all the way to 100 for 100 percent."
+ description: "This type is used to identify the charitable organization associated\
+ \ with the listing, and the percentage of the sale proceeds that the charitable\
+ \ organization will receive for each sale generated by the listing.
In\
+ \ order to receive a percentage of the sales proceeds, the charitable organization\
+ \ must be registered with the PayPal Giving Fund, which is a partner of eBay\
+ \ for Charity."
+ Compatibility:
+ type: "object"
+ properties:
+ compatibleProducts:
+ type: "array"
+ description: "This container consists of an array of motor vehicles (make,\
+ \ model, year, trim, engine) that are compatible with the motor vehicle\
+ \ part or accessory specified by the sku value."
+ items:
+ $ref: "#/components/schemas/CompatibleProduct"
+ sku:
+ type: "string"
+ description: "The seller-defined SKU value of the inventory item that will\
+ \ be associated with the compatible vehicles.
Note: This field is not applicable to the createOrReplaceProductCompatibility\
+ \ method, as the SKU value for the inventory item is passed in as part\
+ \ of the call URI and not in the request payload. It is always returned\
+ \ with the getProductCompatibility method."
+ description: "This type is used by the createOrReplaceProductCompatibility\
+ \ call to associate compatible vehicles to an inventory item. This type is\
+ \ also the base response of the getProductCompatibility call."
+ CompatibleProduct:
+ type: "object"
+ properties:
+ compatibilityProperties:
+ type: "array"
+ description: "This container consists of an array of motor vehicles that\
+ \ are compatible with the motor vehicle part or accessory specified by\
+ \ the SKU value in the call URI. Each motor vehicle is defined through\
+ \ a separate set of name/value pairs. In the name field,\
+ \ the vehicle aspect (such as 'make', 'model', 'year', 'trim', or 'engine')\
+ \ will be identified, and the value field will be used\
+ \ to identify the value of each aspect.
The getCompatibilityProperties method of the Taxonomy\
+ \ API can be used to retrieve applicable vehicle aspect names for a specified\
+ \ category, and the getCompatibilityPropertyValues method of the Taxonomy\
+ \ API can be used to retrieve possible values for these same vehicle aspect\
+ \ names.
Below is an example of identifying one motor vehicle using\
+ \ the compatibilityProperties container:
"compatibilityProperties"\
+ \ : [
{
"name"\
+ \ : "make",
"value" : "Subaru"
},
{
"name"\
+ \ : "model",
"value" : "GL"
},
{
"name"\
+ \ : "year",
"value" : "1983"
},
{
"name"\
+ \ : "trim",
"value" : "Base\
+ \ Wagon 4-Door"
},
{
"name"\
+ \ : "engine",
"value" : "1.8L\
+ \ Turbocharged"
}
]
Typically,\
+ \ the make, model, and year of the motor vehicle are always required,\
+ \ with the trim and engine being necessary sometimes, but it will be dependent\
+ \ on the part or accessory, and on the vehicle class.
Note: The productFamilyProperties\
+ \ container is deprecated and should no longer be used. The compatibilityProperties\
+ \ container should be used instead."
+ items:
+ $ref: "#/components/schemas/NameValueList"
+ notes:
+ type: "string"
+ description: "This field is used by the seller to input any notes pertaining\
+ \ to the compatible vehicle list being defined. The seller might use this\
+ \ field to specify the placement of the part on a vehicle or other applicable\
+ \ information.
This field will only be returned if specified by\
+ \ the seller.
Max Length: 500
"
+ productFamilyProperties:
+ description: "Important! The productFamilyProperties\
+ \ container is deprecated and should no longer be used. The compatibilityProperties\
+ \ container should be used instead.
"
+ $ref: "#/components/schemas/ProductFamilyProperties"
+ productIdentifier:
+ description: "This container is used in a createOrReplaceProductCompatibility\
+ \ call to identify a motor vehicle that is compatible with the inventory\
+ \ item. The user specifies either an eBay Product ID (ePID) or K-Type\
+ \ value to identify a vehicle, and if the motor vehicle is found in the\
+ \ eBay product catalog, the motor vehicle properties (make, model, year,\
+ \ trim, engine) will automatically be populated for the vehicle. If the\
+ \ vehicle cannot be found using these identifiers, the vehicle will not\
+ \ be added to the compatible vehicle list.
Note that this container\
+ \ will not be returned in the getProductCompatibility\
+ \ call."
+ $ref: "#/components/schemas/ProductIdentifier"
+ description: "This type is used to specify/indicate the motor vehicles that\
+ \ are compatible with the corresponding inventory item. "
+ ConditionDescriptor:
+ type: "object"
+ properties:
+ additionalInfo:
+ type: "string"
+ description: "This string provides additional information about a condition\
+ \ descriptor. Open text is passed in this field.
In the case of\
+ \ trading cards, this field houses the optional Certification Number\
+ \ condition descriptor for graded cards.
Max Length: 30\
+ \ characters"
+ name:
+ type: "string"
+ description: "This string provides the name of a condition descriptor. A\
+ \ numeric ID is passed in this field. This numeric ID maps to the name\
+ \ of a condition descriptor. Condition descriptor name-value pairs provide\
+ \ more information about an item's condition in a structured way.
To\
+ \ retrieve all condition descriptor name numeric IDs for a category, refer\
+ \ to the conditionDescriptorId field returned in the getItemConditionPolicies method of Metadata\
+ \ API.
In the case of trading cards, this field is used to provide\
+ \ condition descriptors for a card. For graded cards, the condition descriptors\
+ \ for Grader and Grade are required, while the condition\
+ \ descriptor for Certification Number is optional. For ungraded\
+ \ cards, only the Card Condition condition descriptor is required."
+ values:
+ type: "array"
+ description: "This array provides the value(s) associated with a condition\
+ \ descriptor. One or more numeric IDs is passed in this field. Commas\
+ \ are used as delimiters between successive name/value pairs. These numeric\
+ \ IDs map to the values associated with a condition descriptor name. Condition\
+ \ descriptor name-value pairs provide more information about an item's\
+ \ condition in a structured way.
To retrieve all condition descriptor\
+ \ value numeric IDs for a category, refer to the ConditionDescriptorValueId\
+ \ array returned in the getItemConditionPolicies method of Metadata\
+ \ API.
In the case of trading cards, this field houses the information\
+ \ on the Grader and Grade descriptors of graded cards and\
+ \ the Card Condition descriptor for ungraded cards."
+ items:
+ type: "string"
+ description: "This type is used by the seller to provide additional information\
+ \ about the condition of an item in a structured format."
+ CountryPolicy:
+ type: "object"
+ properties:
+ country:
+ type: "string"
+ description: "The two-letter ISO 3166-1 country code identifying the country\
+ \ to which the policy or policies specified in the corresponding policyIds\
+ \ array will apply. For implementation help, refer to eBay\
+ \ API documentation"
+ policyIds:
+ type: "array"
+ description: "An array of custom policy identifiers that apply to the country\
+ \ specified by listingPolicies.regionalTakeBackPolicies.countryPolicies.country.
Product\
+ \ compliance and take-back policy information may be returned using the\
+ \ following methods:- getCustomPolicies
Set policy_types\
+ \ to:PRODUCT_COMPLIANCE for product compliance policiesTAKE_BACK\
+ \ for takeback policies
This returns the list of specified\
+ \ policies and corresponding customPolicyId values a seller has\
+ \ created. - getCustomPolicy with
custom_policy_id\
+ \ = customPolicyId
Returns the details of the policy specified\
+ \ by customPolicyId
For information about creating and\
+ \ managing custom policies, refer to the custom_policy resource in the Sell Account\
+ \ API."
+ items:
+ type: "string"
+ description: "This type specifies custom product compliance and/or take-back\
+ \ policies that apply to a specified country."
+ Dimension:
+ type: "object"
+ properties:
+ height:
+ type: "number"
+ description: "The actual height (in the measurement unit specified in the\
+ \ unit field) of the shipping package. All fields of\
+ \ the dimensions container are required if package dimensions\
+ \ are specified.
If a shipping package measured 21.5 inches in\
+ \ length, 15.0 inches in width, and 12.0 inches in height, the dimensions\
+ \ container would look as follows:
\"dimensions\": {
\
+ \ \"length\": 21.5,
\"width\": 15.0,
\"height\": 12.0,
\"\
+ unit\": \"INCH\"
}
"
+ length:
+ type: "number"
+ description: "The actual length (in the measurement unit specified in the\
+ \ unit field) of the shipping package. All fields of\
+ \ the dimensions container are required if package dimensions\
+ \ are specified.
If a shipping package measured 21.5 inches in\
+ \ length, 15.0 inches in width, and 12.0 inches in height, the dimensions\
+ \ container would look as follows:
\"dimensions\": {
\
+ \ \"length\": 21.5,
\"width\": 15.0,
\"height\": 12.0,
\"\
+ unit\": \"INCH\"
}
"
+ unit:
+ type: "string"
+ description: "The unit of measurement used to specify the dimensions of\
+ \ a shipping package. All fields of the dimensions container\
+ \ are required if package dimensions are specified. If the English system\
+ \ of measurement is being used, the applicable values for dimension units\
+ \ are FEET and INCH. If the metric system of\
+ \ measurement is being used, the applicable values for weight units are\
+ \ METER and CENTIMETER. The metric system is\
+ \ used by most countries outside of the US. For implementation help, refer\
+ \ to eBay\
+ \ API documentation"
+ width:
+ type: "number"
+ description: "The actual width (in the measurement unit specified in the\
+ \ unit field) of the shipping package. All fields of\
+ \ the dimensions container are required if package dimensions\
+ \ are specified.
If a shipping package measured 21.5 inches in\
+ \ length, 15.0 inches in width, and 12.0 inches in height, the dimensions\
+ \ container would look as follows:
\"dimensions\": {
\
+ \ \"length\": 21.5,
\"width\": 15.0,
\"height\": 12.0,
\"\
+ unit\": \"INCH\"
}
"
+ description: "This type is used to specify the dimensions (and the unit used\
+ \ to measure those dimensions) of a shipping package. The dimensions\
+ \ container is conditionally required if the seller will be offering calculated\
+ \ shipping rates to determine shipping cost. See the Calculated shipping help page for more information\
+ \ on calculated shipping."
+ Document:
+ type: "object"
+ properties:
+ documentId:
+ type: "string"
+ description: "The unique identifier of a regulatory document associated\
+ \ with the listing.
This value can be found in the response of\
+ \ the createDocument method of the Media API."
+ description: "This type provides an array of one or more regulatory documents\
+ \ associated with a listing for Regulatory Compliance."
+ EbayOfferDetailsWithAll:
+ type: "object"
+ properties:
+ availableQuantity:
+ type: "integer"
+ description: "This integer value indicates the quantity of the inventory\
+ \ item (specified by the sku value) that will be available\
+ \ for purchase by buyers shopping on the eBay site specified in the marketplaceId\
+ \ field."
+ format: "int32"
+ categoryId:
+ type: "string"
+ description: "The unique identifier of the primary eBay category that the\
+ \ inventory item is listed under. This field is always returned for published\
+ \ offers, but is only returned if set for unpublished offers."
+ charity:
+ description: "This container is returned if a charitable organization will\
+ \ receive a percentage of sale proceeds for each sale generated by the\
+ \ listing. This container consists of the charityId field\
+ \ to identify the charitable organization, and the donationPercentage\
+ \ field that indicates the percentage of the sales proceeds that will\
+ \ be donated to the charitable organization."
+ $ref: "#/components/schemas/Charity"
+ extendedProducerResponsibility:
+ description: "This container is used to provide the eco-participation fee\
+ \ for a product. Use the getExtendedProducerResponsibilityPolicies\_method of the\_Sell\
+ \ Metadata API to retrieve categories that support eco-participation\
+ \ fee for a specified marketplace."
+ $ref: "#/components/schemas/ExtendedProducerResponsibility"
+ format:
+ type: "string"
+ description: "This enumerated value indicates the listing format of the\
+ \ offer. For implementation help, refer to eBay\
+ \ API documentation"
+ hideBuyerDetails:
+ type: "boolean"
+ description: "This field is returned as true if the private\
+ \ listing feature has been enabled for the offer. Sellers may want to\
+ \ use this feature when they believe that a listing's potential bidders/buyers\
+ \ would not want their obfuscated user IDs (and feedback scores) exposed\
+ \ to other users.
This field is always returned even if not explicitly\
+ \ set in the offer. It defaults to false, so will get returned\
+ \ as false if seller does not set this feature with a 'Create'\
+ \ or 'Update' offer method."
+ includeCatalogProductDetails:
+ type: "boolean"
+ description: "This field indicates whether or not eBay product catalog details\
+ \ are applied to a listing. A value of true indicates the\
+ \ listing corresponds to the eBay product associated with the provided\
+ \ product identifier. The product identifier is provided in createOrReplaceInventoryItem.Note: Though the includeCatalogProductDetails\
+ \ parameter is not required to be submitted in the request, the parameter\
+ \ defaults to 'true' if omitted.
"
+ listing:
+ description: "For published offers, this container is always returned in\
+ \ the getOffer and getOffers calls,\
+ \ and includes the eBay listing ID associated with the offer, the status\
+ \ of the listing, and the quantity sold through the listing. The listing\
+ \ container is not returned at all for unpublished offers."
+ $ref: "#/components/schemas/ListingDetails"
+ listingDescription:
+ type: "string"
+ description: "The description of the eBay listing that is part of the unpublished\
+ \ or published offer. This field is always returned for published offers,\
+ \ but is only returned if set for unpublished offers.
Max\
+ \ Length: 500000 (which includes HTML markup/tags)"
+ listingDuration:
+ type: "string"
+ description: "This field indicates the number of days that the listing will\
+ \ be active.
This field is returned for both auction and fixed-price\
+ \ listings; however, the value returned for fixed-price listings will\
+ \ always be GTC. The GTC (Good 'Til Cancelled) listings are\
+ \ automatically renewed each calendar month until the seller decides to\
+ \ end the listing.
Note:\
+ \ If the listing duration expires for an auction offer, the listing then\
+ \ becomes available as a fixed-price offer and will be GTC. For\
+ \ implementation help, refer to eBay\
+ \ API documentation"
+ listingPolicies:
+ description: "This container indicates the listing policies that are applied\
+ \ to the offer. Listing policies include business policies, custom listing\
+ \ policies, and fields that override shipping costs, enable eBay Plus\
+ \ eligibility, or enable the Best Offer feature.
It is required\
+ \ that the seller be opted into Business Policies before being able to\
+ \ create live eBay listings through the Inventory API. Sellers can opt-in\
+ \ to Business Policies through My eBay or by using the Account API's optInToProgram\
+ \ call. Payment, return, and fulfillment listing policies may be created/managed\
+ \ in My eBay or by using the listing policy calls of the sell Account\
+ \ API. The sell Account API can also be used\
+ \ to create and manage custom policies. For more information, see the\
+ \ sell Account API.
For unpublished offers where business policies\
+ \ have yet to be specified, this container will be returned as empty."
+ $ref: "#/components/schemas/ListingPolicies"
+ listingStartDate:
+ type: "string"
+ description: "This timestamp is the date/time (in UTC format) that the seller\
+ \ set for the scheduled listing. With the scheduled listing feature, the\
+ \ seller can set a time in the future that the listing will become active,\
+ \ instead of the listing becoming active immediately after a publishOffer\
+ \ call.
For example: 2023-05-30T19:08:00Z.
Scheduled listings\
+ \ do not always start at the exact date/time specified by the seller,\
+ \ but the date/time of the timestamp returned in getOffer/getOffers\
+ \ will be the same as the timestamp passed into a 'Create' or 'Update'\
+ \ offer call.
This field is returned if set for an offer."
+ lotSize:
+ type: "integer"
+ description: "This field is only applicable and returned if the listing\
+ \ is a lot listing. A lot listing is a listing that has multiple quantity\
+ \ of the same product. An example would be a set of four identical car\
+ \ tires. The integer value in this field is the number of identical items\
+ \ being sold through the lot listing."
+ format: "int32"
+ marketplaceId:
+ type: "string"
+ description: "This enumeration value is the unique identifier of the eBay\
+ \ site on which the offer is available, or will be made available. For\
+ \ implementation help, refer to eBay\
+ \ API documentation"
+ merchantLocationKey:
+ type: "string"
+ description: "The unique identifier of the inventory location. This identifier\
+ \ is set up by the merchant when the inventory location is first created\
+ \ with the createInventoryLocation call. Once this value\
+ \ is set for an inventory location, it can not be modified. To get more\
+ \ information about this inventory location, the getInventoryLocation method can be used, passing\
+ \ in this value at the end of the call URI.
This field is always\
+ \ returned for published offers, but is only returned if set for unpublished\
+ \ offers.
Max length: 36"
+ offerId:
+ type: "string"
+ description: "The unique identifier of the offer. This identifier is used\
+ \ in many offer-related calls, and it is also used in the bulkUpdatePriceQuantity\
+ \ call."
+ pricingSummary:
+ description: "This container shows the listing price for the product offer,\
+ \ and if applicable, the settings for the Minimum Advertised Price and\
+ \ Strikethrough Pricing features. The Minimum Advertised Price feature\
+ \ is only available on the US site. Strikethrough Pricing is available\
+ \ on the US, eBay Motors, UK, Germany, Canada (English and French), France,\
+ \ Italy, and Spain sites.
For unpublished offers where pricing\
+ \ information has yet to be specified, this container will be returned\
+ \ as empty."
+ $ref: "#/components/schemas/PricingSummary"
+ quantityLimitPerBuyer:
+ type: "integer"
+ description: "This field is only applicable and set if the seller wishes\
+ \ to set a restriction on the purchase quantity of an inventory item per\
+ \ seller. If this field is set by the seller for the offer, then each\
+ \ distinct buyer may purchase up to, but not exceed the quantity in this\
+ \ field. So, if this field's value is 5, each buyer may purchase\
+ \ a quantity of the inventory item between one and five, and the purchases\
+ \ can occur in one multiple-quantity purchase, or over multiple transactions.\
+ \ If a buyer attempts to purchase one or more of these products, and the\
+ \ cumulative quantity will take the buyer beyond the quantity limit, that\
+ \ buyer will be blocked from that purchase.
"
+ format: "int32"
+ regulatory:
+ description: "This container is used by the seller to provide regulatory\
+ \ information."
+ $ref: "#/components/schemas/Regulatory"
+ secondaryCategoryId:
+ type: "string"
+ description: "The unique identifier for a secondary category. This field\
+ \ is applicable if the seller decides to list the item under two categories.\
+ \ Sellers can use the getCategorySuggestions method of the Taxonomy\
+ \ API to retrieve suggested category ID values. A fee may be charged when\
+ \ adding a secondary category to a listing.
Note: You cannot list US eBay Motors\
+ \ vehicles in two categories. However, you can list Parts & Accessories\
+ \ in two categories."
+ sku:
+ type: "string"
+ description: "This is the seller-defined SKU value of the product in the\
+ \ offer.
Max Length: 50
"
+ status:
+ type: "string"
+ description: "The enumeration value in this field specifies the status of\
+ \ the offer - either PUBLISHED or UNPUBLISHED.\
+ \ For implementation help, refer to eBay\
+ \ API documentation"
+ storeCategoryNames:
+ type: "array"
+ description: "This container is returned if the seller chose to place the\
+ \ inventory item into one or two eBay store categories that the seller\
+ \ has set up for their eBay store. The string value(s) in this container\
+ \ will be the full path(s) to the eBay store categories, as shown below:
\
+ \ \"storeCategoryNames\": [
\"/Fashion/Men/Shirts\",
\
+ \ \"/Fashion/Men/Accessories\" ],
"
+ items:
+ type: "string"
+ tax:
+ description: "This container is only returned if a sales tax table, a Value-Added\
+ \ Tax (VAT) rate, and/or a tax exception category code was applied to\
+ \ the offer. Only Business Sellers can apply VAT to their listings. It\
+ \ is possible that the applyTax field will be included\
+ \ with a value of true, but a buyer's purchase will not involve\
+ \ sales tax. A sales tax rate must be set up in the seller's sales tax\
+ \ table for the buyer's state/tax jurisdiction in order for that buyer\
+ \ to be subject to sales tax.
See the Using a tax table help page for more information\
+ \ on setting up and using a sales tax table."
+ $ref: "#/components/schemas/Tax"
+ description: "This type provides details of an offer, and is used by the response\
+ \ payloads of the getOffer and the getOffers\
+ \ calls."
+ EbayOfferDetailsWithId:
+ type: "object"
+ properties:
+ availableQuantity:
+ type: "integer"
+ description: "This integer value sets the quantity of the inventory item\
+ \ that will be available through the offer. Quantity must be set to 1\
+ \ or more in order for the inventory item to be purchasable. This value\
+ \ should not be more than the quantity that is specified for the inventory\
+ \ item record. For auction listings, this value must be 1.\
+ \
If this field exists for the current unpublished or published\
+ \ offer, it should be provided again in the updateOffer\
+ \ call, even if the value is not changing. If this particular field is\
+ \ omitted in an updateOffer call, the general available\
+ \ quantity set for the inventory item record may be used instead, and\
+ \ this may not be accurate if the inventory item is being sold across\
+ \ multiple marketplaces."
+ format: "int32"
+ categoryId:
+ type: "string"
+ description: "The unique identifier of the eBay category that the inventory\
+ \ item is/will be listed under. This field is not immediately required\
+ \ for an unpublished offer, but will be required before publishing the\
+ \ offer. Sellers can use the getCategorySuggestions method of the Taxonomy\
+ \ API to retrieve suggested category ID values. The seller passes in a\
+ \ query string like \"iPhone 6\", and category ID values for\
+ \ suggested categories are returned in the response.
If this field\
+ \ exists for the current unpublished offer, it should be provided again\
+ \ in the updateOffer call, even if the eBay category\
+ \ is not changing. For a published offer (aka active eBay listing), this\
+ \ field must be provided or an error may occur. The eBay category of an\
+ \ active eBay listing cannot be changed once the listing has one or more\
+ \ sales, or if the listing is scheduled to end in less than 12 hours.
Important!Publish\
+ \ offer note: This field is required before an offer can be published\
+ \ to create an active listing.
"
+ charity:
+ description: "This container is used if the seller wishes to update a published\
+ \ or unpublished offer with a charitable organization that will receive\
+ \ a percentage of sale proceeds for each sale generated by the eBay listing.\
+ \ This container consists of the charityId field to identify\
+ \ the charitable organization, and the donationPercentage\
+ \ field that indicates the percentage of the sales proceeds that will\
+ \ be donated to the charitable organization for each sale. Both fields\
+ \ in this container are conditionally required for charitable listings."
+ $ref: "#/components/schemas/Charity"
+ extendedProducerResponsibility:
+ description: "This container is used to provide the eco-participation fee\
+ \ for a product. Use the getExtendedProducerResponsibilityPolicies\_method of the\_Sell\
+ \ Metadata API to retrieve categories that support eco-participation\
+ \ fee for a specified marketplace."
+ $ref: "#/components/schemas/ExtendedProducerResponsibility"
+ hideBuyerDetails:
+ type: "boolean"
+ description: "This field is included and set to true if the\
+ \ seller wishes to update a published or unpublished offer with the private\
+ \ listing feature. Alternatively, the seller could also remove the private\
+ \ listing feature (if already set for a published or unpublished offer)\
+ \ by including this field and setting it to false.
Sellers\
+ \ may want to use this option when they believe that a listing's potential\
+ \ bidders/buyers would not want their obfuscated user IDs (and feedback\
+ \ scores) exposed to other users."
+ includeCatalogProductDetails:
+ type: "boolean"
+ description: "This field indicates whether or not eBay product catalog details\
+ \ are applied to a listing. A value of true indicates the\
+ \ listing corresponds to the eBay product associated with the provided\
+ \ product identifier. The product identifier is provided in createOrReplaceInventoryItem.Note: Though the includeCatalogProductDetails\
+ \ parameter is not required to be submitted in the request, the parameter\
+ \ defaults to 'true' if omitted.
"
+ listingDescription:
+ type: "string"
+ description: "The text in this field is (published offers), or will become\
+ \ (unpublished offers) the description of the eBay listing. This field\
+ \ is not immediately required for an unpublished offer, but will be required\
+ \ before publishing the offer. Note that if the listingDescription\
+ \ field was omitted in the createOffer call for the offer,\
+ \ the offer entity should have picked up the text provided in the product.description\
+ \ field of the inventory item record, or if the inventory item is part\
+ \ of a group, the offer entity should have picked up the text provided\
+ \ in the description field of the inventory item group\
+ \ record.
HTML tags and markup can be used in listing descriptions,\
+ \ but each character counts toward the max length limit.
Note: To ensure that their short\
+ \ listing description is optimized when viewed on mobile devices, sellers\
+ \ should strongly consider using eBay's View Item description summary feature when\
+ \ listing their items. Keep in mind that the 'short' listing description\
+ \ is what prospective buyers first see when they view the listing on a\
+ \ mobile device. The 'full' listing description is also available to mobile\
+ \ users when they click on the short listing description, but the full\
+ \ description is not automatically optimized for viewing in mobile devices,\
+ \ and many users won't even drill down to the full description.
Using\
+ \ HTML div and span tag attributes, this feature allows sellers to customize\
+ \ and fully control the short listing description that is displayed to\
+ \ prospective buyers when viewing the listing on a mobile device. The\
+ \ short listing description on mobile devices is limited to 800 characters,\
+ \ and whenever the full listing description (provided in this field, in\
+ \ UI, or seller tool) exceeds this limit, eBay uses a special algorithm\
+ \ to derive the best possible short listing description within the 800-character\
+ \ limit. However, due to some short listing description content being\
+ \ removed, it is definitely not ideal for the seller, and could lead to\
+ \ a bad buyer experience and possibly to a Significantly not as described\
+ \ (SNAD) case, since the buyer may not get complete details on the item\
+ \ when viewing the short listing description. See the eBay help page for\
+ \ more details on using the HTML div and span tags.
If this\
+ \ field exists for the current unpublished offer, it should be provided\
+ \ again in the updateOffer call, even if the text is\
+ \ not changing. For a published offer (aka active eBay listing), this\
+ \ field must be provided or an error may occur.
Max length:\
+ \ 500000 (which includes HTML markup/tags)"
+ listingDuration:
+ type: "string"
+ description: "This field indicates the number of days that the listing will\
+ \ be active. For fixed-price listings, this value must be set to GTC,\
+ \ but auction listings support different listing durations.
The\
+ \ GTC (Good 'Til Cancelled) listings are automatically renewed each calendar\
+ \ month until the seller decides to end the listing.
Note: If the listing duration expires for\
+ \ an auction offer without a winning bidder, the listing then becomes\
+ \ available as a fixed-price offer and listing duration will be GTC.
Important!Publish\
+ \ offer note: This field is required before an offer can be published\
+ \ to create an active listing.
For implementation\
+ \ help, refer to eBay\
+ \ API documentation"
+ listingPolicies:
+ description: "This container sets listing policies that will be used to\
+ \ construct the listing. Listing policies include business policies, custom\
+ \ listing policies, and fields that override shipping costs, enable eBay\
+ \ Plus eligibility, or enable the Best Offer feature. This container is\
+ \ not initially required when creating an offer but will become required\
+ \ before the offer can be published. Busines policies (payment, return,\
+ \ fulfillment policies) will always be required before publishing an offer.\
+ \ Other policies, including the seller created compliance policies and\
+ \ seller created take-back policy, will be required as needed by the marketplace,\
+ \ category, or product.
This container is required for updating\
+ \ published offers, regardless of whether or not the business policies\
+ \ are being changed. For an unpublished offer, this field is not necessarily\
+ \ required, but will be required before an offer can be published.
It\
+ \ is required that the seller be opted in to Business Policies before\
+ \ being able to create live eBay listings through the Inventory API. Sellers\
+ \ can opt-in to Business Policies through My eBay or by using the Account\
+ \ API's optInToProgram call. Similarly, payment, return,\
+ \ and fulfillment business policies may be created/managed in My eBay\
+ \ or by using the business policy calls of the Account API.
Important!Publish\
+ \ offer note: This container and a few of its child fields (as noted below)\
+ \ are required before an offer can be published to create an active listing.
"
+ $ref: "#/components/schemas/ListingPolicies"
+ listingStartDate:
+ type: "string"
+ description: "This field can be used with an unpublished offer if the seller\
+ \ wants to specify a time in the future that the listing will become active\
+ \ on eBay. The timestamp supplied in this field should be in UTC format,\
+ \ and it should be far enough in the future so that the seller will have\
+ \ enough time to publish the listing with the publishOffer\
+ \ method.
For example: 2023-05-30T19:08:00Z.
This field\
+ \ is optional, and it doesn't apply to offers where the corresponding\
+ \ listing is already active. If this field is not provided, the listing\
+ \ starts immediately after a successful publishOffer\
+ \ method."
+ lotSize:
+ type: "integer"
+ description: "This field is only applicable if the listing is a lot listing.\
+ \ A lot listing is a listing that has multiple quantity of the same item,\
+ \ such as four identical tires being sold as a single offer, or it can\
+ \ be a mixed lot of similar items, such as used clothing items or an assortment\
+ \ of baseball cards. Whether the lot listing involved identical items\
+ \ or a mixed lot, the integer value passed into this field is the total\
+ \ number of items in the lot. Lots can be used for auction and fixed-price\
+ \ listings."
+ format: "int32"
+ merchantLocationKey:
+ type: "string"
+ description: "The unique identifier of a merchant's inventory location (where\
+ \ the inventory item in the offer is located).
To get more information\
+ \ about inventory locations, the getInventoryLocations method can be used.br>
Note: This field is not initially required\
+ \ upon first creating an offer, but will become required before an offer\
+ \ can be published.
Max length: 36"
+ pricingSummary:
+ description: "This container shows the listing price for the product offer,\
+ \ and if applicable, the settings for the Minimum Advertised Price and\
+ \ Strikethrough Pricing features. The Minimum Advertised Price feature\
+ \ is only available on the US site. Strikethrough Pricing is available\
+ \ on the US, eBay Motors, UK, Germany, Canada (English and French), France,\
+ \ Italy, and Spain sites.
This container is required for updating\
+ \ published offers, regardless of whether or not the pricing information\
+ \ is being changed or not. For an unpublished offer, this container is\
+ \ not necessarily required, but an offer price will be required before\
+ \ an offer can be published, and if a pricingSummary\
+ \ container already exists for an unpublished offer, it must be provided\
+ \ again, even if the values are not changing.
Important!Publish\
+ \ offer note: This container and its child container, price, are\
+ \ required before an offer can be published to create an active listing.\
+ \
"
+ $ref: "#/components/schemas/PricingSummary"
+ quantityLimitPerBuyer:
+ type: "integer"
+ description: "This field is only applicable and set if the seller wishes\
+ \ to set a restriction on the purchase quantity per seller. If this field\
+ \ is set by the seller for the offer, then each distinct buyer may purchase\
+ \ up to, but not exceeding the quantity specified for this field. So,\
+ \ if this field's value is 5, each buyer may purchase between\
+ \ one to five of these products, and the purchases can occur in one multiple-quantity\
+ \ purchase, or over multiple transactions. If a buyer attempts to purchase\
+ \ one or more of these products, and the cumulative quantity will take\
+ \ the buyer beyond the quantity limit, that buyer will be blocked from\
+ \ that purchase.
If this field currently exists for an unpublished\
+ \ or published offer, it should be provided again in an updateOffer\
+ \ call, even if the value is not changing.
"
+ format: "int32"
+ regulatory:
+ description: "This container is used by the seller to provide regulatory\
+ \ information."
+ $ref: "#/components/schemas/Regulatory"
+ secondaryCategoryId:
+ type: "string"
+ description: "The unique identifier for a secondary category. This field\
+ \ is applicable if the seller decides to list the item under two categories.\
+ \ Sellers can use the getCategorySuggestions method of the Taxonomy\
+ \ API to retrieve suggested category ID values. A fee may be charged when\
+ \ adding a secondary category to a listing.
Note: You cannot list US eBay Motors\
+ \ vehicles in two categories. However, you can list Parts & Accessories\
+ \ in two categories."
+ storeCategoryNames:
+ type: "array"
+ description: "This container is used if the seller would like to place the\
+ \ inventory item into one or two store categories that the seller has\
+ \ set up for their eBay store. The string value(s) passed in to this container\
+ \ will be the full path(s) to the store categories, as shown below:
\
+ \ \"storeCategoryNames\": [
\"/Fashion/Men/Shirts\",
\
+ \ \"/Fashion/Men/Accessories\" ],
If this field currently\
+ \ exists for an unpublished or published offer, it should be provided\
+ \ again in an updateOffer call, even if the eBay categories\
+ \ are not changing."
+ items:
+ type: "string"
+ tax:
+ description: "This container is only applicable and used if a sales tax\
+ \ table, a Value-Added Tax (VAT) rate, or a tax exception category code\
+ \ will be applied to the offer. Only Business Sellers can apply VAT to\
+ \ their listings. It is possible that the applyTax field\
+ \ will be included with a value of true, but a buyer's purchase\
+ \ will not involve sales tax. A sales tax rate must be set up in the seller's\
+ \ sales tax table for the buyer's state/tax jurisdiction in order for\
+ \ that buyer to be subject to sales tax. Sales tax rates for different\
+ \ jurisdictions can be added/modified in the Payment Preferences section\
+ \ of My eBay, or the seller can use the sales tax calls of the Account\
+ \ API.
If tax information currently exists for an unpublished\
+ \ or published offer, it should be provided again in an updateOffer\
+ \ call, even if none of the tax settings are changing.
See the\
+ \ Using a tax table help page for more information\
+ \ on setting up and using a sales tax table."
+ $ref: "#/components/schemas/Tax"
+ description: "updateOffer call. Every field that\
+ \ is currently set with the unpublished/published offer must also be passed\
+ \ into the updateOffer call, even those fields whose values\
+ \ are not changing. Note that for published offers, a successful updateOffer\
+ \ call will actually update the active eBay listing with whatever changes\
+ \ were made."
+ EbayOfferDetailsWithKeys:
+ type: "object"
+ properties:
+ availableQuantity:
+ type: "integer"
+ description: "This integer value sets the quantity of the inventory item\
+ \ (specified by the sku value) that will be available\
+ \ for purchase by buyers shopping on the eBay site specified in the marketplaceId\
+ \ field. Quantity must be set to 1 or more in order for the\
+ \ inventory item to be purchasable, but this field is not necessarily\
+ \ required, even for published offers, if the general quantity of the\
+ \ inventory item has already been set in the inventory item record.
For\
+ \ auction listings, this value must be 1.
Note: The availableQuantity field\
+ \ if set here overrides the quantity field set in the inventory\
+ \ item. See the note in Offer fields for details."
+ format: "int32"
+ categoryId:
+ type: "string"
+ description: "The unique identifier of the eBay category that the product\
+ \ will be listed under. This field is not immediately required upon creating\
+ \ an offer, but will be required before publishing the offer.
Sellers\
+ \ can use the getCategorySuggestions method of the Taxonomy\
+ \ API to retrieve suggested category ID values. The seller passes in a\
+ \ query string like \"iPhone 6\", and category ID values for\
+ \ suggested categories are returned in the response.
Important!Publish\
+ \ offer note: This field is required before an offer can be published\
+ \ to create an active listing.
Note: When listing in categoryID 173651 (Auto Performance\
+ \ Tuning Devices & Software), use of catalog products is required. For\
+ \ more information, see Tuning devices and software.
"
+ charity:
+ description: "This container is used if the seller wishes to select a charitable\
+ \ organization that will receive a percentage of sale proceeds for each\
+ \ sale generated by the eBay listing. This container consists of the charityId\
+ \ field to identify the charitable organization, and the donationPercentage\
+ \ field that indicates the percentage of the sales proceeds that will\
+ \ be donated to the charitable organization for each sale. Both fields\
+ \ in this container are conditionally required for charitable listings."
+ $ref: "#/components/schemas/Charity"
+ extendedProducerResponsibility:
+ description: "This container is used to provide the eco-participation fee\
+ \ for a product.
Use the getExtendedProducerResponsibilityPolicies\_method of the\_Sell\
+ \ Metadata API to retrieve categories that support eco-participation\
+ \ fee for a specified marketplace."
+ $ref: "#/components/schemas/ExtendedProducerResponsibility"
+ format:
+ type: "string"
+ description: "This enumerated value indicates the listing format of the\
+ \ offer.
Supported values are FIXED_PRICE and AUCTION.\
+ \ For implementation help, refer to eBay\
+ \ API documentation"
+ hideBuyerDetails:
+ type: "boolean"
+ description: "This field is included and set to true if the\
+ \ seller wishes to create a private listing.
Sellers may want\
+ \ to use this option when they believe that a listing's potential bidders/buyers\
+ \ would not want their obfuscated user IDs (and feedback scores) exposed\
+ \ to other users."
+ includeCatalogProductDetails:
+ type: "boolean"
+ description: "This field indicates whether or not eBay product catalog details\
+ \ are applied to a listing. A value of true indicates the\
+ \ listing corresponds to the eBay product associated with the provided\
+ \ product identifier. The product identifier is provided in createOrReplaceInventoryItem.
Default:\
+ \ trueNote: Though the includeCatalogProductDetails\
+ \ parameter is not required to be submitted in the request, the parameter\
+ \ defaults to true if omitted.
"
+ listingDescription:
+ type: "string"
+ description: "The text in this field is (published offers), or will become\
+ \ (unpublished offers) the description of the eBay listing. This field\
+ \ is not immediately required for an unpublished offer, but will be required\
+ \ before publishing the offer. Note that if the listingDescription\
+ \ field was omitted in the createOffer call for the offer,\
+ \ the offer entity should have picked up the text provided in the product.description\
+ \ field of the inventory item record, or if the inventory item is part\
+ \ of a group, the offer entity should have picked up the text provided\
+ \ in the description field of the inventory item group\
+ \ record.
HTML tags and markup can be used in listing descriptions,\
+ \ but each character counts toward the max length limit.
Note: To ensure that their short\
+ \ listing description is optimized when viewed on mobile devices, sellers\
+ \ should strongly consider using eBay's View Item description summary feature when\
+ \ listing their items. Keep in mind that the 'short' listing description\
+ \ is what prospective buyers first see when they view the listing on a\
+ \ mobile device. The 'full' listing description is also available to mobile\
+ \ users when they click on the short listing description, but the full\
+ \ description is not automatically optimized for viewing in mobile devices,\
+ \ and many users won't even drill down to the full description.
Using\
+ \ HTML div and span tag attributes, this feature allows sellers to customize\
+ \ and fully control the short listing description that is displayed to\
+ \ prospective buyers when viewing the listing on a mobile device. The\
+ \ short listing description on mobile devices is limited to 800 characters,\
+ \ and whenever the full listing description (provided in this field, in\
+ \ UI, or seller tool) exceeds this limit, eBay uses a special algorithm\
+ \ to derive the best possible short listing description within the 800-character\
+ \ limit. However, due to some short listing description content being\
+ \ removed, it is definitely not ideal for the seller, and could lead to\
+ \ a bad buyer experience and possibly to a Significantly not as described\
+ \ (SNAD) case, since the buyer may not get complete details on the item\
+ \ when viewing the short listing description. See the eBay help page for\
+ \ more details on using the HTML div and span tags.
Max\
+ \ length: 500000 (which includes HTML markup/tags)"
+ listingDuration:
+ type: "string"
+ description: "This field indicates the number of days that the listing will\
+ \ be active. For fixed-price listings, this value must be set to GTC,\
+ \ but auction listings support different listing durations.
The\
+ \ GTC (Good 'Til Cancelled) listings are automatically renewed each calendar\
+ \ month until the seller decides to end the listing.
Note: If the listing duration expires for\
+ \ an auction offer without a winning bidder, the listing then becomes\
+ \ available as a fixed-price offer and listing duration will be GTC.
\
+ \ Important!Publish\
+ \ offer note: This field is required before an offer can be published\
+ \ to create an active listing.
For implementation\
+ \ help, refer to eBay\
+ \ API documentation"
+ listingPolicies:
+ description: "This container sets listing policies that will be used to\
+ \ construct the listing. Listing policies include business policies, custom\
+ \ listing policies, and fields that override shipping costs, enable eBay\
+ \ Plus eligibility, or enable the Best Offer feature. This container is\
+ \ not initially required when creating an offer but will become required\
+ \ before the offer can be published. Busines policies (payment, return,\
+ \ fulfillment policies) will always be required before publishing an offer.\
+ \ Other policies, including the seller created compliance policies and\
+ \ seller created take-back policy, will be required as needed by the marketplace,\
+ \ category, or product.
It is required that the seller be opted\
+ \ into Business Policies before being able to create live eBay listings\
+ \ through the Inventory API. Sellers can opt-in to Business Policies through\
+ \ My eBay or by using the Account API's optInToProgram\
+ \ call. Payment, return, and fulfillment listing policies may be created/managed\
+ \ in My eBay or by using the listing policy calls of the sell Account\
+ \ API. The sell Account API can also be used\
+ \ to create and manage custom policies. For more information, see the\
+ \ sell Account API.
Important!Publish offer note:\
+ \ This container and a few of its child fields (as noted below) are required\
+ \ before an offer can be published to create an active listing.
"
+ $ref: "#/components/schemas/ListingPolicies"
+ listingStartDate:
+ type: "string"
+ description: "This field can be used if the seller wants to specify a time\
+ \ in the future that the listing will become active on eBay. The timestamp\
+ \ supplied in this field should be in UTC format, and it should be far\
+ \ enough in the future so that the seller will have enough time to publish\
+ \ the listing with the publishOffer method.
For\
+ \ example: 2023-05-30T19:08:00Z.
This field is optional. If this\
+ \ field is not provided, the listing starts immediately after a successful\
+ \ publishOffer method."
+ lotSize:
+ type: "integer"
+ description: "This field is only applicable if the listing is a lot listing.\
+ \ A lot listing is a listing that has multiple quantity of the same item,\
+ \ such as four identical tires being sold as a single offer, or it can\
+ \ be a mixed lot of similar items, such as used clothing items or an assortment\
+ \ of baseball cards. Whether the lot listing involved identical items\
+ \ or a mixed lot, the integer value passed into this field is the total\
+ \ number of items in the lot. Lots can be used for auction and fixed-price\
+ \ listings."
+ format: "int32"
+ marketplaceId:
+ type: "string"
+ description: "This enumeration value is the unique identifier of the eBay\
+ \ site for which the offer will be made available. See MarketplaceEnum\
+ \ for the list of supported enumeration values. This field is required.\
+ \ For implementation help, refer to eBay\
+ \ API documentation"
+ merchantLocationKey:
+ type: "string"
+ description: "The unique identifier of a merchant's inventory location (where\
+ \ the inventory item in the offer is located).
To get more information\
+ \ about inventory locations, the getInventoryLocations method can be used.
Note: This field is not initially required\
+ \ upon first creating an offer, but will become required before an offer\
+ \ can be published.
Important!Publish offer note:\
+ \ This field is required before an offer can be published to create an\
+ \ active listing.
Max length: 36"
+ pricingSummary:
+ description: "This container shows the listing price for the product offer,\
+ \ and if applicable, the settings for the Minimum Advertised Price and\
+ \ Strikethrough Pricing features. The Minimum Advertised Price feature\
+ \ is only available on the US site. Strikethrough Pricing is available\
+ \ on the US, eBay Motors, UK, Germany, Canada (English and French), France,\
+ \ Italy, and Spain sites.
This container is not initially required\
+ \ upon first creating an offer, but the price of the offer will become\
+ \ required before an offer can be published.
Important!Publish\
+ \ offer note: This container and its child container, price, are\
+ \ required before an offer can be published to create an active listing.\
+ \
"
+ $ref: "#/components/schemas/PricingSummary"
+ quantityLimitPerBuyer:
+ type: "integer"
+ description: "This field is only applicable and set if the seller wishes\
+ \ to set a restriction on the purchase quantity per seller. If this field\
+ \ is set by the seller for the offer, then each distinct buyer may purchase\
+ \ up to, but not exceed the quantity specified for this field. So, if\
+ \ this field's value is 5, each buyer may purchase between\
+ \ one to five of these products, and the purchases can occur in one multiple-quantity\
+ \ purchase, or over multiple transactions. If a buyer attempts to purchase\
+ \ one or more of these products, and the cumulative quantity will take\
+ \ the buyer beyond the quantity limit, that buyer will be blocked from\
+ \ that purchase.
"
+ format: "int32"
+ regulatory:
+ description: "This container is used by the seller to provide regulatory\
+ \ information."
+ $ref: "#/components/schemas/Regulatory"
+ secondaryCategoryId:
+ type: "string"
+ description: "The unique identifier for a secondary category. This field\
+ \ is applicable if the seller decides to list the item under two categories.\
+ \ Sellers can use the getCategorySuggestions method of the Taxonomy\
+ \ API to retrieve suggested category ID values. A fee may be charged when\
+ \ adding a secondary category to a listing.
Note: You cannot list US eBay Motors\
+ \ vehicles in two categories. However, you can list Parts & Accessories\
+ \ in two categories.Note:\
+ \ When listing in categoryID 173651 (Auto Performance Tuning Devices &\
+ \ Software), use of catalog products is required. For more information,\
+ \ see Tuning devices and software.
"
+ sku:
+ type: "string"
+ description: "The seller-defined SKU value of the product that will be listed\
+ \ on the eBay site (specified in the marketplaceId field).\
+ \ Only one offer (in unpublished or published state) may exist for each\
+ \ sku/marketplaceId/format\
+ \ combination. This field is required.
Use the getInventoryItems method to retrieve SKU values.
Max\
+ \ Length: 50
"
+ storeCategoryNames:
+ type: "array"
+ description: "This container is used if the seller would like to place the\
+ \ inventory item into one or two eBay store categories that the seller\
+ \ has set up for their eBay store. The string value(s) passed in to this\
+ \ container will be the full path(s) to the eBay store categories, as\
+ \ shown below:
\"storeCategoryNames\": [
\"/Fashion/Men/Shirts\"\
+ ,
\"/Fashion/Men/Accessories\" ],
"
+ items:
+ type: "string"
+ tax:
+ description: "This container is applicable and used only if a sales-tax\
+ \ table, a Value-Added Tax (VAT) rate, or a tax exception category code\
+ \ will be applied to the offer. Only Business Sellers can apply VAT to\
+ \ their listings. It is possible that the applyTax field\
+ \ will be included with a value of true, but a buyer's purchase\
+ \ will not involve sales tax.
A sales-tax rate must be set up in\
+ \ the seller's sales-tax table for the buyer's state/tax jurisdiction\
+ \ in order for that buyer to be subject to sales tax. Sales-tax rates\
+ \ for different jurisdictions can be added/modified in the Payment Preferences\
+ \ section of My eBay, or the seller can use the sales tax calls of the\
+ \ Account API.
Note:\
+ \ Sales-tax tables are available only for the US and Canada marketplaces.Refer\
+ \ to Taxes and import charges for more information\
+ \ on setting up and using a sales tax table."
+ $ref: "#/components/schemas/Tax"
+ description: "This type provides details of an offer, and is used by the base\
+ \ request payload of the createOffer and bulkCreateOffer\
+ \ methods."
+ EnergyEfficiencyLabel:
+ type: "object"
+ properties:
+ imageDescription:
+ type: "string"
+ description: "A brief verbal summary of the information included on the\
+ \ Energy Efficiency Label for an item.
For example, On a scale\
+ \ of A to G the rating is E."
+ imageURL:
+ type: "string"
+ description: "The URL to the Energy Efficiency Label image that is applicable\
+ \ to an item."
+ productInformationSheet:
+ type: "string"
+ description: "The URL to the Product Information Sheet that provides complete\
+ \ manufacturer-provided efficiency information about an item."
+ description: "This type provides information about the energy efficiency for\
+ \ certain durable goods.
Important! When providing energy\
+ \ efficiency information on an appliance or smartphones and tablets listing,\
+ \ the energy efficiency rating and range of the item must be\
+ \ specified through the the aspects field when creating the inventory item record.\
+ \ Use the getItemAspectsForCategory method of the Taxonomy API\
+ \ to retrieve applicable rating and range values for a specified category.
"
+ Error:
+ type: "object"
+ properties:
+ category:
+ type: "string"
+ description: "This string value indicates the error category. There are\
+ \ three categories of errors: request errors, application errors, and\
+ \ system errors. "
+ domain:
+ type: "string"
+ description: "The name of the domain in which the error or warning occurred."
+ errorId:
+ type: "integer"
+ description: "A unique code that identifies the particular error or warning\
+ \ that occurred. Your application can use error codes as identifiers in\
+ \ your customized error-handling algorithms."
+ format: "int32"
+ inputRefIds:
+ type: "array"
+ description: "An array of one or more reference IDs which identify the specific\
+ \ request element(s) most closely associated to the error or warning,\
+ \ if any."
+ items:
+ type: "string"
+ longMessage:
+ type: "string"
+ description: "A detailed description of the condition that caused the error\
+ \ or warning, and information on what to do to correct the problem."
+ message:
+ type: "string"
+ description: "A description of the condition that caused the error or warning."
+ outputRefIds:
+ type: "array"
+ description: "An array of one or more reference IDs which identify the specific\
+ \ response element(s) most closely associated to the error or warning,\
+ \ if any."
+ items:
+ type: "string"
+ parameters:
+ type: "array"
+ description: "Various warning and error messages return one or more variables\
+ \ that contain contextual information about the error or waring. This\
+ \ is often the field or value that triggered the error or warning."
+ items:
+ $ref: "#/components/schemas/ErrorParameter"
+ subdomain:
+ type: "string"
+ description: "The name of the subdomain in which the error or warning occurred."
+ description: "This type is used to express detailed information on errors and\
+ \ warnings that may occur with a call request."
+ ErrorParameter:
+ type: "object"
+ properties:
+ name:
+ type: "string"
+ description: "This type contains the name and value of an input parameter\
+ \ that contributed to a specific error or warning condition."
+ value:
+ type: "string"
+ description: "This is the actual value that was passed in for the element\
+ \ specified in the name field."
+ description: "This type is used to indicate the parameter field/value that caused\
+ \ an issue with the call request."
+ ExtendedProducerResponsibility:
+ type: "object"
+ properties:
+ ecoParticipationFee:
+ description: "This is the fee paid for new items to the eco-organization\
+ \ (for example, \"eco-organisme\" in France). It is a contribution to\
+ \ the financing of the elimination of the item responsibly.
Note: 0 should not be used as\
+ \ a default value.Minimum: 0.0"
+ $ref: "#/components/schemas/Amount"
+ producerProductId:
+ type: "string"
+ description: "Note: THIS FIELD IS DEPRECATED\
+ \ AND NO LONGER SUPPORTED. For sellers selling on the eBay France\
+ \ Marketplace, Extended Producer Responsibility ID fields are no longer\
+ \ set at the listing level. Instead, sellers must provide these IDs for\
+ \ each applicable category in their My eBay accounts. The URL will be\
+ \ based on the seller's home/registration site, and will use this pattern:\
+ \ https://accountsettings./epr-fr. Sellers based in the US will use https://accountsettings.ebay.com/epr-fr,\
+ \ sellers based in France will use https://accountsettings.ebay.fr/epr-fr, and so\
+ \ on."
+ productDocumentationId:
+ type: "string"
+ description: "Note: THIS FIELD IS DEPRECATED\
+ \ AND NO LONGER SUPPORTED. For sellers selling on the eBay France\
+ \ Marketplace, Extended Producer Responsibility ID fields are no longer\
+ \ set at the listing level. Instead, sellers must provide these IDs for\
+ \ each applicable category in their My eBay accounts. The URL will be\
+ \ based on the seller's home/registration site, and will use this pattern:\
+ \ https://accountsettings./epr-fr. Sellers based in the US will use https://accountsettings.ebay.com/epr-fr,\
+ \ sellers based in France will use https://accountsettings.ebay.fr/epr-fr, and so\
+ \ on."
+ productPackageId:
+ type: "string"
+ description: "Note: THIS FIELD IS DEPRECATED\
+ \ AND NO LONGER SUPPORTED. For sellers selling on the eBay France\
+ \ Marketplace, Extended Producer Responsibility ID fields are no longer\
+ \ set at the listing level. Instead, sellers must provide these IDs for\
+ \ each applicable category in their My eBay accounts. The URL will be\
+ \ based on the seller's home/registration site, and will use this pattern:\
+ \ https://accountsettings./epr-fr. Sellers based in the US will use https://accountsettings.ebay.com/epr-fr,\
+ \ sellers based in France will use https://accountsettings.ebay.fr/epr-fr, and so\
+ \ on."
+ shipmentPackageId:
+ type: "string"
+ description: "Note: THIS FIELD IS DEPRECATED\
+ \ AND NO LONGER SUPPORTED. For sellers selling on the eBay France\
+ \ Marketplace, Extended Producer Responsibility ID fields are no longer\
+ \ set at the listing level. Instead, sellers must provide these IDs for\
+ \ each applicable category in their My eBay accounts. The URL will be\
+ \ based on the seller's home/registration site, and will use this pattern:\
+ \ https://accountsettings./epr-fr. Sellers based in the US will use https://accountsettings.ebay.com/epr-fr,\
+ \ sellers based in France will use https://accountsettings.ebay.fr/epr-fr, and so\
+ \ on."
+ description: "This type provides IDs for the producer or importer related to\
+ \ the new item, packaging, added documentation, or an eco-participation fee.\
+ \ In some markets, such as in France, this may be the importer of the item."
+ Fee:
+ type: "object"
+ properties:
+ amount:
+ description: "This dollar value in this container is the actual dollar value\
+ \ of the listing fee type specified in the feeType field."
+ $ref: "#/components/schemas/Amount"
+ feeType:
+ type: "string"
+ description: "The value returned in this field indicates the type of listing\
+ \ fee that the seller may incur if one or more unpublished offers (offers\
+ \ are specified in the call request) are published on the marketplace\
+ \ specified in the marketplaceId field. Applicable listing\
+ \ fees will often include things such as InsertionFee or\
+ \ SubtitleFee, but many fee types will get returned even\
+ \ when they are 0.0.
See the Standard selling fees help page for more information\
+ \ on listing fees."
+ promotionalDiscount:
+ description: "The dollar value in this container indicates any eBay promotional\
+ \ discount applied toward the listing fee type specified in the feeType\
+ \ field. If there was no discount applied toward the fee, this container\
+ \ is still returned but its value is 0.0."
+ $ref: "#/components/schemas/Amount"
+ description: "This type is used to express expected listing fees that the seller\
+ \ may incur for one or more unpublished offers, as well as any eBay-related\
+ \ promotional discounts being applied toward a specific fee. These fees are\
+ \ the expected cumulative fees per eBay marketplace (which is indicated in\
+ \ the marketplaceId field)."
+ FeeSummary:
+ type: "object"
+ properties:
+ fees:
+ type: "array"
+ description: "This container is an array of listing fees that can be expected\
+ \ to be applied to an offer on the specified eBay marketplace (marketplaceId\
+ \ value). Many fee types will get returned even when they are 0.0.
See\
+ \ the Standard selling fees help page for more information on listing\
+ \ fees."
+ items:
+ $ref: "#/components/schemas/Fee"
+ marketplaceId:
+ type: "string"
+ description: "This is the unique identifier of the eBay site for which \
+ \ listing fees for the offer are applicable. For implementation help,\
+ \ refer to eBay\
+ \ API documentation"
+ warnings:
+ type: "array"
+ description: "This container will contain an array of errors and/or warnings\
+ \ when a call is made, and errors and/or warnings occur."
+ items:
+ $ref: "#/components/schemas/Error"
+ description: "This type is used to display the expected listing fees for each\
+ \ unpublished offer specified in the request of the getListingFees\
+ \ call."
+ FeesSummaryResponse:
+ type: "object"
+ properties:
+ feeSummaries:
+ type: "array"
+ description: "This container consists of an array of one or more listing\
+ \ fees that the seller can expect to pay for unpublished offers specified\
+ \ in the call request. Many fee types will get returned even when they\
+ \ are 0.0."
+ items:
+ $ref: "#/components/schemas/FeeSummary"
+ description: "This type is used by the base response payload for the getListingFees\
+ \ call. "
+ FormatAllocation:
+ type: "object"
+ properties:
+ auction:
+ type: "integer"
+ description: "This integer value indicates the quantity of the inventory\
+ \ item that is reserved for the published auction format offers of the\
+ \ SKU."
+ format: "int32"
+ fixedPrice:
+ type: "integer"
+ description: "This integer value indicates the quantity of the inventory\
+ \ item that is available for the fixed-price offers of the SKU."
+ format: "int32"
+ description: "This type is used to indicate the quantities of the inventory\
+ \ items that are reserved for the different listing formats of the SKU offers."
+ FulfillmentCenterSpecifications:
+ type: "object"
+ properties:
+ sameDayShippingCutOffTimes:
+ description: "Note: This container only\
+ \ applies to listings with same-day handling.
This container\
+ \ specifies cut-off time(s) for order handling (and optionally cut-off\
+ \ overrides) at a fulfillment center location.
For example, if\
+ \ the cut-off time for order handling is 14:00, any orders\
+ \ made after this time will be handled on the next available business\
+ \ day.
Note: Shipping cut-off\
+ \ times must be specified if one of the locationTypes of the inventory\
+ \ location is FULFILLMENT_CENTER."
+ $ref: "#/components/schemas/SameDayShippingCutOffTimes"
+ description: "This type is used to provide shipping specification details, such\
+ \ as the weekly cut-off schedule for order handling and cut-off override(s),\
+ \ for a fulfillment center location. "
+ GeoCoordinates:
+ type: "object"
+ properties:
+ latitude:
+ type: "number"
+ description: "The latitude (North-South) component of the geographic coordinate.\
+ \ This field is required if a geoCoordinates container\
+ \ is used.
This field is returned if geographical coordinates are\
+ \ set for the location.
Example: 33.089805"
+ longitude:
+ type: "number"
+ description: "The longitude (East-West) component of the geographic coordinate.\
+ \ This field is required if a geoCoordinates container\
+ \ is used.
This field is returned if geographical coordinates are\
+ \ set for the location.
Example: -88.709822"
+ description: "This type is used to express the Global Positioning System (GPS)\
+ \ latitude and longitude coordinates of an inventory location."
+ GetInventoryItem:
+ type: "object"
+ properties:
+ sku:
+ type: "string"
+ description: "An array of SKU values are passed in under the sku\
+ \ container to retrieve up to 25 inventory item records.
Use the\
+ \ getInventoryItems method to retrieve SKU values."
+ description: "The seller-defined Stock-Keeping Unit (SKU) of each inventory\
+ \ item that the user wants to retrieve is passed in the request of the bulkGetInventoryItem\
+ \ method."
+ GetInventoryItemResponse:
+ type: "object"
+ properties:
+ errors:
+ type: "array"
+ description: "This container will be returned if there were one or more\
+ \ errors associated with retrieving the inventory item record."
+ items:
+ $ref: "#/components/schemas/Error"
+ inventoryItem:
+ description: "This container consists of detailed information on the inventory\
+ \ item specified in the sku field."
+ $ref: "#/components/schemas/InventoryItemWithSkuLocaleGroupKeys"
+ sku:
+ type: "string"
+ description: "The seller-defined Stock-Keeping Unit (SKU) of the inventory\
+ \ item. The seller should have a unique SKU value for every product that\
+ \ they sell."
+ statusCode:
+ type: "integer"
+ description: "The HTTP status code returned in this field indicates the\
+ \ success or failure of retrieving the inventory item record for the inventory\
+ \ item specified in the sku field. See the HTTP\
+ \ status codes table to see which each status code indicates."
+ format: "int32"
+ warnings:
+ type: "array"
+ description: "This container will be returned if there were one or more\
+ \ warnings associated with retrieving the inventory item record."
+ items:
+ $ref: "#/components/schemas/Error"
+ description: "This type is used by the response of the bulkGetInventoryItem\
+ \ method to give the status of each inventory item record that the user tried\
+ \ to retrieve."
+ Hazmat:
+ type: "object"
+ properties:
+ component:
+ type: "string"
+ description: "This field is used by the seller to provide component information\
+ \ for the listing. For example, component information can provide the\
+ \ specific material of Hazmat concern.
Max length: 120"
+ pictograms:
+ type: "array"
+ description: "An array of comma-separated string values listing applicable\
+ \ pictogram code(s) for Hazard Pictogram(s).
If your product contains\
+ \ hazardous substances or mixtures, please select the values corresponding\
+ \ to the hazard pictograms that are stated on your product's Safety Data\
+ \ Sheet. The selected hazard information will be displayed on your listing.
Note: Use the getHazardousMaterialsLabels method in the Metadata\
+ \ API to find supported values for a specific marketplace/site. Refer\
+ \ to Pictogram sample values for additional information."
+ items:
+ type: "string"
+ signalWord:
+ type: "string"
+ description: "This field sets the signal word for hazardous materials in\
+ \ the listing.
If your product contains hazardous substances or\
+ \ mixtures, please select a value corresponding to the signal word that\
+ \ is stated on your product's Safety Data Sheet. The selected hazard information\
+ \ will be displayed on your listing.
Note: Use the getHazardousMaterialsLabels method in the Metadata API to find supported values for a specific marketplace/site.\
+ \ Refer to Signal word information for additional information."
+ statements:
+ type: "array"
+ description: "An array of comma-separated string values specifying applicable\
+ \ statement code(s) for hazard statement(s) for the listing.
If\
+ \ your product contains hazardous substances or mixtures, please select\
+ \ the values corresponding to the hazard statements that are stated on\
+ \ your product's Safety Data Sheet. The selected hazard information will\
+ \ be displayed on your listing.
Note:\
+ \ Use the getHazardousMaterialsLabels method in the Metadata\
+ \ API to find supported values for a specific marketplace/site. Refer\
+ \ to Hazard statement sample values for additional\
+ \ information.
This field is required if hazardous material\
+ \ information is provided for the listing."
+ items:
+ type: "string"
+ description: "This container is used by the seller to provide hazardous material\
+ \ information for the listing.
The statements element is required\
+ \ to complete the hazmat section of a listing.
The following elements\
+ \ are optional:- pictograms
- signalWord
- component
"
+ Interval:
+ type: "object"
+ properties:
+ close:
+ type: "string"
+ description: "The close value is actually the time that\
+ \ the store location closes. Local time (in Military format) is used.\
+ \ So, if a store closed at 8 PM local time, the close\
+ \ time would look like the following: 20:00:00. This field\
+ \ is conditionally required if the intervals container\
+ \ is used to specify working hours or special hours for a store.
This\
+ \ field is returned if set for the store location."
+ open:
+ type: "string"
+ description: "The open value is actually the time that\
+ \ the store opens. Local time (in Military format) is used. So, if a store\
+ \ opens at 9 AM local time, the open time would look\
+ \ like the following: 09:00:00. This field is conditionally\
+ \ required if the intervals container is used to specify\
+ \ working hours or special hours for a store.
This field is returned\
+ \ if set for the store location."
+ description: "This type is used by the intervals container\
+ \ to define the opening and closing times of a store location's working day.\
+ \ Local time (in Military format) is used, with the following format: hh:mm:ss."
+ InventoryItem:
+ type: "object"
+ properties:
+ availability:
+ description: "This container is used to specify the quantity of the inventory\
+ \ item that are available for purchase.
This container is optional\
+ \ up until the seller is ready to publish an offer with the SKU, at which\
+ \ time it becomes required. Availability data must also be passed if an\
+ \ inventory item is being updated and availability data already exists\
+ \ for that inventory item.
Since an inventory item must have specified\
+ \ quantity before being published in an offer, this container is always\
+ \ returned in the 'Get' calls for SKUs that are part of a published offer.\
+ \ If a SKU is not part of a published offer, this container will only\
+ \ be returned if set for the inventory item."
+ $ref: "#/components/schemas/Availability"
+ condition:
+ type: "string"
+ description: "This enumeration value indicates the condition of the item.\
+ \ Supported item condition values will vary by eBay site and category.\
+ \ To see which item condition values that a particular eBay category supports,\
+ \ use the getItemConditionPolicies method of the Metadata\
+ \ API. This method returns condition ID values that map to the\
+ \ enumeration values defined in the ConditionEnum type. The Item condition ID and name values topic in the\
+ \ Selling Integration Guide has a table that maps condition\
+ \ ID values to ConditionEnum values. The getItemConditionPolicies\
+ \ call reference page has more information.
A condition\
+ \ value is optional up until the seller is ready to publish an offer with\
+ \ the SKU, at which time it becomes required for most eBay categories.
Important!Publish\
+ \ offer note: This field is required before an offer can be published\
+ \ to create an active listing.
For implementation help,\
+ \ refer to eBay\
+ \ API documentation"
+ conditionDescription:
+ type: "string"
+ description: "This string field is used by the seller to more clearly describe\
+ \ the condition of a used inventory item, or an inventory item whose condition\
+ \ value is not NEW, LIKE_NEW, NEW_OTHER,\
+ \ or NEW_WITH_DEFECTS.
The conditionDescription\
+ \ field is available for all eBay categories. If the conditionDescription\
+ \ field is used with an item in one of the new conditions (mentioned in\
+ \ previous paragraph), eBay will simply ignore this field if included,\
+ \ and eBay will return a warning message to the user.
This field\
+ \ should only be used to further clarify the condition of the used item.\
+ \ It should not be used for branding, promotions, shipping, returns, payment\
+ \ or other information unrelated to the condition of the used item. Make\
+ \ sure that the condition value, condition description,\
+ \ listing description, and the item's pictures do not contradict one another.\
+ \
This field is not always required, but is required if an inventory\
+ \ item is being updated and a condition description already exists for\
+ \ that inventory item.
This field is returned in the getInventoryItem\
+ \ and getInventoryItems calls if a condition description\
+ \ was provided for a used inventory item.
Max Length:\
+ \ 1000."
+ conditionDescriptors:
+ type: "array"
+ description: "This container is used by the seller to provide additional\
+ \ information about the condition of an item in a structured format. Condition\
+ \ descriptors are name-value attributes that can be either closed set\
+ \ or open text inputs.
For trading card listings in Non-Sport\
+ \ Trading Card Singles (183050), CCG Individual Cards (183454),\
+ \ and Sports Trading Card Singles (261328) categories, sellers\
+ \ must use either LIKE_NEW (2750) or USED_VERY_GOOD\
+ \ (4000) item condition to specify the card as Graded or Ungraded,\
+ \ respectively. Use of either of these conditions requires the seller\
+ \ to use this array to provide one or more applicable Condition Descriptor\
+ \ name-value pairs.
To retrieve all condition descriptor numeric\
+ \ IDs for a category, use the getItemConditionPolicies method of the Metadata\
+ \ API."
+ items:
+ $ref: "#/components/schemas/ConditionDescriptor"
+ packageWeightAndSize:
+ description: "This container is used if the seller is offering one or more\
+ \ calculated shipping options for the inventory item, or if the seller\
+ \ is offering flat-rate shipping but is including a shipping surcharge\
+ \ based on the item's weight. This container is used to specify the dimensions\
+ \ and weight of a shipping package.
Note:\
+ \ Package weight and dimensions are only supported for the following marketplaces:\
+ \ AU, CA, DE, IT, UK, US, and Motors. If this information is provided\
+ \ on other marketplaces, it will be ignored.
This container\
+ \ is not always required, but is required if an inventory item is being\
+ \ updated and shipping package data already exists for that inventory\
+ \ item.
This container is returned in the getInventoryItem\
+ \ and getInventoryItems calls if package type, package\
+ \ weight, and/or package dimensions are specified for an inventory item.
See\
+ \ the Calculated shipping help page for more information\
+ \ on calculated shipping."
+ $ref: "#/components/schemas/PackageWeightAndSize"
+ product:
+ description: "This container is used to define the product details, such\
+ \ as product title, product description, product identifiers (eBay Product\
+ \ ID, GTIN, or Brand/MPN pair), product aspects/item specifics, and product\
+ \ images. Note that an eBay Product ID (ePID) or a Global Trade Item Number\
+ \ (GTIN) value can be used in an attempt to find a matching product in\
+ \ the eBay Catalog. If a product match is found, the inventory item record\
+ \ will automatically pick up all product details associated with the eBay\
+ \ Catalog product.
Many eBay categories will require at least one\
+ \ product identifier (a GTIN or a Brand/MPN pair). To discover which product\
+ \ identifier(s) that an eBay category might require or support, use the\
+ \ getItemAspectsForCategory method in the Taxonomy\
+ \ API. In the getItemAspectsForCategory response, look\
+ \ for product identifier names (brand, mpn,\
+ \ upc, ean, isbn) in the localizedAspectName\
+ \ fields, and then look for the correspondinng aspectRequired\
+ \ boolean fields as well as the corresponding aspectUsage\
+ \ field, which will indicate if the aspect is required, recommended, or\
+ \ optional. In some cases, a product identifier type may be required,\
+ \ but not known/applicable for a product. If this is the case, the seller\
+ \ must still include the corresponding field in the inventory item record,\
+ \ but pass in a default text string. This text string can vary by site,\
+ \ so the seller should use the GeteBayDetails call of\
+ \ the Trading API to get this string value. In the GeteBayDetails\
+ \ call, the seller should include a DetailName field\
+ \ with its value set to ProductDetails. In the response of\
+ \ the call, the seller can see the default string value in the ProductDetails.ProductIdentifierUnavailableText\
+ \ field. The seller will use this value in one or more of the product\
+ \ identifier fields (ean, isbn, upc,\
+ \ or mpn) if a product ID isn't known or applicable.\
+ \
This container is not initially required, but it is required\
+ \ before an inventory item can be published as an offer, and/or if an\
+ \ inventory item is being updated and product data already exists for\
+ \ that inventory item.
This container is always returned for published\
+ \ offers in the getInventoryItem, bulkGetInventoryItem,\
+ \ and getInventoryItems calls since product data must\
+ \ be defined for published offers, but for unpublished inventory items,\
+ \ this container will only be returned if product details have been defined\
+ \ for the inventory item.
Important!Publish offer note:\
+ \ This container and a few of its child fields (as noted below) are required\
+ \ before an offer can be published to create an active listing.
"
+ $ref: "#/components/schemas/Product"
+ description: "This type is used to provide detailed information about an inventory\
+ \ item."
+ InventoryItemGroup:
+ type: "object"
+ properties:
+ aspects:
+ type: "string"
+ description: "This is a collection of item specifics (aka product aspects)\
+ \ name-value pairs that are shared by all product variations within the\
+ \ inventory item group. Common aspects for the inventory item group are\
+ \ not immediately required upon creating an inventory item group, but\
+ \ these aspects will be required before the first offer of the group is\
+ \ published. Common aspects for a men's t-shirt might be pattern and sleeve\
+ \ length.
Important! Effective from December\
+ \ 28th, 2024, sellers offering certain rechargeable devices in EU and\
+ \ Northern Ireland markets must comply with the Common Charger Directive\
+ \ (CCD) and list appropriate charger-related aspects and values on their\
+ \ listings. See Common Charger Directive for more information.
Below\
+ \ is an example of the proper JSON syntax to use when manually inputting\
+ \ item specifics. Note that one item specific name, such as 'Features',\
+ \ can have more than one value. If an item specific name has more than\
+ \ one value, each value is delimited with a comma.
\"aspects\"\
+ : {
\"pattern\": [\"solid\"],
\"sleeves\": [\"short\"]
}
This\
+ \ container is always returned if one or more offers associated with the\
+ \ inventory item group have been published, and is only returned if set\
+ \ for an inventory item group if that group has yet to have any offers\
+ \ published.
Important!Publish offer note:\
+ \ This field is required before an offer can be published to create an\
+ \ active listing.
"
+ description:
+ type: "string"
+ description: "The description of the inventory item group. This description\
+ \ should fully describe the product and the variations of the product\
+ \ that are available in the inventory item group, since this description\
+ \ will ultimately become the listing description once the first offer\
+ \ of the group is published. This field is not initially required when\
+ \ first creating an inventory item group, but will be required before\
+ \ the first offer of the group is published.
Note: Since this description will ultimately become\
+ \ the listing description in a multiple-variation listing, the seller\
+ \ should omit the listingDescription field when creating\
+ \ the offers for each variation. If they include the listingDescription\
+ \ field for the individual offer(s) in an item group, the text in that\
+ \ field for a published offer will overwrite the text provided in this\
+ \ description field for the inventory item group.
HTML\
+ \ tags and markup can be used in this field, but each character counts\
+ \ toward the max length limit.
Note:\
+ \ To ensure that their short listing description is optimized when viewed\
+ \ on mobile devices, sellers should strongly consider using eBay's View Item description summary feature when\
+ \ listing their items. Keep in mind that the 'short' listing description\
+ \ is what prospective buyers first see when they view the listing on a\
+ \ mobile device. The 'full' listing description is also available to mobile\
+ \ users when they click on the short listing description, but the full\
+ \ description is not automatically optimized for viewing in mobile devices,\
+ \ and many users won't even drill down to the full description.
Using\
+ \ HTML div and span tag attributes, this feature allows sellers to customize\
+ \ and fully control the short listing description that is displayed to\
+ \ prospective buyers when viewing the listing on a mobile device. The\
+ \ short listing description on mobile devices is limited to 800 characters,\
+ \ and whenever the full listing description (provided in this field, in\
+ \ UI, or seller tool) exceeds this limit, eBay uses a special algorithm\
+ \ to derive the best possible short listing description within the 800-character\
+ \ limit. However, due to some short listing description content being\
+ \ removed, it is definitely not ideal for the seller, and could lead to\
+ \ a bad buyer experience and possibly to a Significantly not as described\
+ \ (SNAD) case, since the buyer may not get complete details on the item\
+ \ when viewing the short listing description. See the eBay help page for\
+ \ more details on using the HTML div and span tags.
This\
+ \ field is always returned if one or more offers associated with the inventory\
+ \ item group have been published, and is only returned if set for an inventory\
+ \ item group if that group has yet to have any offers published.
Important!Publish\
+ \ offer note: This field is required before an offer can be published\
+ \ to create an active listing.
Max Length:\
+ \ 500000 (which includes HTML markup/tags)
"
+ imageUrls:
+ type: "array"
+ description: "An array of one or more links to images for the inventory\
+ \ item group. URLs must use the \"HTTPS\" protocol. Images can be self-hosted\
+ \ by the seller, or sellers can use the UploadSiteHostedPictures call of the Trading\
+ \ API to upload images to an eBay Picture Server. If successful, the response\
+ \ of the UploadSiteHostedPictures call will contain\
+ \ a full URL to the image on an eBay Picture Server. This is the URL that\
+ \ will be passed in through the imageUrls array.
Note: Before any offer can be\
+ \ published, at least one image must exist for the offer. Links to images\
+ \ can either be passed in through this imageUrls container,\
+ \ or they can be passed in through the product.imageUrls\
+ \ container when creating each inventory item in the group. If the variesBy.aspectsImageVariesBy\
+ \ field is used to specify the main product aspect where the variations\
+ \ vary, the links to the images must be passed in through this imageUrls\
+ \ container, and there should be a picture for each variation. So, if\
+ \ the variesBy.aspectsImageVariesBy field is set to Color,\
+ \ a link should be included to an image demonstrating each available color\
+ \ in the group.
In almost any category at no cost, sellers\
+ \ can include up to 24 pictures in one listing. For inventory items that\
+ \ are a part of an inventory item group/multiple-variation listings, a\
+ \ maximum of 12 pictures may be used per inventory item in the group.\
+ \ Motor vehicle listings are an exception. The number of included pictures\
+ \ in motor vehicle listings depend on the selected vehicle package (see\
+ \ Fees for selling vehicles on eBay Motors).
This\
+ \ container will always be returned for an inventory item group that has\
+ \ at least one published offer since a published offer will always have\
+ \ at least one picture, but this container will only be returned if defined\
+ \ for inventory item groups that have yet to have any published offers. "
+ items:
+ type: "string"
+ inventoryItemGroupKey:
+ type: "string"
+ description: "This is the unique identifier of the inventory item group.\
+ \ This identifier is created by the seller when an inventory item group\
+ \ is created.
Note: This field\
+ \ is only applicable to the getInventoryItemGroup call\
+ \ and not to the createOrReplaceInventoryItemGroup call.\
+ \ In the createOrReplaceInventoryItemGroup call, the\
+ \ inventoryItemGroupKey value is passed into the end\
+ \ of the call URI instead. "
+ subtitle:
+ type: "string"
+ description: "A subtitle is an optional listing feature that allows the\
+ \ seller to provide more information about the product, possibly including\
+ \ keywords that may assist with search results. An additional listing\
+ \ fee will be charged to the seller if a subtitle is used. For more information\
+ \ on using listing subtitles on the US site, see the Adding a subtitle to your listings help page.\
+ \
Note: Since this\
+ \ subtitle will ultimately become the subtitle in a multiple-variation\
+ \ listing, the seller should not include the subtitle\
+ \ field when creating the inventory items that are members of the group.\
+ \ If they do include the subtitle field in an inventory\
+ \ item record, the text in that field will overwrite the text provided\
+ \ in this subtitle field for each inventory item in the\
+ \ group that is published.
This field will only be returned\
+ \ if set for an inventory item.
Max Length: 55
"
+ title:
+ type: "string"
+ description: "The title of the inventory item group. This title will ultimately\
+ \ become the listing title once the first offer of the group is published.\
+ \ This field is not initially required when first creating an inventory\
+ \ item group, but will be required before the first offer of the group\
+ \ is published.
Note:\
+ \ Since this title will ultimately become the listing title in a multiple-variation\
+ \ listing, the seller should omit the title field when\
+ \ creating the inventory items that are members of the group. If they\
+ \ do include the title field in an inventory item record,\
+ \ the text in that field will overwrite the text provided in this title\
+ \ field for each inventory item in the group that is published.
This\
+ \ field is always returned if one or more offers associated with the inventory\
+ \ item group have been published, and is only returned if set for an inventory\
+ \ item group if that group has yet to have any offers published.
Important!Publish\
+ \ offer note: This field is required before an offer can be published\
+ \ to create an active listing.
Max Length:\
+ \ 80
"
+ variantSKUs:
+ type: "array"
+ description: "This required container is used to assign individual inventory\
+ \ items to the inventory item group. Multiple SKU values are passed in\
+ \ to this container. If updating an existing inventory item group, the\
+ \ seller should make sure that all member SKU values are passed in, as\
+ \ long as the seller wants that SKU to remain in the group.
It\
+ \ is also possible to add or remove SKUs with a createOrReplaceInventoryItemGroup\
+ \ call. If the seller wants to remove a SKU from the group, that seller\
+ \ will just omit that SKU value from this container to remove that inventory\
+ \ item/SKU from the inventory item group and any published, multiple-variation\
+ \ listing. However, a variation cannot be removed from the group if that\
+ \ variation has one or more sales for that listing. A workaround for this\
+ \ is to set that variation's quantity to 0 and it will be\
+ \ 'grayed out' in the View Item page.
This container is always\
+ \ returned."
+ items:
+ type: "string"
+ variesBy:
+ description: "This container is used to specify product aspects for which\
+ \ variations within an inventory item group vary, and a complete list\
+ \ of all those variances. For example, t-shirts in an inventory item group\
+ \ may be available in multiple sizes and colors. If this is the case,\
+ \ Color and Size would both be values in the\
+ \ specifications.name fields, and the available colors\
+ \ and sizes would be values under the corresponding specifications.values\
+ \ array. If the seller will be including multiple images in the listing\
+ \ that will demonstrate how each variation differs, that seller will also\
+ \ include the aspectsImageVariesBy field, and call out\
+ \ the product aspect where the listing images differ. In the t-shirts\
+ \ example, this product aspect would be Color, and the seller\
+ \ could either include URLs to images of the t-shirt (in available colors)\
+ \ through the inventory item group entity, or the seller could also included\
+ \ URLs to images of the t-shirt through the individual inventory item\
+ \ entities of the group.
This container is not initially required\
+ \ when first creating an inventory item group, but the variesBy.specifications\
+ \ container will be required before the first offer of the group is published.
This\
+ \ container is always returned if one or more offers associated with the\
+ \ inventory item group have been published, and is only returned if set\
+ \ for an inventory item group if that group has yet to have any offers\
+ \ published.
Important!Publish offer note:\
+ \ This container and its child fields (as noted below) are required before\
+ \ an offer can be published to create an active listing.
"
+ $ref: "#/components/schemas/VariesBy"
+ videoIds:
+ type: "array"
+ description: "An array of one or more videoId values for the inventory\
+ \ item group. A video ID is a unique identifier that is automatically\
+ \ created by eBay when a seller successfully uploads a video to eBay using\
+ \ the uploadVideo method of the Media API.
For information on supported\
+ \ marketplaces and platforms, as well as other requirements and limitations\
+ \ of video support, please refer to Managing videos.
Note: Only one video per listing is supported."
+ items:
+ type: "string"
+ description: "This type is used by the base request payload of the createOrReplaceInventoryItemGroup\
+ \ call and the base response payload of the getInventoryItemGroup\
+ \ call."
+ InventoryItemListing:
+ type: "object"
+ properties:
+ offerId:
+ type: "string"
+ description: "Upon a successful migration of a listing, eBay auto-generates\
+ \ this unique identifier, and this offer ID value will be used to retrieve\
+ \ and manage the newly-created offer object. This value will only be generated\
+ \ and returned if the eBay listing is migrated successfully."
+ sku:
+ type: "string"
+ description: "This is the seller-defined SKU value associated with the item(s)\
+ \ in a listing. This same SKU value will be used to retrieve and manage\
+ \ the newly-created inventory item object if the listing migration is\
+ \ successful. This SKU value will get returned even if the migration is\
+ \ not successful."
+ description: "This type is used by the inventoryItems container\
+ \ that is returned in the response of the bulkMigrateListing\
+ \ call. Up to five sku/offerId pairs may\
+ \ be returned under the inventoryItems container, dependent\
+ \ on how many eBay listings the seller is attempting to migrate to the inventory\
+ \ model."
+ InventoryItemResponse:
+ type: "object"
+ properties:
+ errors:
+ type: "array"
+ description: "This container will be returned if there were one or more\
+ \ errors associated with the creation or update to the inventory item\
+ \ record."
+ items:
+ $ref: "#/components/schemas/Error"
+ locale:
+ type: "string"
+ description: "This field returns the natural language that was provided\
+ \ in the field values of the request payload (i.e., en_AU, en_GB or de_DE).\
+ \ For implementation help, refer to eBay\
+ \ API documentation"
+ sku:
+ type: "string"
+ description: "The seller-defined Stock-Keeping Unit (SKU) of the inventory\
+ \ item. The seller should have a unique SKU value for every product that\
+ \ they sell."
+ statusCode:
+ type: "integer"
+ description: "The HTTP status code returned in this field indicates the\
+ \ success or failure of creating or updating the inventory item record\
+ \ for the inventory item indicated in the sku field.\
+ \ See the HTTP status codes table to see which each status\
+ \ code indicates."
+ format: "int32"
+ warnings:
+ type: "array"
+ description: "This container will be returned if there were one or more\
+ \ warnings associated with the creation or update to the inventory item\
+ \ record."
+ items:
+ $ref: "#/components/schemas/Error"
+ description: "This type is used by the response of the bulkCreateOrReplaceInventoryItem\
+ \ method to indicate the success or failure of creating and/or updating each\
+ \ inventory item record. The sku value in this type identifies\
+ \ each inventory item record."
+ InventoryItemWithSkuLocale:
+ type: "object"
+ properties:
+ availability:
+ description: "This container is used to specify the quantity of the inventory\
+ \ item that are available for purchase.
Availability data must\
+ \ also be passed if an inventory item is being updated and availability\
+ \ data already exists for that inventory item.
Since an inventory\
+ \ item must have specified quantity before being published in an offer,\
+ \ this container is always returned in the 'Get' calls for SKUs that are\
+ \ part of a published offer. If a SKU is not part of a published offer,\
+ \ this container will only be returned if set for the inventory item. "
+ $ref: "#/components/schemas/Availability"
+ condition:
+ type: "string"
+ description: "This enumeration value indicates the condition of the item.\
+ \ Supported item condition values will vary by eBay site and category.\
+ \ To see which item condition values that a particular eBay category supports,\
+ \ use the getItemConditionPolicies method of the Metadata\
+ \ API. This method returns condition ID values that map to the\
+ \ enumeration values defined in the ConditionEnum type. The Item condition ID and name values topic in the\
+ \ Selling Integration Guide has a table that maps condition\
+ \ ID values to ConditionEnum values. The getItemConditionPolicies\
+ \ call reference page has more information.
A condition\
+ \ value is optional up until the seller is ready to publish an offer with\
+ \ the SKU, at which time it becomes required for most eBay categories.
Important!Publish\
+ \ offer note: This field is required before an offer can be published\
+ \ to create an active listing.
For implementation help,\
+ \ refer to eBay\
+ \ API documentation"
+ conditionDescription:
+ type: "string"
+ description: "This string field is used by the seller to more clearly describe\
+ \ the condition of a used inventory item, or an inventory item whose condition\
+ \ value is not NEW, LIKE_NEW, NEW_OTHER,\
+ \ or NEW_WITH_DEFECTS.
The conditionDescription\
+ \ field is available for all eBay categories. If the conditionDescription\
+ \ field is used with an item in one of the new conditions (mentioned in\
+ \ previous paragraph), eBay will simply ignore this field if included,\
+ \ and eBay will return a warning message to the user.
This field\
+ \ should only be used to further clarify the condition of the used item.\
+ \ It should not be used for branding, promotions, shipping, returns, payment\
+ \ or other information unrelated to the condition of the used item. Make\
+ \ sure that the condition value, condition description,\
+ \ listing description, and the item's pictures do not contradict one another.\
+ \
This field is not always required, but is required if an inventory\
+ \ item is being updated and a condition description already exists for\
+ \ that inventory item.
This field is returned in the getInventoryItem,\
+ \ bulkGetInventoryItem, and getInventoryItems\
+ \ calls if a condition description was provided for a used inventory item.
Max\
+ \ Length: 1000"
+ conditionDescriptors:
+ type: "array"
+ description: "This container is used by the seller to provide additional\
+ \ information about the condition of an item in a structured format. Condition\
+ \ descriptors are name-value attributes that can be either closed set\
+ \ or open text inputs.
For trading card listings in Non-Sport\
+ \ Trading Card Singles (183050), CCG Individual Cards (183454),\
+ \ and Sports Trading Card Singles (261328) categories, sellers\
+ \ must use either LIKE_NEW (2750) or USED_VERY_GOOD\
+ \ (4000) item condition to specify the card as Graded or Ungraded,\
+ \ respectively. Use of either of these conditions requires the seller\
+ \ to use this array to provide one or more applicable Condition Descriptor\
+ \ name-value pairs.
To retrieve all condition descriptor numeric\
+ \ IDs for a category, use the getItemConditionPolicies method of the Metadata\
+ \ API."
+ items:
+ $ref: "#/components/schemas/ConditionDescriptor"
+ locale:
+ type: "string"
+ description: "This request parameter sets the natural language that was\
+ \ provided in the field values of the request payload (i.e., en_AU, en_GB\
+ \ or de_DE). For implementation help, refer to eBay\
+ \ API documentation"
+ packageWeightAndSize:
+ description: "This container is used if the seller is offering one or more\
+ \ calculated shipping options for the inventory item, or if the seller\
+ \ is offering flat-rate shipping but is including a shipping surcharge\
+ \ based on the item's weight. This container is used to specify the dimensions\
+ \ and weight of a shipping package.
Note:\
+ \ Package weight and dimensions are only supported for the following marketplaces:\
+ \ AU, CA, DE, IT, UK, US, and Motors. If this information is provided\
+ \ on other marketplaces, it will be ignored.
This container\
+ \ is not always required, but is required if an inventory item is being\
+ \ updated and shipping package data already exists for that inventory\
+ \ item.
This container is returned in the getInventoryItem,\
+ \ bulkGetInventoryItem, and getInventoryItems\
+ \ calls if package type, package weight, and/or package dimensions are\
+ \ specified for an inventory item.
See the Calculated shipping help page for more information\
+ \ on calculated shipping."
+ $ref: "#/components/schemas/PackageWeightAndSize"
+ product:
+ description: "This container is used to define the product details, such\
+ \ as product title, product description, product identifiers (eBay Product\
+ \ ID, GTIN, or Brand/MPN pair), product aspects/item specifics, and product\
+ \ images. Note that an eBay Product ID (ePID) or a Global Trade Item Number\
+ \ (GTIN) value can be used in an attempt to find a matching product in\
+ \ the eBay Catalog. If a product match is found, the inventory item record\
+ \ will automatically pick up all product details associated with the eBay\
+ \ Catalog product.
Many eBay categories will require at least one\
+ \ product identifier (a GTIN or a Brand/MPN pair). To discover which product\
+ \ identifier(s) that an eBay category might require or support, use the\
+ \ getItemAspectsForCategory method in the Taxonomy\
+ \ API. In the getItemAspectsForCategory response, look\
+ \ for product identifier names (brand, mpn,\
+ \ upc, ean, isbn) in the localizedAspectName\
+ \ fields, and then look for the correspondinng aspectRequired\
+ \ boolean fields as well as the corresponding aspectUsage\
+ \ field, which will indicate if the aspect is required, recommended, or\
+ \ optional. In some cases, a product identifier type may be required,\
+ \ but not known/applicable for a product. If this is the case, the seller\
+ \ must still include the corresponding field in the inventory item record,\
+ \ but pass in a default text string. This text string can vary by site,\
+ \ so the seller should use the GeteBayDetails call of\
+ \ the Trading API to get this string value. In the GeteBayDetails\
+ \ call, the seller should include a DetailName field\
+ \ with its value set to ProductDetails. In the response of\
+ \ the call, the seller can see the default string value in the ProductDetails.ProductIdentifierUnavailableText\
+ \ field. The seller will use this value in one or more of the product\
+ \ identifier fields (ean, isbn, upc,\
+ \ or mpn) if a product ID isn't known or applicable.\
+ \
This container is not initially required, but it is required\
+ \ before an inventory item can be published as an offer, and/or if an\
+ \ inventory item is being updated and product data already exists for\
+ \ that inventory item.
This container is always returned for published\
+ \ offers in the getInventoryItem, bulkGetInventoryItem,\
+ \ and getInventoryItems calls since product data must\
+ \ be defined for published offers, but for unpublished inventory items,\
+ \ this container will only be returned if product details have been defined\
+ \ for the inventory item.
Important!Publish offer note:\
+ \ This container and a few of its child fields (as noted below) are required\
+ \ before an offer can be published to create an active listing.
"
+ $ref: "#/components/schemas/Product"
+ sku:
+ type: "string"
+ description: "This is the seller-defined SKU value of the product that will\
+ \ be listed on the eBay site (specified in the marketplaceId\
+ \ field). Only one offer (in unpublished or published state) may exist\
+ \ for each sku/marketplaceId/format\
+ \ combination. This field is required.
Max Length:\
+ \ 50
"
+ description: "This type is used to define/modify each inventory item record\
+ \ that is being created and/or updated with the bulkCreateOrReplaceInventoryItem\
+ \ method. Up to 25 inventory item records can be created and/or updated with\
+ \ one call."
+ InventoryItemWithSkuLocaleGroupKeys:
+ type: "object"
+ properties:
+ availability:
+ description: "This container shows the quantity of the inventory item that\
+ \ is available for purchase if the item will be shipped to the buyer,\
+ \ and/or the quantity of the inventory item that is available for In-Store\
+ \ Pickup at one or more of the merchant's physical stores."
+ $ref: "#/components/schemas/AvailabilityWithAll"
+ condition:
+ type: "string"
+ description: "This enumeration value indicates the condition of the item.\
+ \ Supported item condition values will vary by eBay site and category.\
+ \
Since the condition of an inventory item must be specified before\
+ \ being published in an offer, this field is always returned in the 'Get'\
+ \ calls for SKUs that are part of a published offer. If a SKU is not part\
+ \ of a published offer, this field will only be returned if set for the\
+ \ inventory item. For implementation help, refer to eBay\
+ \ API documentation"
+ conditionDescription:
+ type: "string"
+ description: "This string field is used by the seller to more clearly describe\
+ \ the condition of used items, or items that are not 'Brand New', 'New\
+ \ with tags', or 'New in box'. The ConditionDescription field is available\
+ \ for all categories. If the ConditionDescription field is used with an\
+ \ item in a new condition (Condition IDs 1000-1499), eBay will simply\
+ \ ignore this field if included, and eBay will return a warning message\
+ \ to the user. This field should only be used to further clarify the condition\
+ \ of the used item. It should not be used for branding, promotions, shipping,\
+ \ returns, payment or other information unrelated to the condition of\
+ \ the item. Make sure that the condition value, condition description,\
+ \ listing description, and the item's pictures do not contradict one another.Max\
+ \ length: 1000."
+ conditionDescriptors:
+ type: "array"
+ description: "This container is used by the seller to provide additional\
+ \ information about the condition of an item in a structured format. Descriptors\
+ \ are name-value attributes that can be either closed set or open text.
For\
+ \ trading card listings in Non-Sport Trading Card Singles (183050),\
+ \ CCG Individual Cards (183454), and Sports Trading Card Singles\
+ \ (261328) categories, sellers must use either LIKE_NEW (2750)\
+ \ or USED_VERY_GOOD (4000) item condition to specify the\
+ \ card as Graded or Ungraded, respectively. Use of either\
+ \ of these conditions requires the seller to use this array to provide\
+ \ one or more applicable Condition Descriptor name-value pairs.
For\
+ \ more information on the numeric IDs and their text equivalents, use\
+ \ the getItemConditionPolicies method of the Metadata\
+ \ API."
+ items:
+ $ref: "#/components/schemas/ConditionDescriptor"
+ inventoryItemGroupKeys:
+ type: "array"
+ description: "This array is returned if the inventory item is associated\
+ \ with any inventory item group(s). The value(s) returned in this array\
+ \ are the unique identifier(s) of the inventory item's variation in a\
+ \ multiple-variation listing. This array is not returned if the inventory\
+ \ item is not associated with any inventory item groups."
+ items:
+ type: "string"
+ locale:
+ type: "string"
+ description: "This field returns the natural language that was provided\
+ \ in the field values of the request payload (i.e., en_AU, en_GB or de_DE).\
+ \ For implementation help, refer to eBay\
+ \ API documentation"
+ packageWeightAndSize:
+ description: "This container is used to specify the dimensions and weight\
+ \ of a shipping package."
+ $ref: "#/components/schemas/PackageWeightAndSize"
+ product:
+ description: "This container is used in a createOrReplaceInventoryItem\
+ \ call to pass in a Global Trade Item Number (GTIN) or a Brand and Manufacturer\
+ \ Part Number (MPN) pair to identify a product to be matched with a product\
+ \ in the eBay catalog. If a match is found in the eBay product catalog,\
+ \ the inventory item is automatically populated with available product\
+ \ details such as a title, a subtitle, a product description, item specifics,\
+ \ and links to stock images for the product."
+ $ref: "#/components/schemas/Product"
+ sku:
+ type: "string"
+ description: "The seller-defined Stock-Keeping Unit (SKU) of the inventory\
+ \ item. The seller should have a unique SKU value for every product that\
+ \ they sell."
+ description: "This type is used to provide details about each retrieved inventory\
+ \ item record."
+ InventoryItemWithSkuLocaleGroupid:
+ type: "object"
+ properties:
+ availability:
+ description: "This container is used to specify the quantity of the inventory\
+ \ item that are available for purchase if the item will be shipped to\
+ \ the buyer, and the quantity of the inventory item that are available\
+ \ for In-Store Pickup at one or more of the merchant's physical stores"
+ $ref: "#/components/schemas/AvailabilityWithAll"
+ condition:
+ type: "string"
+ description: "This enumeration value indicates the condition of the item.\
+ \ Supported item condition values will vary by eBay site and category.\
+ \
Since the condition of an inventory item must be specified before\
+ \ being published in an offer, this field is always returned in the 'Get'\
+ \ calls for SKUs that are part of a published offer. If a SKU is not part\
+ \ of a published offer, this field will only be returned if set for the\
+ \ inventory item. For implementation help, refer to eBay\
+ \ API documentation"
+ conditionDescription:
+ type: "string"
+ description: "This string field is used by the seller to more clearly describe\
+ \ the condition of used items, or items that are not 'Brand New', 'New\
+ \ with tags', or 'New in box'. The ConditionDescription field is available\
+ \ for all categories. If the ConditionDescription field is used with an\
+ \ item in a new condition (Condition IDs 1000-1499), eBay will simply\
+ \ ignore this field if included, and eBay will return a warning message\
+ \ to the user. This field should only be used to further clarify the condition\
+ \ of the used item. It should not be used for branding, promotions, shipping,\
+ \ returns, payment or other information unrelated to the condition of\
+ \ the item. Make sure that the condition value, condition description,\
+ \ listing description, and the item's pictures do not contradict one another.
Max\
+ \ length: 1000"
+ conditionDescriptors:
+ type: "array"
+ description: "This container is used by the seller to provide additional\
+ \ information about the condition of an item in a structured format. Descriptors\
+ \ are name-value attributes that can be either closed set or open text.
For\
+ \ trading card listings in Non-Sport Trading Card Singles (183050),\
+ \ CCG Individual Cards (183454), and Sports Trading Card Singles\
+ \ (261328) categories, sellers must use either LIKE_NEW (2750)\
+ \ or USED_VERY_GOOD (4000) item condition to specify the\
+ \ card as Graded or Ungraded, respectively. Use of either\
+ \ of these conditions requires the seller to use this array to provide\
+ \ one or more applicable Condition Descriptor name-value pairs.
For\
+ \ more information on the numeric IDs and their text equivalents, use\
+ \ the getItemConditionPolicies method of the Metadata\
+ \ API."
+ items:
+ $ref: "#/components/schemas/ConditionDescriptor"
+ groupIds:
+ type: "array"
+ description: "This array is returned if the inventory item is associated\
+ \ with any inventory item group(s). The value(s) returned in this array\
+ \ are the unique identifier(s) of the inventory item group(s). This array\
+ \ is not returned if the inventory item is not associated with any inventory\
+ \ item groups."
+ items:
+ type: "string"
+ inventoryItemGroupKeys:
+ type: "array"
+ description: "This array is returned if the inventory item is associated\
+ \ with any inventory item group(s). The value(s) returned in this array\
+ \ are the unique identifier(s) of the inventory item's variation in a\
+ \ multiple-variation listing. This array is not returned if the inventory\
+ \ item is not associated with any inventory item groups."
+ items:
+ type: "string"
+ locale:
+ type: "string"
+ description: "This field returns the natural language that was provided\
+ \ in the field values of the request payload (i.e., en_AU, en_GB or de_DE).\
+ \ For implementation help, refer to eBay\
+ \ API documentation"
+ packageWeightAndSize:
+ description: "This container is used to specify the dimensions and weight\
+ \ of a shipping package."
+ $ref: "#/components/schemas/PackageWeightAndSize"
+ product:
+ description: "This container is used in a createOrReplaceInventoryItem\
+ \ call to pass in a Global Trade Item Number (GTIN) or a Brand and Manufacturer\
+ \ Part Number (MPN) pair to identify a product to be matched with a product\
+ \ in the eBay catalog. If a match is found in the eBay product catalog,\
+ \ the inventory item is automatically populated with available product\
+ \ details such as a title, a subtitle, a product description, item specifics,\
+ \ and links to stock images for the product."
+ $ref: "#/components/schemas/Product"
+ sku:
+ type: "string"
+ description: "The seller-defined Stock-Keeping Unit (SKU) of the inventory\
+ \ item. The seller should have a unique SKU value for every product that\
+ \ they sell."
+ InventoryItems:
+ type: "object"
+ properties:
+ href:
+ type: "string"
+ description: "This is the URL to the current page of inventory items."
+ inventoryItems:
+ type: "array"
+ description: "This container is an array of one or more inventory items,\
+ \ with detailed information on each inventory item."
+ items:
+ $ref: "#/components/schemas/InventoryItemWithSkuLocaleGroupid"
+ limit:
+ type: "integer"
+ description: "This integer value is the number of inventory items that will\
+ \ be displayed on each results page."
+ format: "int32"
+ next:
+ type: "string"
+ description: "This is the URL to the next page of inventory items. This\
+ \ field will only be returned if there are additional inventory items\
+ \ to view."
+ prev:
+ type: "string"
+ description: "This is the URL to the previous page of inventory items. This\
+ \ field will only be returned if there are previous inventory items to\
+ \ view."
+ size:
+ type: "integer"
+ description: "This integer value indicates the total number of pages of\
+ \ results that are available. This number will depend on the total number\
+ \ of inventory items available for viewing, and on the limit\
+ \ value."
+ format: "int32"
+ total:
+ type: "integer"
+ description: "This integer value is the total number of inventory items\
+ \ that exist for the seller's account. Based on this number and on the\
+ \ limit value, the seller may have to toggle through\
+ \ multiple pages to view all inventory items."
+ format: "int32"
+ description: "This type is used by the base response payload of getInventoryItems\
+ \ call. "
+ InventoryLocation:
+ type: "object"
+ properties:
+ location:
+ description: "This container is used to add any addition physical address\
+ \ and geographical coordinate information for a warehouse, store, or fulfillment\
+ \ center inventory location.
Note:\
+ \ For warehouse and store inventory locations, address fields can be updated\
+ \ any number of times. For fulfilment center locations, address fields\
+ \ cannot be updated. However, if any address fields were omitted during\
+ \ the createInventoryLocation call, they can be added through this\
+ \ method.
Note: When updating\
+ \ a warehouse location to a fulfillment center, sellers can update any\
+ \ of the address fields a single time during the same call used to make\
+ \ this update. After this, they can no longer be updated. "
+ $ref: "#/components/schemas/LocationDetails"
+ locationAdditionalInformation:
+ type: "string"
+ description: "This text field is used by the merchant to provide/update\
+ \ additional information about an inventory location. Whatever text is\
+ \ passed in this field will replace the current text string defined for\
+ \ this field. If the text will not change, the same text should be passed\
+ \ in once again.
Max length: 256"
+ locationInstructions:
+ type: "string"
+ description: "This text field is generally used by the merchant to provide/update\
+ \ special pickup instructions for a store inventory location. Although\
+ \ this field is optional, it is recommended that merchants provide this\
+ \ field to create a pleasant and easy pickup experience for In-Store Pickup\
+ \ and Click and Collect orders. If this field is not included in the call\
+ \ request payload, eBay will use the default pickup instructions contained\
+ \ in the merchant's profile (if available). Whatever text is passed in\
+ \ this field will replace the current text string defined for this field.\
+ \ If the text will not change, the same text should be passed in once\
+ \ again.
Max length: 1000"
+ locationTypes:
+ type: "array"
+ description: "This container is used to update the location type(s) associated\
+ \ with an inventory location."
+ items:
+ type: "string"
+ description: " For implementation help, refer to eBay\
+ \ API documentation"
+ locationWebUrl:
+ type: "string"
+ description: "This text field is used by the merchant to provide/update\
+ \ the Website address (URL) associated with the inventory location. The\
+ \ URL that is passed in this field will replace any other URL that may\
+ \ be defined for this field.
Max length: 512"
+ name:
+ type: "string"
+ description: "This text field is used by the merchant to update the name\
+ \ of the inventory location. This name should be a human-friendly name\
+ \ as it will be in In-Store Pickup and Click and Collect listings. A name\
+ \ is not required for warehouse locations. For store locations, this field\
+ \ is not immediately required, but will be required before an offer enabled\
+ \ with the In-Store Pickup or Click and Collect capability can be published.\
+ \ So, if the seller omitted this field in the createInventoryLocation\
+ \ call, it is required for an updateInventoryLocation\
+ \ call. The name that is passed in this field will replace any other name\
+ \ that may be defined for this field."
+ operatingHours:
+ type: "array"
+ description: "This container is used to provide/update the regular operating\
+ \ hours for a store location during the days of the week. A dayOfWeekEnum\
+ \ field and an intervals container will be needed for\
+ \ each day of the week that the location is open. Note that if operating\
+ \ hours are already set for a location for a specific day of the week,\
+ \ whatever is set through an updateInventoryLocation\
+ \ call will override those existing hours."
+ items:
+ $ref: "#/components/schemas/OperatingHours"
+ phone:
+ type: "string"
+ description: "This text field is used by the merchant to provide/update\
+ \ the phone number for the inventory location. The phone number that is\
+ \ passed in this field will replace any other phone number that may be\
+ \ defined for this field.
Max length: 36"
+ specialHours:
+ type: "array"
+ description: "This container is used to provide/update the special operating\
+ \ hours for a store location on a specific date, such as a holiday. The\
+ \ special hours specified for the specific date will override the normal\
+ \ operating hours for that particular day of the week. If special hours\
+ \ have already been set up for an inventory location, specifying special\
+ \ hours through an updateInventoryLocation call will\
+ \ only add to the list, unless the date(s) used are the same special date(s)\
+ \ already set up, in which case, the special hours set up through the\
+ \ updateInventoryLocation call will override the existing\
+ \ special hours."
+ items:
+ $ref: "#/components/schemas/SpecialHours"
+ timeZoneId:
+ type: "string"
+ description: "This field is used to provide/update the time zone of the\
+ \ inventory location being created. This value should be in Olson format\
+ \ (for example America/Vancouver). For supported values,\
+ \ see Java Supported Zone Ids and Offsets.
Note: If specified, this time zone will be\
+ \ used for all hour related fields. If this field is not specified, the\
+ \ time zone will be calculated from the provided address fields."
+ fulfillmentCenterSpecifications:
+ description: "This container is used to update information about a fulfillment\
+ \ center's shipping specifications, such as the weekly cut-off time schedule\
+ \ for order handling and any cut-off overrides."
+ $ref: "#/components/schemas/FulfillmentCenterSpecifications"
+ description: "This type is used by the updateInventoryLocation\
+ \ call to update operating hours, special hours, phone number, and other minor\
+ \ details of an inventory location."
+ InventoryLocationFull:
+ type: "object"
+ properties:
+ location:
+ description: "This required container is used to set the physical address\
+ \ and geographical coordinates of a warehouse, store, or fulfillment center\
+ \ inventory location. A warehouse location only requires the postal code\
+ \ and country OR city, province/state, and country, and does not require\
+ \ a full street address. However, the seller may still supply a full street\
+ \ address for a warehouse location. A complete address (addressLine1,\
+ \ city, stateOrProvince, postalCode, and country)\
+ \ is required for store and fulfillment center locations.
Note: For fulfillment center locations, the\
+ \ addressLine1, stateOrProvince, country and postalCode\
+ \ fields cannot be changed once they have been set, though they can be\
+ \ added through the updateInventoryLocation method if\
+ \ they were omitted during location creation."
+ $ref: "#/components/schemas/LocationDetails"
+ locationAdditionalInformation:
+ type: "string"
+ description: "This text field is used by the merchant to provide additional\
+ \ information about an inventory location.
Max length:\
+ \ 256"
+ locationInstructions:
+ type: "string"
+ description: "This text field is generally used by the merchant to provide\
+ \ special pickup instructions for a store inventory location. Although\
+ \ this field is optional, it is recommended that merchants provide this\
+ \ field to create a pleasant and easy pickup experience for In-Store Pickup\
+ \ and Click and Collect orders. If this field is not included in the call\
+ \ request payload, eBay will use the default pickup instructions contained\
+ \ in the merchant's profile (if available)."
+ locationTypes:
+ type: "array"
+ description: "This container is used to define the function of the inventory\
+ \ location. Typically, an inventory location will serve as a store, warehouse,\
+ \ or fulfillment center, but in some cases, an inventory location may\
+ \ be more than one type.
For In-Store Pickup inventory, set StoreTypeEnum\
+ \ to STORE.
To utilize the Multi-warehouse program,\
+ \ set StoreTypeEnum to FULFILLMENT_CENTER.
If\
+ \ this container is omitted, the location type of the inventory location\
+ \ will default to WAREHOUSE. See StoreTypeEnum for the supported values.
Default: WAREHOUSE"
+ items:
+ type: "string"
+ description: " For implementation help, refer to eBay\
+ \ API documentation"
+ locationWebUrl:
+ type: "string"
+ description: "This text field is used by the merchant to provide the Website\
+ \ address (URL) associated with the inventory location.
Max\
+ \ length: 512"
+ merchantLocationStatus:
+ type: "string"
+ description: "This field is used to indicate whether the inventory location\
+ \ will be enabled (inventory can be loaded to location) or disabled (inventory\
+ \ can not be loaded to location). If this field is omitted, a successful\
+ \ createInventoryLocation call will automatically enable\
+ \ the location. A merchant may want to create a new location but leave\
+ \ it as disabled if the location is not yet ready for active inventory.\
+ \ Once the location is ready, the merchant can use the enableInventoryLocation\
+ \ call to enable a location that is in a disabled state.
See StatusEnum\
+ \ for the supported values.
Default: ENABLED For implementation\
+ \ help, refer to eBay\
+ \ API documentation"
+ name:
+ type: "string"
+ description: "The seller-defined name of the inventory location. This name\
+ \ should be a human-friendly name as it will be displayed in In-Store\
+ \ Pickup and Click and Collect listings. A name is not required for warehouse\
+ \ locations. For store locations, this field is not immediately required,\
+ \ but will be required before an offer enabled with the In-Store Pickup\
+ \ or Click and Collect capability can be published. So, if the seller\
+ \ omits this field in a createInventoryLocation call,\
+ \ it becomes required for an updateInventoryLocation\
+ \ call.
Max length: 1000"
+ operatingHours:
+ type: "array"
+ description: "This container is used to express the regular operating hours\
+ \ for a store location during each day of the week. A dayOfWeekEnum\
+ \ field and an intervals container will be needed for\
+ \ each day of the week that the store location is open.
Although\
+ \ not technically required, this container is highly recommended to be\
+ \ used to specify operating hours for a store location."
+ items:
+ $ref: "#/components/schemas/OperatingHours"
+ phone:
+ type: "string"
+ description: "This field is used to specify the phone number for an inventory\
+ \ location.
Max length: 36"
+ specialHours:
+ type: "array"
+ description: "This container is used to express the special operating hours\
+ \ for a store inventory location on a specific date, such as a holiday.\
+ \ The special hours specified for the specific date will override the\
+ \ normal operating hours for that particular day of the week."
+ items:
+ $ref: "#/components/schemas/SpecialHours"
+ timeZoneId:
+ type: "string"
+ description: "This field specifies the time zone of the inventory location\
+ \ being created. This value should be in Olson format (for example America/Vancouver).\
+ \ For supported values, see Java Supported Zone Ids and Offsets.
Note: If specified, this time zone will be\
+ \ used for all hour related fields. If this field is not specified for\
+ \ a fulfillment center location, the time zone will be calculated from\
+ \ the provided address fields."
+ fulfillmentCenterSpecifications:
+ description: "This container is used to specify information about a fulfillment\
+ \ center's shipping specifications, such as the weekly cut-off time schedule\
+ \ for order handling and any cut-off time overrides.
Note: This container is required if one of the locationTypes\
+ \ of the inventory location is FULFILLMENT_CENTER, and is\
+ \ not applicable to other location types."
+ $ref: "#/components/schemas/FulfillmentCenterSpecifications"
+ description: "This type is used by the createInventoryLocation\
+ \ call to provide details on the inventory location, including the location's\
+ \ name, physical address, operating hours, special hours, phone number and\
+ \ other details of an inventory location."
+ InventoryLocationResponse:
+ type: "object"
+ properties:
+ location:
+ description: "This container provides location details of an inventory location.\
+ \ The address container will always be returned, but\
+ \ it will not always have a complete street address. Except in the case\
+ \ of a store or fulfillment center location, a full address is not a requirement\
+ \ when setting up an inventory location. The geoCoordinates\
+ \ container will only be returned if the merchant provided geographical\
+ \ coordinates. The locationId field is always returned,\
+ \ but this value is only used internally by eBay."
+ $ref: "#/components/schemas/Location"
+ locationAdditionalInformation:
+ type: "string"
+ description: "This text field provides additional information about an inventory\
+ \ location. This field is returned if it is set for the location."
+ locationInstructions:
+ type: "string"
+ description: "This text field is used by the merchant to provide special\
+ \ pickup instructions for the store location. This field can help create\
+ \ a pleasant and easy pickup experience for In-Store Pickup and Click\
+ \ and Collect orders. If this field was not set up through a createInventoryLocation\
+ \ or a updateInventoryLocation call, eBay will use the\
+ \ default pickup instructions contained in the merchant's profile."
+ locationTypes:
+ type: "array"
+ description: "This container defines the function of the inventory location.\
+ \ Typically, a location will serve as a store, warehouse, or fulfillment\
+ \ center, but in some cases, an inventory location may be more than one\
+ \ type."
+ items:
+ type: "string"
+ description: " For implementation help, refer to eBay\
+ \ API documentation"
+ locationWebUrl:
+ type: "string"
+ description: "This text field shows the Website address (URL) associated\
+ \ with the inventory location. This field is returned if defined for the\
+ \ location."
+ merchantLocationKey:
+ type: "string"
+ description: "The unique identifier of the inventory location. This identifier\
+ \ is set up by the merchant when the location is first created with the\
+ \ createInventoryLocation call."
+ merchantLocationStatus:
+ type: "string"
+ description: "This field indicates whether the inventory location is enabled\
+ \ (inventory can be loaded to location) or disabled (inventory can not\
+ \ be loaded to location). The merchant can use the enableInventoryLocation\
+ \ call to enable a location in disabled status, or the disableInventoryLocation\
+ \ call to disable a location in enabled status. For implementation help,\
+ \ refer to eBay\
+ \ API documentation"
+ name:
+ type: "string"
+ description: "The name of the inventory location. This name should be a\
+ \ human-friendly name as it will be displayed in In-Store Pickup and Click\
+ \ and Collect listings. For store inventory locations, this field is not\
+ \ required for the createInventoryLocation call, but\
+ \ a store inventory location must have a defined name\
+ \ value before an In-Store Pickup and Click and Collect enabled offer\
+ \ is published. So, if the seller omits this field in the createInventoryLocation\
+ \ call, it will have to be added later through a updateInventoryLocation\
+ \ call."
+ operatingHours:
+ type: "array"
+ description: "This container shows the regular operating hours for a store\
+ \ location during the days of the week. A dayOfWeekEnum\
+ \ field and an intervals container is shown for each\
+ \ day of the week that the location is open."
+ items:
+ $ref: "#/components/schemas/OperatingHours"
+ phone:
+ type: "string"
+ description: "The phone number for an inventory location. This field will\
+ \ typically only be returned for store locations."
+ specialHours:
+ type: "array"
+ description: "This container shows the special operating hours for a store\
+ \ or fulfillment center location on a specific date or dates."
+ items:
+ $ref: "#/components/schemas/SpecialHours"
+ timeZoneId:
+ type: "string"
+ description: "This field specifies the time zone of the inventory location\
+ \ being created. This value should be in Olson format (for example America/Vancouver).\
+ \ For supported values, see Java Supported Zone Ids and Offsets."
+ fulfillmentCenterSpecifications:
+ description: "This container provides information about a fulfillment center's\
+ \ shipping specifications, such as the weekly cut-off time schedule for\
+ \ order handling and any cut-off time overrides.
Note: This field is only returned for fulfillment center\
+ \ locations."
+ $ref: "#/components/schemas/FulfillmentCenterSpecifications"
+ description: "This type is used by the base response of the getInventoryLocation\
+ \ and getInventoryLocations calls. These responses provide\
+ \ details about inventory location(s) defined for the merchant's account."
+ ListingDetails:
+ type: "object"
+ properties:
+ listingId:
+ type: "string"
+ description: "The unique identifier of the eBay listing that is associated\
+ \ with the published offer. "
+ listingOnHold:
+ type: "boolean"
+ description: "Indicates if a listing is on hold due to an eBay policy violation.
If\
+ \ a listing is put on hold, users are unable to view the listing details,\
+ \ the listing is hidden from search, and all attempted purchases, offers,\
+ \ and bids for the listing are blocked. eBay, however, gives sellers the\
+ \ opportunity to address violations and get listings fully reinstated.\
+ \ A listing will be ended if a seller does not address a violation, or\
+ \ if the violation can not be rectified.
If a listing is fixable,\
+ \ the seller should be able to view the listing details and this boolean\
+ \ will be returned as true.
Once a listing is fixed, this boolean\
+ \ will no longer be returned.
"
+ listingStatus:
+ type: "string"
+ description: "The enumeration value returned in this field indicates the\
+ \ status of the listing that is associated with the published offer. For\
+ \ implementation help, refer to eBay\
+ \ API documentation"
+ soldQuantity:
+ type: "integer"
+ description: "This integer value indicates the quantity of the product that\
+ \ has been sold for the published offer."
+ format: "int32"
+ description: "This type is used by the listing container in\
+ \ the getOffer and getOffers calls to provide\
+ \ the eBay listing ID, the listing status, and quantity sold for the offer.\
+ \ The listing container is only returned for published offers,\
+ \ and is not returned for unpublished offers."
+ ListingPolicies:
+ type: "object"
+ properties:
+ bestOfferTerms:
+ description: "This container is used if the seller would like to support\
+ \ the Best Offer feature on their listing. To enable the Best Offer feature,\
+ \ the seller will have to set the bestOfferEnabled field\
+ \ to true, and the seller also has the option of setting\
+ \ 'auto-accept' and 'auto-decline' price thresholds.
Note: Best Offer is unavailable for multi-variation\
+ \ listings.
This container is only returned if Best Offer is\
+ \ enabled on listing."
+ $ref: "#/components/schemas/BestOffer"
+ eBayPlusIfEligible:
+ type: "boolean"
+ description: "This field is included in an offer and set to true\
+ \ if a Top-Rated seller is opted in to the eBay Plus program. With the\
+ \ eBay Plus program, qualified sellers must commit to next-day delivery\
+ \ of the item, and the buyers must have an eBay Plus subscription to be\
+ \ eligible to receive the benefits of this program, which are free, next-day\
+ \ delivery, as well as free returns.
Note: Currently, this program is only available on the Germany\
+ \ and Australian sites.
This field will be returned in the getOffer and getOffers methods if set for the offer."
+ fulfillmentPolicyId:
+ type: "string"
+ description: "This unique identifier indicates the fulfillment business\
+ \ policy that will be used once an offer is published and converted to\
+ \ an eBay listing. This fulfillment business policy will set all fulfillment-related\
+ \ settings for the eBay listing.
Business policies are not immediately\
+ \ required for offers, but are required before an offer can be published.\
+ \ The seller should review the fulfillment business policy before assigning\
+ \ it to the offer to make sure it is compatible with the inventory item\
+ \ and the offer settings. The seller may also want to review the shipping\
+ \ service costs in the fulfillment policy, and that seller might decide\
+ \ to override the shipping costs for one or more shipping service options\
+ \ by using the shippingCostOverrides container.
Business\
+ \ policies can be created and managed in My eBay or with the Account API.\
+ \ To get a list of all return policies associated with a seller's account\
+ \ on a specific eBay Marketplace, use the Account API's getFulfillmentPolicies method. There are also\
+ \ calls in the Account API to retrieve a fulfillment\
+ \ policy by policy ID or policy name.
This field will be returned\
+ \ in the getOffer and getOffers methods if set for the offer.
Important!Publish\
+ \ offer note: This field is required before an offer can be published\
+ \ to create an active listing.
"
+ paymentPolicyId:
+ type: "string"
+ description: "This unique identifier indicates the payment business policy\
+ \ that will be used once an offer is published and converted to an eBay\
+ \ listing. This payment business policy will set all payment-related settings\
+ \ for the eBay listing.
Business policies are not immediately required\
+ \ for offers, but are required before an offer can be published. The seller\
+ \ should review the payment business policy to make sure that it is compatible\
+ \ with the marketplace and listing category before assigning it to the\
+ \ offer.
Business policies can be created and managed in My eBay\
+ \ or with the Account API. To get a list of all payment policies associated\
+ \ with a seller's account on a specific eBay Marketplace, use the Account\
+ \ API's getPaymentPolicies method. There are also calls\
+ \ in the Account API to retrieve a payment policy by\
+ \ policy ID or policy name.
This field will be returned in the\
+ \ getOffer and getOffers methods if set for the offer.
Important!Publish\
+ \ offer note: This field is required before an offer can be published\
+ \ to create an active listing.
"
+ productCompliancePolicyIds:
+ type: "array"
+ description: "This field contains the array of unique identifiers indicating\
+ \ the seller-created global product compliance policies that will\
+ \ be used once an offer is published and converted to a listing.
Product\
+ \ compliance policies provide buyers with important information and disclosures\
+ \ about products. For example, if you sell batteries and specific disclosures\
+ \ are required to be shared with all potential buyers, your global product\
+ \ compliance policy could contain the required disclosures.
A maximum\
+ \ of six (6) global product compliance policies may apply to each offer.Note: For countries that support country-specific\
+ \ policies, use regionalProductCompliancePolicies to apply them to an offer."
+ items:
+ type: "string"
+ regionalProductCompliancePolicies:
+ description: "A comma-delimited list of unique identifiers indicating the\
+ \ seller-created country-specific product compliance policies that\
+ \ that will be used once an offer is published and converted to a listing.
Product\
+ \ compliance policies provide buyers with important information and disclosures\
+ \ about products. For example, if you sell batteries in a country requiring\
+ \ disclosures that apply only to that country, a country-specific\
+ \ product compliance policy could contain this information.
Each\
+ \ offer may include up to six (6) product compliance policies for each\
+ \ of the following countries:- United Kingdom [GB]
- Germany\
+ \ [DE]
- France [FR]
- Italy [IT]
- Spain [ES]
For\
+ \ example, if a seller offers products in the UK, Germany, and Italy,\
+ \ each of which requires custom product compliance information, up to\
+ \ 18 policies (i.e., 6 policies x 3 countries,) may be included with each\
+ \ offer.Note: Product compliance policies\
+ \ that apply to all countries to which a seller ships are specified\
+ \ using productCompliancePolicyIds."
+ $ref: "#/components/schemas/RegionalProductCompliancePolicies"
+ regionalTakeBackPolicies:
+ description: "The list of unique identifiers indicating the seller-created\
+ \ country-specific take-back policies that will be used once an\
+ \ offer is published and converted to a listing. The law in some countries\
+ \ may require sellers to take back a used product when the buyer buys\
+ \ a new product.
Each offer may include one (1) country-specific\
+ \ take-back policy for each of the following countries:- United\
+ \ Kingdom [GB]
- Germany [DE]
- France [FR]
- Italy\
+ \ [IT]
- Spain [ES]
Note:\
+ \ Take-back policies that apply to all countries to which a seller\
+ \ ships are specified using takeBackPolicyId."
+ $ref: "#/components/schemas/RegionalTakeBackPolicies"
+ returnPolicyId:
+ type: "string"
+ description: "This unique identifier indicates the return business policy\
+ \ that will be used once an offer is published and converted to an eBay\
+ \ listing. This return business policy will set all return policy settings\
+ \ for the eBay listing.
Note:\
+ \ As a part of Digital Services Act (DSA) requirements, as of April 3,\
+ \ 2023, buyers in the EU must be allowed to return an item within 14 days\
+ \ or more, unless the item is exempt. Where applicable, sellers should\
+ \ update their return policies to reflect this requirement of accepting\
+ \ returns from EU buyers.
Business policies are not immediately\
+ \ required for offers, but are required before an offer can be published.\
+ \ The seller should review the return business policy before assigning\
+ \ it to the offer to make sure it is compatible with the inventory item\
+ \ and the offer settings.
Business policies can be created and\
+ \ managed in My eBay or with the Account API. To get a list of all return policies\
+ \ associated with a seller's account on a specific eBay Marketplace, use\
+ \ the Account API's getReturnPolicies call. There are also calls in\
+ \ the Account API to retrieve a return policy by policy\
+ \ ID or policy name.
This field will be returned in the getOffer and getOffers methods if set for the offer.
Important!Publish\
+ \ offer note: This field is required before an offer can be published\
+ \ to create an active listing.
"
+ shippingCostOverrides:
+ type: "array"
+ description: "This container is used if the seller wishes to override the\
+ \ shipping costs or surcharge for one or more domestic or international\
+ \ shipping service options defined in the fulfillment listing policy.\
+ \ To override the costs of a specific domestic or international shipping\
+ \ service option, the seller must know the priority/order of that shipping\
+ \ service in the fulfillment listing policy. The name of a shipping service\
+ \ option can be found in the shippingOptions.shippingServices.shippingServiceCode\
+ \ field of the fulfillment policy, and the priority/order of that shipping\
+ \ service option is found in the shippingOptions.shippingServices.sortOrderId\
+ \ field. Both of these values can be retrieved by searching for that fulfillment\
+ \ policy with the getFulfillmentPolicies or getFulfillmentPolicyByName\
+ \ calls of the Account API. The shippingCostOverrides.priority\
+ \ value should match the shippingOptions.shippingServices.sortOrderId\
+ \ in order to override the shipping costs for that shipping service option.\
+ \ The seller must also ensure that the shippingServiceType\
+ \ value is set to DOMESTIC to override a domestic shipping\
+ \ service option, or to INTERNATIONAL to override an international\
+ \ shipping service option.
A separate ShippingCostOverrides\
+ \ node is needed for each shipping service option whose costs are being\
+ \ overridden. All defined fields of the shippingCostOverrides\
+ \ container should be included, even if the shipping costs and surcharge\
+ \ values are not changing.
The shippingCostOverrides\
+ \ container is returned in the getOffer and getOffers calls if one or more shipping cost overrides\
+ \ are being applied to the fulfillment policy."
+ items:
+ $ref: "#/components/schemas/ShippingCostOverride"
+ takeBackPolicyId:
+ type: "string"
+ description: "This unique identifier indicates the seller-created global\
+ \ take-back policy that will be used once an offer is published and converted\
+ \ to a listing.
One (1) global take-back policy may be specified\
+ \ per offer.
Note: For countries\
+ \ that support country-specific policies, use regionalTakeBackPolicies to apply them to an offer."
+ description: "This type is used to identify business policies including payment,\
+ \ return, and fulfillment policies, as well as to identify custom policies.\
+ \ These policies are, or will be, associated with the listing. Every published\
+ \ offer must have a payment, return, and fulfillment business policy associated\
+ \ with it. Additionally, depending on the country/countries in which sellers\
+ \ are offering products and/or services to consumers (e.g., residents of the\
+ \ European Union,) specifying additional polices may be required.
This\
+ \ type is also used to override the shipping costs of one or more shipping\
+ \ service options that are associated with the fulfillment policy, to enable\
+ \ eBay Plus eligibility for a listing, or to enable the Best Offer feature\
+ \ on the listing."
+ Location:
+ type: "object"
+ properties:
+ address:
+ description: "The address container is always returned\
+ \ in getInventoryLocation/getInventoryLocations\
+ \ calls. Except in the case of a store or fulfillment center location,\
+ \ a full address is not a requirement when setting up an inventory location."
+ $ref: "#/components/schemas/Address"
+ geoCoordinates:
+ description: "This container displays the Global Positioning System (GPS)\
+ \ latitude and longitude coordinates for the inventory location.
This\
+ \ container is only returned if the geo-coordinates are set for an inventory\
+ \ location."
+ $ref: "#/components/schemas/GeoCoordinates"
+ locationId:
+ type: "string"
+ description: "A unique eBay-assigned ID for the location.
Note: This field should not be\
+ \ confused with the seller-defined merchantLocationKey value. It\
+ \ is the merchantLocationKey value which is used to identify an\
+ \ inventory location when working with inventory location API calls. The\
+ \ locationId value is only used internally by eBay."
+ description: "A complex type that is used to provide the physical address of\
+ \ a location, and it geo-coordinates."
+ LocationAvailabilityDetails:
+ type: "object"
+ properties:
+ merchantLocationKey:
+ type: "string"
+ description: "The unique identifier of a seller’s fulfillment center location\
+ \ where inventory is available for the item or item variation.
Note: When creating a location mapping using\
+ \ the createOrReplaceSkuLocationMapping method, the value entered\
+ \ in this field must be associated with a location with the FULFILLMENT_CENTER\
+ \ location type, or an error will occur. Sellers can check the locationTypes array in the response of the getInventoryLocations method to see if their location\
+ \ has a value of FULFILLMENT_CENTER."
+ description: "This type provides the unique identifier of an inventory location\
+ \ that is associated with a SKU within a listing."
+ LocationDetails:
+ type: "object"
+ properties:
+ address:
+ description: "This required container sets the physical address of an inventory\
+ \ location. Except in the case store or fulfillment center location, a\
+ \ full address is not a requirement when setting up a location. For warehouse\
+ \ locations, the fields required in this container are either of the following\
+ \ sets:- city, stateOrProvince, and country
- postalCode\
+ \ and country
"
+ $ref: "#/components/schemas/Address"
+ geoCoordinates:
+ description: "This container is used to set the Global Positioning System\
+ \ (GPS) latitude and longitude coordinates for the inventory location.
Geographical\
+ \ coordinates are required for the location of In-Store Pickup inventory. "
+ $ref: "#/components/schemas/GeoCoordinates"
+ description: "This type is used by the createInventoryLocation call to\
+ \ provide an full or partial address of an inventory location."
+ LocationMapping:
+ type: "object"
+ properties:
+ locations:
+ type: "array"
+ description: "This array represents a collection of fulfillment center locations\
+ \ mapped to a SKU.
Note: Only\
+ \ the first 50 locations mapped to a SKU will be considered when calculating\
+ \ estimated delivery dates. Sellers can set up more than 50 locations\
+ \ using this method, but only the first 50 locations will be considered\
+ \ for calculating the estimates."
+ items:
+ $ref: "#/components/schemas/LocationAvailabilityDetails"
+ description: "This type provides an array of locations that are associated with\
+ \ a SKU within a listing."
+ LocationResponse:
+ type: "object"
+ properties:
+ href:
+ type: "string"
+ description: "The URI of the current page of results from the result set."
+ limit:
+ type: "integer"
+ description: "The number of items returned on a single page from the result\
+ \ set."
+ format: "int32"
+ next:
+ type: "string"
+ description: "The URI for the following page of results. This value is returned\
+ \ only if there is an additional page of results to display from the result\
+ \ set.
Max length: 2048"
+ offset:
+ type: "integer"
+ description: "The number of results skipped in the result set before listing\
+ \ the first returned result. This value is set in the request with the\
+ \ offset query parameter. Note:\
+ \ The items in a paginated result set use a zero-based list where\
+ \ the first item in the list has an offset of 0.
"
+ format: "int32"
+ prev:
+ type: "string"
+ description: "The URI for the preceding page of results. This value is returned\
+ \ only if there is a previous page of results to display from the result\
+ \ set.
Max length: 2048"
+ total:
+ type: "integer"
+ description: "The total number of items retrieved in the result set.
If\
+ \ no items are found, this field is returned with a value of 0."
+ format: "int32"
+ locations:
+ type: "array"
+ description: "An array of one or more of the merchant's inventory locations."
+ items:
+ $ref: "#/components/schemas/InventoryLocationResponse"
+ description: "This type is used by the base response payload for the getInventoryLocations\
+ \ call."
+ Manufacturer:
+ type: "object"
+ properties:
+ addressLine1:
+ type: "string"
+ description: "The first line of the product manufacturer's street address.
Max\
+ \ length: 180 characters"
+ addressLine2:
+ type: "string"
+ description: "The second line of the product manufacturer's street address.\
+ \ This field is not always used, but can be used for secondary address\
+ \ information such as 'Suite Number' or 'Apt Number'.
Max length:\
+ \ 180 characters"
+ city:
+ type: "string"
+ description: "The city of the product manufacturer's street address.
Max\
+ \ length: 64 characters"
+ companyName:
+ type: "string"
+ description: "The company name of the product manufacturer.
Max\
+ \ length: 100 characters"
+ contactUrl:
+ type: "string"
+ description: "The contact URL of the product manufacturer.
Max\
+ \ length: 250 characters"
+ country:
+ type: "string"
+ description: "This defines the list of valid country codes, adapted from\
+ \ http://www.iso.org/iso/country_codes, ISO 3166-1 country code. List\
+ \ elements take the following form to identify a two-letter code with\
+ \ a short name in English, a three-digit code, and a three-letter code:\
+ \ For example, the entry for Japan includes Japan, 392, JPN. Short codes\
+ \ provide uniform recognition, avoiding language-dependent country names.\
+ \ The number code is helpful where Latin script may be problematic. Not\
+ \ all listed codes are universally recognized as countries, for example:\
+ \ code AQ is Antarctica, 010, ATA For implementation help, refer to eBay\
+ \ API documentation"
+ email:
+ type: "string"
+ description: "The product manufacturer's business email address.
Max\
+ \ length: 180 characters"
+ phone:
+ type: "string"
+ description: "The product manufacturer's business phone number.
Max\
+ \ length: 64 characters"
+ postalCode:
+ type: "string"
+ description: "The postal code of the product manufacturer's street address.
Max\
+ \ length: 9 characters"
+ stateOrProvince:
+ type: "string"
+ description: "The state or province of the product manufacturer's street\
+ \ address.
Max length: 64 characters"
+ description: "This type provides name and contact information about the manufacturer\
+ \ of the item."
+ MigrateListing:
+ type: "object"
+ properties:
+ listingId:
+ type: "string"
+ description: "The unique identifier of the eBay listing to migrate to the\
+ \ new Inventory model. In the Trading API, this field is known as the\
+ \ ItemID.
Up to five unique eBay listings may\
+ \ be specified here in separate listingId fields. The\
+ \ seller should make sure that each of these listings meet the requirements\
+ \ that are stated at the top of this Call Reference page."
+ description: "This type is used to specify one to five eBay listings that will\
+ \ be migrated to the new Inventory model."
+ MigrateListingResponse:
+ type: "object"
+ properties:
+ errors:
+ type: "array"
+ description: "If one or more errors occur with the attempt to migrate the\
+ \ listing, this container will be returned with detailed information on\
+ \ each error."
+ items:
+ $ref: "#/components/schemas/Error"
+ inventoryItemGroupKey:
+ type: "string"
+ description: "This field will only be returned for a multiple-variation\
+ \ listing that the seller attempted to migrate. Its value is auto-generated\
+ \ by eBay. For a multiple-variation listing that is successfully migrated\
+ \ to the new Inventory model, eBay automatically creates an inventory\
+ \ item group object for the listing, and the seller will be able to retrieve\
+ \ and manage that new inventory item group object by using the value in\
+ \ this field."
+ inventoryItems:
+ type: "array"
+ description: "This container exists of an array of SKU values and offer\
+ \ IDs. For single-variation listings, this will only be one SKU value\
+ \ and one offer ID (if listing was successfully migrated), but multiple\
+ \ SKU values and offer IDs will be returned for multiple-variation listings."
+ items:
+ $ref: "#/components/schemas/InventoryItemListing"
+ listingId:
+ type: "string"
+ description: "The unique identifier of the eBay listing that the seller\
+ \ attempted to migrate."
+ marketplaceId:
+ type: "string"
+ description: "This is the unique identifier of the eBay Marketplace where\
+ \ the listing resides. The value fo the eBay US site will be EBAY_US.\
+ \ For implementation help, refer to eBay\
+ \ API documentation"
+ statusCode:
+ type: "integer"
+ description: "This field is returned for each listing that the seller attempted\
+ \ to migrate. See the HTTP status codes table to see\
+ \ which each status code indicates."
+ format: "int32"
+ warnings:
+ type: "array"
+ description: "If one or more warnings occur with the attempt to migrate\
+ \ the listing, this container will be returned with detailed information\
+ \ on each warning. It is possible that a listing can be successfully migrated\
+ \ even if a warning occurs."
+ items:
+ $ref: "#/components/schemas/Error"
+ description: "This type is used to display the results of each listing that\
+ \ the seller attempted to migrate."
+ NameValueList:
+ type: "object"
+ properties:
+ name:
+ type: "string"
+ description: "This string value identifies the motor vehicle aspect, such\
+ \ as 'make', 'model', 'year', 'trim', and 'engine'. Typically, the make,\
+ \ model, and year of the motor vehicle are always required, with the trim\
+ \ and engine being necessary sometimes, but it will be dependent on the\
+ \ part or accessory, and on the vehicle class.
The getCompatibilityProperties method of the Taxonomy\
+ \ API can be used to retrieve applicable vehicle aspect names for a specified\
+ \ category."
+ value:
+ type: "string"
+ description: "This string value identifies the motor vehicle aspect specified\
+ \ in the corresponding name field. For example, if the\
+ \ name field is 'make', this field may be 'Toyota', or\
+ \ if the name field is 'model', this field may be 'Camry'.
The\
+ \ getCompatibilityPropertyValues method of the Taxonomy\
+ \ API can be used to retrieve possible values for vehicle aspect names."
+ description: "This type is used by the compatibilityProperties\
+ \ container to identify a motor vehicle using name/value pairs."
+ OfferKeyWithId:
+ type: "object"
+ properties:
+ offerId:
+ type: "string"
+ description: "The unique identifier of an unpublished offer for which expected\
+ \ listing fees will be retrieved. One to 250 offerId\
+ \ values can be passed in to the offers container for\
+ \ one getListingFees call.
Use the getOffers\
+ \ method to retrieve offer IDs.
Note:\
+ \ Errors will occur if offerId values representing published\
+ \ offers are passed in."
+ description: "This type is used by the getListingFees call\
+ \ to indicate the unpublished offer(s) for which expected listing fees will\
+ \ be retrieved. The user passes in one or more offerId values\
+ \ (a maximum of 250). See the Standard selling fees help page for more information\
+ \ on listing fees."
+ OfferKeysWithId:
+ type: "object"
+ properties:
+ offers:
+ type: "array"
+ description: "This container is used to identify one or more (up to 250)\
+ \ unpublished offers for which expected listing fees will be retrieved.\
+ \ The user passes one or more offerId values (maximum\
+ \ of 250) in to this container to identify the unpublished offers in which\
+ \ to retrieve expected listing fees. This call is only applicable for\
+ \ offers in the unpublished state.
The call response gives aggregate\
+ \ fee amounts per eBay marketplace, and does not give fee information\
+ \ at the individual offer level."
+ items:
+ $ref: "#/components/schemas/OfferKeyWithId"
+ description: "This type is used by the base request payload of the getListingFees\
+ \ call."
+ OfferPriceQuantity:
+ type: "object"
+ properties:
+ availableQuantity:
+ type: "integer"
+ description: "This field is used if the seller wants to modify the current\
+ \ quantity of the inventory item that will be available for purchase in\
+ \ the offer (identified by the corresponding offerId\
+ \ value).
This value represents the quantity of the item that is\
+ \ available in the marketplace specified within the offer, not the total\
+ \ quantity available. Because of this, this value should not exceed the\
+ \ value specified in the quantity field of the shipToLocationAvailability container\
+ \ (the total available quantity of the item across all marketplaces).
Note: To ensure that the available\
+ \ quantity allocated to a specific marketplace doesn't exceed the total\
+ \ available stock, the quantity specified on a listing will be the minimum\
+ \ value between this field and the quantity field.
Either the availableQuantity\
+ \ field or the price container is required, but not necessarily\
+ \ both."
+ format: "int32"
+ offerId:
+ type: "string"
+ description: "This field is the unique identifier of the offer. If an offers\
+ \ container is used to update one or more offers associated to a specific\
+ \ inventory item, the offerId value is required in order\
+ \ to identify the offer to update with a modified price and/or quantity.
The\
+ \ seller can use the getOffers method (passing in the correct SKU\
+ \ value as a query parameter) to retrieve offerId values\
+ \ for offers associated with the SKU."
+ price:
+ description: "This container is used if the seller wants to modify the current\
+ \ price of the inventory item. The dollar value set here will be the new\
+ \ price of the inventory item in the offer (identified by the corresponding\
+ \ offerId value). Either the availableQuantity\
+ \ field or the price container is required, but not necessarily\
+ \ both."
+ $ref: "#/components/schemas/Amount"
+ description: "This type is used by the offers container in\
+ \ a Bulk Update Price and Quantity call to update the current\
+ \ price and/or quantity of one or more offers associated with a specific inventory\
+ \ item."
+ OfferResponse:
+ type: "object"
+ properties:
+ offerId:
+ type: "string"
+ description: "The unique identifier of the offer that was just created with\
+ \ a createOffer call. It is not returned if the createOffer\
+ \ call fails to create an offer. This identifier will be needed for many\
+ \ offer-related calls. Note:\
+ \ The offerId value is only returned with a successful\
+ \ createOffer call. This field will not be returned in\
+ \ the updateOffer response.
"
+ warnings:
+ type: "array"
+ description: "This container will contain an array of errors and/or warnings\
+ \ when a call is made, and errors and/or warnings occur."
+ items:
+ $ref: "#/components/schemas/Error"
+ description: "This type is used by the response payload of the createOffer\
+ \ and updateOffer calls. The offerId field\
+ \ contains the unique identifier for the offer if the offer is successfully\
+ \ created by the createOffer call. The warnings\
+ \ field contains any errors and/or warnings that may have been triggered by\
+ \ the call. Note: The offerId\
+ \ value is only returned with a successful createOffer call.\
+ \ This field will not be returned in the updateOffer response.
"
+ OfferResponseWithListingId:
+ type: "object"
+ properties:
+ errors:
+ type: "array"
+ description: "This container will be returned if there were one or more\
+ \ errors associated with publishing the offer."
+ items:
+ $ref: "#/components/schemas/Error"
+ listingId:
+ type: "string"
+ description: "The unique identifier of the newly-created eBay listing. This\
+ \ field is only returned if the seller successfully published the offer\
+ \ and created the new eBay listing."
+ offerId:
+ type: "string"
+ description: "The unique identifier of the offer that the seller published\
+ \ (or attempted to publish)."
+ statusCode:
+ type: "integer"
+ description: "The HTTP status code returned in this field indicates the\
+ \ success or failure of publishing the offer specified in the offerId\
+ \ field. See the HTTP status codes table to see which\
+ \ each status code indicates."
+ format: "int32"
+ warnings:
+ type: "array"
+ description: "This container will be returned if there were one or more\
+ \ warnings associated with publishing the offer."
+ items:
+ $ref: "#/components/schemas/Error"
+ description: "This type is used to indicate the status of each offer that the\
+ \ user attempted to publish. If an offer is successfully published, an eBay\
+ \ listing ID (also known as an Item ID) is returned. If there is an issue\
+ \ publishing the offer and creating the new eBay listing, the information\
+ \ about why the listing failed should be returned in the errors\
+ \ and/or warnings containers."
+ OfferSkuResponse:
+ type: "object"
+ properties:
+ errors:
+ type: "array"
+ description: "This container will be returned at the offer level, and will\
+ \ contain one or more errors if any occurred with the attempted creation\
+ \ of the corresponding offer."
+ items:
+ $ref: "#/components/schemas/Error"
+ format:
+ type: "string"
+ description: "This enumeration value indicates the listing format of the\
+ \ offer. For implementation help, refer to eBay\
+ \ API documentation"
+ marketplaceId:
+ type: "string"
+ description: "This enumeration value is the unique identifier of the eBay\
+ \ marketplace for which the offer will be made available. This enumeration\
+ \ value should be the same for all offers since the bulkCreateOffer\
+ \ method can only be used to create offers for one eBay marketplace at\
+ \ a time. For implementation help, refer to eBay\
+ \ API documentation"
+ offerId:
+ type: "string"
+ description: "The unique identifier of the newly-created offer. This identifier\
+ \ should be automatically created by eBay if the creation of the offer\
+ \ was successful. It is not returned if the creation of the offer was\
+ \ not successful. In which case, the user may want to scan the corresponding\
+ \ errors and/or warnings container to\
+ \ see what the issue may be."
+ sku:
+ type: "string"
+ description: "The seller-defined Stock-Keeping Unit (SKU) of the inventory\
+ \ item. The sku value is required for each product offer\
+ \ that the seller is trying to create, and it is always returned to identified\
+ \ the product that is associated with the offer."
+ statusCode:
+ type: "integer"
+ description: "The integer value returned in this field is the http status\
+ \ code. If an offer is created successfully, the value returned in this\
+ \ field should be 200. A user can view the HTTP status\
+ \ codes section for information on other status codes that may\
+ \ be returned with the bulkCreateOffer method."
+ format: "int32"
+ warnings:
+ type: "array"
+ description: "This container will be returned at the offer level, and will\
+ \ contain one or more warnings if any occurred with the attempted creation\
+ \ of the corresponding offer. Note that it is possible that an offer can\
+ \ be created successfully even if one or more warnings are triggered."
+ items:
+ $ref: "#/components/schemas/Error"
+ description: "This type is used by the bulkCreateOffer response\
+ \ to show the status of each offer that the seller attempted to create with\
+ \ the bulkCreateOffer method. For each offer that is created\
+ \ successfully, the returned statusCode value should be 200,\
+ \ and a unique offerId should be created for each offer.\
+ \ If any issues occur with the creation of any offers, errors\
+ \ and/or warnings containers will be returned."
+ Offers:
+ type: "object"
+ properties:
+ href:
+ type: "string"
+ description: "This is the URL to the current page of offers."
+ limit:
+ type: "integer"
+ description: "This integer value is the number of offers that will be displayed\
+ \ on each results page."
+ format: "int32"
+ next:
+ type: "string"
+ description: "This is the URL to the next page of offers. This field will\
+ \ only be returned if there are additional offers to view."
+ offers:
+ type: "array"
+ description: "This container is an array of one or more of the seller's\
+ \ offers for the SKU value that is passed in through the required sku\
+ \ query parameter.
Note:\
+ \ Currently, the Inventory API does not support the same SKU across multiple\
+ \ eBay marketplaces.
Max Occurs: 25"
+ items:
+ $ref: "#/components/schemas/EbayOfferDetailsWithAll"
+ prev:
+ type: "string"
+ description: "This is the URL to the previous page of offers. This field\
+ \ will only be returned if there are previous offers to view."
+ size:
+ type: "integer"
+ description: "This integer value indicates the number of offers being displayed\
+ \ on the current page of results. This number will generally be the same\
+ \ as the limit value if there are additional pages of\
+ \ results to view.
Note:\
+ \ The same SKU can be offered through an auction and a fixed-price listing\
+ \ concurrently. If this is the case, getOffers will return two\
+ \ offers and this value will be 2. Otherwise, only one offer\
+ \ will be returned and this value will be 1."
+ format: "int32"
+ total:
+ type: "integer"
+ description: "This integer value is the total number of offers that exist\
+ \ for the specified SKU value. Based on this number and on the limit\
+ \ value, the seller may have to toggle through multiple pages to view\
+ \ all offers.
Note:\
+ \ The same SKU can be offered through an auction and a fixed-price listing\
+ \ concurrently. If this is the case, getOffers will return two\
+ \ offers, so this value would be 2. Otherwise, only one offer\
+ \ will be returned and this value will be 1."
+ format: "int32"
+ description: "This type is used by the base response of the getOffers\
+ \ call, and it is an array of one or more of the seller's offers, along with\
+ \ pagination data."
+ OperatingHours:
+ type: "object"
+ properties:
+ dayOfWeekEnum:
+ type: "string"
+ description: "A dayOfWeekEnum value is required for each\
+ \ day of the week that the store location has regular operating hours.\
+ \
This field is returned if operating hours are defined for the\
+ \ store location. For implementation help, refer to eBay\
+ \ API documentation"
+ intervals:
+ type: "array"
+ description: "This container is used to define the opening and closing times\
+ \ of a store location's working day (defined in the dayOfWeekEnum\
+ \ field). An intervals container is needed for each day\
+ \ of the week that the store location is open. If a store location closes\
+ \ for lunch (or any other period during the day) and then reopens, multiple\
+ \ open and close pairs are needed
This\
+ \ container is returned if operating hours are defined for the store location."
+ items:
+ $ref: "#/components/schemas/Interval"
+ description: "This type is used to express the regular operating hours of a\
+ \ merchant's store or fulfillment center during the days of the week."
+ Overrides:
+ type: "object"
+ properties:
+ cutOffTime:
+ type: "string"
+ description: "This field is used to override the cut-off time(s) specified\
+ \ in the weeklySchedule container. If an order is placed after\
+ \ this time in the specified date or date range, it will be handled by\
+ \ the seller on the following day.
Format: 00:00"
+ endDate:
+ type: "string"
+ description: "The end date of the cut-off time override in ISO 8601 format,\
+ \ which is based on the 24-hour Coordinated Universal Time (UTC) clock.
Note: If the cut-off time override is only\
+ \ for a single day, input the same date in the startDate and endDate\
+ \ fields.
Format: [YYYY]-[MM]-[DD]
Example:\
+ \ 2024-08-06
Note:\
+ \ The time zone for this date is specified from the timeZoneId\
+ \ field. If this field is not used, the time zone will be derived from\
+ \ the provided address."
+ startDate:
+ type: "string"
+ description: "The start date of the cut-off time override in ISO 8601 format, which is based on the 24-hour\
+ \ Coordinated Universal Time (UTC) clock.
Note: If the cut-off time override is only for a single day, input\
+ \ the same date in the startDate and endDate fields.
Format:\
+ \ [YYYY]-[MM]-[DD]
Example: 2024-08-04
Note: The time zone for this date is specified\
+ \ from the timeZoneId field. If this field is not used, the time\
+ \ zone will be derived from the provided address."
+ description: "This type defines the override dates for cut-off times. This allows\
+ \ sellers to set special hours for their inventory location and specify different\
+ \ cut-off times on these days."
+ PackageWeightAndSize:
+ type: "object"
+ properties:
+ dimensions:
+ description: "This container is used to indicate the length, width, and\
+ \ height of the shipping package that will be used to ship the inventory\
+ \ item. The dimensions of a shipping package are needed when calculated\
+ \ shipping is used.
This container will be returned if package\
+ \ dimensions are set for the inventory item."
+ $ref: "#/components/schemas/Dimension"
+ packageType:
+ type: "string"
+ description: "This enumeration value indicates the type of shipping package\
+ \ used to ship the inventory item. The supported values for this field\
+ \ can be found in the PackageTypeEnum type.
This field will be\
+ \ returned if the package type is set for the inventory item.
Note: You can use the GeteBayDetails Trading API call to retrieve a\
+ \ list of supported package types for a specific marketplace. For\
+ \ implementation help, refer to eBay\
+ \ API documentation"
+ shippingIrregular:
+ type: "boolean"
+ description: "A value of true indicates that the package is\
+ \ irregular and cannot go through the stamping machine at the shipping\
+ \ service office. This field applies to calculated shipping only. Irregular\
+ \ packages require special or fragile handling."
+ weight:
+ description: "This container is used to specify the weight of the shipping\
+ \ package that will be used to ship the inventory item. The weight of\
+ \ a shipping package are needed when calculated shipping is used, or if\
+ \ flat-rate shipping rates are used, but with a weight surcharge.
This\
+ \ field will be returned if package weight is set for the inventory item."
+ $ref: "#/components/schemas/Weight"
+ description: "This type is used to indicate the package type, weight, and dimensions\
+ \ of the shipping package. Package weight and dimensions are required when\
+ \ calculated shipping rates are used, and weight alone is required when flat-rate\
+ \ shipping is used, but with a weight surcharge. See the Calculated shipping help page for more information\
+ \ on calculated shipping."
+ PickupAtLocationAvailability:
+ type: "object"
+ properties:
+ availabilityType:
+ type: "string"
+ description: "The enumeration value in this field indicates the availability\
+ \ status of the inventory item at the merchant's physical store specified\
+ \ by the pickupAtLocationAvailability.merchantLocationKey\
+ \ field. This field is required if the pickupAtLocationAvailability\
+ \ container is used, and is always returned with the pickupAtLocationAvailability\
+ \ container.
See AvailabilityTypeEnum for more information about\
+ \ how/when you use each enumeration value. For implementation help, refer\
+ \ to eBay\
+ \ API documentation"
+ fulfillmentTime:
+ description: "This container is used to indicate how soon an In-Store Pickup\
+ \ order will be available for pickup by the buyer after the order takes\
+ \ place. This container is required if the pickupAtLocationAvailability\
+ \ container is used, and is always returned with the pickupAtLocationAvailability\
+ \ container."
+ $ref: "#/components/schemas/TimeDuration"
+ merchantLocationKey:
+ type: "string"
+ description: "The unique identifier of a merchant's store where the In-Store\
+ \ Pickup inventory item is currently located, or where inventory will\
+ \ be sent to. If the merchant's store is currently awaiting for inventory,\
+ \ the availabilityType value should be SHIP_TO_STORE.\
+ \ This field is required if the pickupAtLocationAvailability\
+ \ container is used, and is always returned with the pickupAtLocationAvailability\
+ \ container.
Use the getInventoryLocations method to retrieve merchant\
+ \ location keys.
Max length: 36"
+ quantity:
+ type: "integer"
+ description: "This integer value indicates the quantity of the inventory\
+ \ item that is available for In-Store Pickup at the store identified by\
+ \ the merchantLocationKey value. The value of quantity\
+ \ should be an integer value greater than 0, unless the inventory\
+ \ item is out of stock. This field is required if the pickupAtLocationAvailability\
+ \ container is used, and is always returned with the pickupAtLocationAvailability\
+ \ container."
+ format: "int32"
+ description: "This type is used to specify/indicate the quantity of the inventory\
+ \ item that is available for an In-Store Pickup order at the merchant's physical\
+ \ store (specified by the merchantLocationKey field)."
+ PriceQuantity:
+ type: "object"
+ properties:
+ offers:
+ type: "array"
+ description: "This container is needed if the seller is updating the price\
+ \ and/or quantity of one or more published offers, and a successful call\
+ \ will actually update the active eBay listing with the revised price\
+ \ and/or available quantity.
This call is not designed to work\
+ \ with unpublished offers. For unpublished offers, the seller should use\
+ \ the updateOffer call to update the available quantity\
+ \ and/or price.
If the seller is also using the shipToLocationAvailability\
+ \ container and sku field to update the total 'ship-to-home'\
+ \ quantity of the inventory item, the SKU value associated with the corresponding\
+ \ offerId value(s) must be the same as the corresponding\
+ \ sku value that is passed in, or an error will occur.
Important!\
+ \ A separate (OfferPriceQuantity) node is required for\
+ \ each offer being updated.
"
+ items:
+ $ref: "#/components/schemas/OfferPriceQuantity"
+ shipToLocationAvailability:
+ description: "This container is needed if the seller is updating the total\
+ \ 'ship-to-home' quantity for the corresponding inventory item (specified\
+ \ in the sku field). A successful call will update the\
+ \ inventory item record associated with the sku value."
+ $ref: "#/components/schemas/ShipToLocationAvailability"
+ sku:
+ type: "string"
+ description: "This is the seller-defined SKU value of the inventory item\
+ \ whose total 'ship-to-home' quantity will be updated. This field is only\
+ \ required when the seller is updating the total quantity of an inventory\
+ \ item using the shipToLocationAvailability container.\
+ \ If the seller is updating the price and/or quantity of one or more specific\
+ \ offers, one or more offerId values are used instead,\
+ \ and the sku value is not needed.
If the seller\
+ \ wants to update the price and/or quantity of one or more offers, and\
+ \ also wants to update the total 'ship-to-home' quantity of the corresponding\
+ \ inventory item, the SKU value associated with the offerId\
+ \ value(s) must be the same as the corresponding sku\
+ \ value that is passed in, or an error will occur.
Use the getInventoryItems method to retrieve SKU values.
Max\
+ \ Length: 50
"
+ description: "This type is used to update the total \"ship-to-home\" quantity\
+ \ for one or more inventory items and/or to update the price and/or quantity\
+ \ of one or more specific offers associated with one or more inventory items."
+ PriceQuantityResponse:
+ type: "object"
+ properties:
+ errors:
+ type: "array"
+ description: "This array will be returned if there were one or more errors\
+ \ associated with the update to the offer or inventory item record."
+ items:
+ $ref: "#/components/schemas/Error"
+ offerId:
+ type: "string"
+ description: "The unique identifier of the offer that was updated. This\
+ \ field will not be returned in situations where the seller is only updating\
+ \ the total 'ship-to-home' quantity of an inventory item record."
+ sku:
+ type: "string"
+ description: "This is the seller-defined SKU value of the product. This\
+ \ field is returned whether the seller attempted to update an offer with\
+ \ the SKU value or just attempted to update the total 'ship-to-home' quantity\
+ \ of an inventory item record.
Max Length: 50
"
+ statusCode:
+ type: "integer"
+ description: "The value returned in this container will indicate the status\
+ \ of the attempt to update the price and/or quantity of the offer (specified\
+ \ in the corresponding offerId field) or the attempt\
+ \ to update the total 'ship-to-home' quantity of an inventory item (specified\
+ \ in the corresponding sku field). For a completely successful\
+ \ update of an offer or inventory item record, a value of 200\
+ \ will appear in this field. A user can view the HTTP status\
+ \ codes section for information on other status codes that may\
+ \ be returned with the bulkUpdatePriceQuantity method."
+ format: "int32"
+ warnings:
+ type: "array"
+ description: "This array will be returned if there were one or more warnings\
+ \ associated with the update to the offer or inventory item record."
+ items:
+ $ref: "#/components/schemas/Error"
+ description: "This type is used to display the result for each offer and/or\
+ \ inventory item that the seller attempted to update with a bulkUpdatePriceQuantity\
+ \ call. If any errors or warnings occur, the error/warning data is returned\
+ \ at the offer/inventory item level."
+ PricingSummary:
+ type: "object"
+ properties:
+ auctionReservePrice:
+ description: "This field indicates the lowest price at which the seller\
+ \ is willing to sell an item through an auction listing. Note that setting\
+ \ a Reserve Price will incur a listing fee of $5 or 7.5% of the Reserve\
+ \ Price, whichever is greater. The minimum fee is $5.
Important: This fee is charged regardless of whether\
+ \ or not the item is sold."
+ $ref: "#/components/schemas/Amount"
+ auctionStartPrice:
+ description: "This field indicates the minimum bidding price for the auction.\
+ \ The bidding starts at this price.
Note:\
+ \ If the auctionReservePrice is also specified, the value of auctionStartPrice\
+ \ must be lower than the value of auctionReservePrice."
+ $ref: "#/components/schemas/Amount"
+ minimumAdvertisedPrice:
+ description: "This container is needed if the Minimum Advertised Price (MAP)\
+ \ feature will be used in the offer. Minimum Advertised Price (MAP) is\
+ \ an agreement between suppliers (or manufacturers (OEM)) and the retailers\
+ \ (sellers) stipulating the lowest price an item is allowed to be advertised\
+ \ at. Sellers can only offer prices below this price through the use of\
+ \ other discounts. The MAP feature is only available to eligible US sellers.\
+ \ This field will be ignored if the seller and or the listing is not eligible\
+ \ for the MAP feature.
This container will be returned by getOffer\
+ \ and getOffers if set for the offer."
+ $ref: "#/components/schemas/Amount"
+ originallySoldForRetailPriceOn:
+ type: "string"
+ description: "This field is needed if the Strikethrough Pricing (STP) feature\
+ \ will be used in the offer. This field indicates that the product was\
+ \ sold for the price in the originalRetailPrice field\
+ \ on an eBay site, or sold for that price by a third-party retailer. When\
+ \ using the createOffer or updateOffer\
+ \ calls, the seller will pass in a value of ON_EBAY to indicate\
+ \ that the product was sold for the originalRetailPrice\
+ \ on an eBay site, or the seller will pass in a value of OFF_EBAY\
+ \ to indicate that the product was sold for the originalRetailPrice\
+ \ through a third-party retailer. This field and the originalRetailPrice\
+ \ field are only applicable if the seller and listing are eligible to\
+ \ use the Strikethrough Pricing feature, a feature which is limited to\
+ \ the US (core site and Motors), UK, Germany, Canada (English and French\
+ \ versions), France, Italy, and Spain sites.
This field will be\
+ \ returned by getOffer and getOffers if set for the offer. For implementation help, refer to\
+ \ eBay\
+ \ API documentation"
+ originalRetailPrice:
+ description: "This container is needed if the Strikethrough Pricing (STP)\
+ \ feature will be used in the offer. The dollar value passed into this\
+ \ field indicates the original retail price set by the manufacturer (OEM).\
+ \ eBay does not maintain or validate the value supplied here by the seller.\
+ \ The dollar value in this field should always be more than the dollar\
+ \ value in the price container. This field and the originallySoldForRetailPriceOn\
+ \ field are only applicable if the seller and listing are eligible to\
+ \ use the Strikethrough Pricing feature, a feature which is limited to\
+ \ the US (core site and Motors), UK, Germany, Canada (English and French\
+ \ versions), France, Italy, and Spain sites. Compare the originalRetailPrice\
+ \ and the dollar value in the price field to determine\
+ \ the amount of savings to the buyer. This Original Retail Price will\
+ \ have a strikethrough line through for a marketing affect.
This\
+ \ container will be returned by getOffer and getOffers if set for the offer."
+ $ref: "#/components/schemas/Amount"
+ price:
+ description: "This is the listing price of the product. A listing price\
+ \ must be specified before publishing an offer, but it is possible to\
+ \ create an offer without a price.
For published offers, this container\
+ \ will always be returned, but for unpublished offers, this container\
+ \ will only be returned if set for the offer.
Important!Publish\
+ \ offer note: This container and its two child fields (currency\
+ \ and value) are required before an offer can be published to create\
+ \ an active listing.
"
+ $ref: "#/components/schemas/Amount"
+ pricingVisibility:
+ type: "string"
+ description: "This field is needed if the Minimum Advertised Price (MAP)\
+ \ feature will be used in the offer. This field is only applicable if\
+ \ an eligible US seller is using the Minimum Advertised Price (MAP) feature\
+ \ and a minimumAdvertisedPrice has been specified. The\
+ \ value set in this field will determine whether the MAP price is shown\
+ \ to a prospective buyer prior to checkout through a pop-up window accessed\
+ \ from the View Item page, or if the MAP price is not shown until the\
+ \ checkout flow after the buyer has already committed to buying the item.\
+ \ To show the MAP price prior to checkout, the seller will set this value\
+ \ to PRE_CHECKOUT. To show the MAP price after the buyer\
+ \ already commits to buy the item, the seller will set this value to DURING_CHECKOUT.\
+ \ This field will be ignored if the seller and/or the listing is not eligible\
+ \ for the MAP feature.
This field will be returned by getOffer\
+ \ and getOffers if set for the offer. For implementation help, refer to\
+ \ eBay\
+ \ API documentation"
+ description: "This type is used to specify the listing price for the product\
+ \ and settings for the Minimum Advertised Price and Strikethrough Pricing\
+ \ features. The price field must be supplied before an offer\
+ \ is published, but a seller may create an offer without supplying a price\
+ \ initially. The Minimum Advertised Price feature is only available on the\
+ \ US site. Strikethrough Pricing is available on the US, eBay Motors, UK,\
+ \ Germany, Canada (English and French), France, Italy, and Spain sites."
+ Product:
+ type: "object"
+ properties:
+ aspects:
+ type: "string"
+ description: "This is a collection of item specifics (aka product aspects)\
+ \ name-value pairs that provide more information about the product and\
+ \ might make it easier for buyers to find. To view required/recommended\
+ \ product aspects/item specifics names (and corresponding values) for\
+ \ a specific eBay category, sellers can use the getItemAspectsForCategory method of the Taxonomy\
+ \ API. Alternatively, sellers can view similar items on eBay.com in the\
+ \ same category to get an idea of what other sellers are using for product\
+ \ aspects/item specifics.
Important! Effective from December\
+ \ 28th, 2024, sellers offering certain rechargeable devices in EU and\
+ \ Northern Ireland markets must comply with the Common Charger Directive\
+ \ (CCD) and list appropriate charger-related aspects and values on their\
+ \ listings. See Common Charger Directive for more information.
Sellers\
+ \ also have the option of specifying an eBay Product ID (ePID) or optionally,\
+ \ a Global Trade Item Number (GTIN) through the corresponding fields in\
+ \ the product container in an attempt to find a product\
+ \ match in the eBay Catalog. If a match is found based on the ePID or\
+ \ GTIN value, the product aspects that are defined for the eBay Catalog\
+ \ product will automatically get picked up by the newly created/updated\
+ \ inventory item.
Below is an example of the proper JSON syntax\
+ \ to use when manually inputting item specifics. Note that one item specific\
+ \ name, such as 'Features', can have more than one value. If an item specific\
+ \ name has more than one value, each value is delimited with a comma.
\"\
+ aspects\": {
\"Brand\": [\"GoPro\"],
\"Storage Type\": [\"Removable\"\
+ ]
}
Note that inventory items that will become part\
+ \ of an inventory item group and multiple-variation listing should have\
+ \ the same attributes that are defined for the inventory item group.
This\
+ \ container will be returned if one or more item specific pairs are defined\
+ \ for the inventory item.
Important!Publish offer note:\
+ \ This field is required before an offer can be published to create an\
+ \ active listing.
Max Length for Aspect Name:\
+ \ 40
Max Length for Aspect Value: 50"
+ brand:
+ type: "string"
+ description: "The brand of the product. This field is often paired with\
+ \ the mpn field to identify a specific product by Manufacturer\
+ \ Part Number. This field is conditionally required if the eBay category\
+ \ requires a Manufacturer Part Number (MPN) value. If eBay is able to\
+ \ find a product match in the eBay Catalog when an eBay Product ID (ePID)\
+ \ or GTIN value (UPC, ISBN, or EAN) is supplied, all product details of\
+ \ that eBay Catalog product is picked up by the inventory item record\
+ \ (including brand) if the createOrReplaceInventoryItem\
+ \ call is successful.
This field is returned if defined for an\
+ \ inventory item. If a brand was passed in as an item specific name-value\
+ \ pair through the aspects array in a createOrReplaceInventoryItem\
+ \ call, this value is also picked up by the brand field.
Max\
+ \ Length: 65"
+ description:
+ type: "string"
+ description: "The description of the product. The description of an existing\
+ \ inventory item can be added or modified with a createOrReplaceInventoryItem\
+ \ call. The description of an inventory item is automatically populated\
+ \ if the seller specifies an eBay Product ID (ePID) or a Global Trade\
+ \ Item Number (GTIN) and eBay is able to find a matching product in the\
+ \ eBay Catalog.
Note that this field is optional but recommended.\
+ \ If a listingDescription field is omitted when creating\
+ \ and publishing a single-variation offer, the text in this field will\
+ \ be used instead. If neither the product.description\
+ \ field for the inventory item nor the listingDescription\
+ \ field for the offer exist, the publishOffer call will\
+ \ fail. If the inventory item will be part of an inventory item group/multiple-variation\
+ \ listing, this field should definitely be used to specify how the corresponding\
+ \ product variation is different (e.g. This is the green, extra-large\
+ \ version of the shirt). However, in the case of an inventory item\
+ \ group, the text in the description field of the inventory\
+ \ item group will become the listing description of the actual eBay listing\
+ \ instead of the text in this field.
Basic HTML tags are supported,\
+ \ including the following tags:- <b>
- <strong>
- <br>
- <ol>
- <ul>
- <li>
- Table\
+ \ tags including <table>, <tr>, <td>, <th>, <thead>,\
+ \ <tfoot>, <tbody>, <caption>, <colgroup>, and\
+ \ <col>
A seller can not use any active content in their\
+ \ listing description. Active content includes animation or video via\
+ \ JavaScript, Flash, plug-ins, or form actions.
This field is returned\
+ \ if defined for an inventory item. If one of the GTIN types (e.g. UPC)\
+ \ was passed in when the inventory item was created/modified and a product\
+ \ match was found in the eBay catalog, product description is one of the\
+ \ details that gets picked up from the catalog product.
Important!Publish\
+ \ offer note: This field is required before an offer can be published\
+ \ to create an active listing.
Max Length:\
+ \ 4000"
+ ean:
+ type: "array"
+ description: "The European Article Number/International Article Number (EAN)\
+ \ for the product. Although an ePID value is preferred when trying to\
+ \ find a product match in the eBay Catalog, this field can also be used\
+ \ in an attempt to find a product match in the eBay Catalog. If a product\
+ \ match is found in the eBay Catalog, the inventory item is automatically\
+ \ populated with available product details such as a title, a product\
+ \ description, product aspects (including the specified EAN value), and\
+ \ a link to any stock image that exists for the catalog product.
This\
+ \ field is returned if defined for an inventory item. If an EAN was passed\
+ \ in as an item specific name-value pair through the aspects\
+ \ array in a createOrReplaceInventoryItem call, this\
+ \ value is also picked up by the ean field.Note: If the\
+ \ item is being listed in a category that requires an EAN value, but one\
+ \ doesn't exist for the product, the seller must provide a string indicating\
+ \ that the product identifier is unavailable. This text varies by marketplace.\
+ \ Refer to Product Identifier Text for the specific text\
+ \ based on the listing marketplace.
"
+ items:
+ type: "string"
+ epid:
+ type: "string"
+ description: "The eBay Product Identifier (ePID) for the product. This field\
+ \ can be used to directly identify an eBay Catalog product. Based on its\
+ \ specified ePID value, eBay will search for the product in the eBay Catalog,\
+ \ and if a match is found, the inventory item is automatically populated\
+ \ with available product details such as product title, product description,\
+ \ product aspects, and a link to any stock image that exists for the catalog\
+ \ product.
In an attempt to find a eBay Catalog product match,\
+ \ an ePID value is always preferred over the other product identifiers,\
+ \ since it is possible that one GTIN value can be associated with multiple\
+ \ eBay Catalog products, and if multiple products are found, product details\
+ \ will not be picked up by the Inventory Item object.
Note: When listing in categoryID 173651 (Auto\
+ \ Performance Tuning Devices & Software), the use of catalog products\
+ \ is required. For more information, see Tuning devices and software.
This\
+ \ field is returned if defined for an inventory item."
+ imageUrls:
+ type: "array"
+ description: "An array of one or more links to images for the product. URLs\
+ \ must use the \"HTTPS\" protocol. Images can be self-hosted by the seller,\
+ \ or sellers can use the UploadSiteHostedPictures call of the Trading\
+ \ API to upload images to an eBay Picture Server. If successful, the response\
+ \ of the UploadSiteHostedPictures call will contain\
+ \ a full URL to the image on an eBay Picture Server. This is the URL that\
+ \ will be passed in through the imageUrls array. Before\
+ \ an offer can be published, at least one image must exist for the inventory\
+ \ item. In almost any category at no cost, sellers can include up to 24\
+ \ pictures in one listing. For inventory items that are a part of an inventory\
+ \ item group/multiple-variation listings, a maximum of 12 pictures may\
+ \ be used per inventory item in the group. Motor vehicle listings are\
+ \ an exception. The number of included pictures in motor vehicle listings\
+ \ depend on the selected vehicle package (see Fees for selling vehicles on eBay Motors).
A\
+ \ link to a stock image for a product may automatically be populated for\
+ \ an inventory item if the seller specifies an eBay Product ID (ePID)\
+ \ or a Global Trade Item Number (GTIN) and eBay is able to find a matching\
+ \ product in the eBay Catalog.
This container will always be returned\
+ \ for an inventory item that is part of a published offer since a published\
+ \ offer will always have at least one picture, but this container will\
+ \ only be returned if defined for inventory items that are not a part\
+ \ of a published offer.
Important!Publish offer note:\
+ \ This array is required and at least one image URL must be specified\
+ \ before an offer can be published to create an active listing.
"
+ items:
+ type: "string"
+ isbn:
+ type: "array"
+ description: "The International Standard Book Number (ISBN) value for the\
+ \ product. Although an ePID value is preferred when trying to find a product\
+ \ match in the eBay Catalog, this field can also be used in an attempt\
+ \ to find a product match in the eBay Catalog. If a product match is found\
+ \ in the eBay Catalog, the inventory item is automatically populated with\
+ \ available product details such as a title, a product description, product\
+ \ aspects (including the specified ISBN value), and a link to any stock\
+ \ image that exists for the catalog product.
This field is returned\
+ \ if defined for an inventory item. If an ISBN was passed in as an item\
+ \ specific name-value pair through the aspects array\
+ \ in a createOrReplaceInventoryItem call, this value\
+ \ is also picked up by the isbn field.Note: If the\
+ \ item is being listed in a category that requires an ISBN value, but\
+ \ one doesn't exist for the product, the seller must provide a string\
+ \ indicating that the product identifier is unavailable. This text varies\
+ \ by marketplace. Refer to Product Identifier Text for the specific text\
+ \ based on the listing marketplace.
"
+ items:
+ type: "string"
+ mpn:
+ type: "string"
+ description: "The Manufacturer Part Number (MPN) of a product. This field\
+ \ is paired with the brand field to identify a product.\
+ \ Some eBay categories require MPN values. The getItemAspectsForCategory method in the Taxonomy\
+ \ API can be used to see if a category requires an MPN. The MPN value\
+ \ for a product may automatically be populated for an inventory item if\
+ \ the seller specifies an eBay Product ID (ePID) or a Global Trade Item\
+ \ Number (GTIN) and eBay is able to find a matching product in the eBay\
+ \ Catalog.
This field is returned if defined for an inventory\
+ \ item. If an MPN was passed in as an item specific name-value pair through\
+ \ the aspects array in a createOrReplaceInventoryItem\
+ \ call, this value is also picked up by the mpn field.Note: If\
+ \ the item is being listed in a category that requires an MPN value, but\
+ \ one doesn't exist for the product, the seller must provide a string\
+ \ indicating that the product identifier is unavailable. This text varies\
+ \ by marketplace. Refer to Product Identifier Text for the specific text\
+ \ based on the listing marketplace.
Max Length:\
+ \ 65"
+ subtitle:
+ type: "string"
+ description: "A subtitle is an optional listing feature that allows the\
+ \ seller to provide more information about the product, possibly including\
+ \ keywords that may assist with search results. An additional listing\
+ \ fee will be charged to the seller if a subtitle is used. For more information\
+ \ on using listing subtitles on the US site, see the Adding a subtitle to your listings help page.\
+ \ The subtitle of an existing inventory item can added, modified, or removed\
+ \ with a createOrReplaceInventoryItem call.
Note\
+ \ that the same subtitle text should be used for each\
+ \ inventory item that will be part of an inventory item group, and ultimately\
+ \ become one product variation within a multiple-variation listing.
This\
+ \ field will only be returned if set for an inventory item.
Max\
+ \ Length: 55"
+ title:
+ type: "string"
+ description: "The title of an inventory item can be added or modified with\
+ \ a createOrReplaceInventoryItem call. Although not immediately\
+ \ required, a title will be needed before an offer with the inventory\
+ \ item is published. The title of an inventory item is automatically populated\
+ \ if the seller specifies an eBay Product ID (ePID) or a Global Trade\
+ \ Item Number (GTIN) and eBay is able to find a matching product in the\
+ \ eBay Catalog. If the inventory item will become part of a single-variation\
+ \ offer, and the listing is not a product-based listing, the text in this\
+ \ field will become the actual listing title for the published offer.\
+ \ However, if the inventory item will become part of a multiple-variation\
+ \ offer, the text in title field of the inventory item\
+ \ group entity will actually become the listing title for the published\
+ \ offer instead, although a title can still be provided for the inventory\
+ \ item, and it will actually become the title of the variation.
This\
+ \ field will always be returned for an inventory item that is part of\
+ \ a published offer since a published offer will always have a listing\
+ \ title, but this field will only be returned if defined for inventory\
+ \ items that are not a part of a published offer.
Important!Publish\
+ \ offer note: This field is required before an offer can be published\
+ \ to create an active listing.
Max Length:\
+ \ 80"
+ upc:
+ type: "array"
+ description: "The Universal Product Code (UPC) value for the product. Although\
+ \ an ePID value is preferred when trying to find a product match in the\
+ \ eBay Catalog, this field can also be used in an attempt to find a product\
+ \ match in the eBay Catalog. If a product match is found in the eBay Catalog,\
+ \ the inventory item is automatically populated with available product\
+ \ details such as a title, a product description, product aspects (including\
+ \ the specified UPC value), and a link to any stock image that exists\
+ \ for the catalog product.
This field is returned if defined for\
+ \ an inventory item. If a UPC was passed in as an item specific name-value\
+ \ pair through the aspects array in a createOrReplaceInventoryItem\
+ \ call, this value is also picked up by the upc field.Note: If\
+ \ the item is being listed in a category that requires a UPC value, but\
+ \ one doesn't exist for the product, the seller must provide a string\
+ \ indicating that the product identifier is unavailable. This text varies\
+ \ by marketplace. Refer to Product Identifier Text for the specific text\
+ \ based on the listing marketplace.
"
+ items:
+ type: "string"
+ videoIds:
+ type: "array"
+ description: "An array of one or more videoId values for the product.\
+ \ A video ID is a unique identifier that is automatically created by eBay\
+ \ when a seller successfully uploads a video to eBay using the uploadVideo method of the Media API.
For information on supported\
+ \ marketplaces and platforms, as well as other requirements and limitations\
+ \ of video support, please refer to Managing videos.
Note: Only one video per listing is supported."
+ items:
+ type: "string"
+ description: "This type is used to define the product details, such as a title,\
+ \ a product description, product aspects/item specifics, and links to images\
+ \ for the product. Optionally, in a createOrReplaceInventoryItem\
+ \ call, a seller can pass in an eBay Product Identifier (ePID) or a Global\
+ \ Trade Item Number (GTIN) value, such as an EAN, an ISBN, a UPC, to identify\
+ \ a product to be matched with a product in the eBay Catalog. The information\
+ \ in this type is also returned in the getInventoryItem,\
+ \ getInventoryItems, and bulkGetInventoryItem\
+ \ calls if defined."
+ ProductFamilyProperties:
+ type: "object"
+ properties:
+ engine:
+ type: "string"
+ description: "Important! The productFamilyProperties\
+ \ container is no longer supported.
"
+ make:
+ type: "string"
+ description: "Important! The productFamilyProperties\
+ \ container is no longer supported.
"
+ model:
+ type: "string"
+ description: "Important! The productFamilyProperties\
+ \ container is no longer supported.
"
+ trim:
+ type: "string"
+ description: "Important! The productFamilyProperties\
+ \ container is no longer supported.
"
+ year:
+ type: "string"
+ description: "Important! The productFamilyProperties\
+ \ container is no longer supported.
"
+ description: "This type is used to specify the details of a motor vehicle that\
+ \ is compatible with the inventory item specified through the SKU value in\
+ \ the call URI."
+ ProductIdentifier:
+ type: "object"
+ properties:
+ epid:
+ type: "string"
+ description: "This field can be used if the seller already knows the eBay\
+ \ catalog product ID (ePID) associated with the motor vehicle that is\
+ \ to be added to the compatible product list. If this eBay catalog product\
+ \ ID is found in the eBay product catalog, the motor vehicle properties\
+ \ (e.g. make, model, year, engine, and trim) will automatically get picked\
+ \ up for that motor vehicle."
+ gtin:
+ type: "string"
+ description: "This field can be used if the seller knows the Global Trade\
+ \ Item Number for the motor vehicle that is to be added to the compatible\
+ \ product list. If this GTIN value is found in the eBay product catalog,\
+ \ the motor vehicle properties (e.g. make, model, year, engine, and trim\
+ \ will automatically get picked up for that motor vehicle.
Note: This field is for future\
+ \ use."
+ ktype:
+ type: "string"
+ description: "This field can be used if the seller knows the K Type Number\
+ \ for the motor vehicle that is to be added to the compatible product\
+ \ list. If this K Type value is found in the eBay product catalog, the\
+ \ motor vehicle properties (e.g. make, model, year, engine, and trim)\
+ \ will automatically get picked up for that motor vehicle.
Only\
+ \ the AU, DE, ES, FR, IT, and UK marketplaces support the use of K Type\
+ \ Numbers."
+ description: "This type is used to identify a motor vehicle that is compatible\
+ \ with the corresponding inventory item (the SKU that is passed in as part\
+ \ of the call URI). The motor vehicle can be identified through an eBay Product\
+ \ ID or a K-Type value. The gtin field (for inputting Global\
+ \ Trade Item Numbers) is for future use only. If a motor vehicle is found\
+ \ in the eBay product catalog, the motor vehicle properties (engine, make,\
+ \ model, trim, and year) will automatically get picked up for that motor vehicle.
Note: Currently, parts compatibility\
+ \ is only applicable for motor vehicles, but it is possible that the Product\
+ \ Compatibility feature is expanded to other (non-vehicle) products in the\
+ \ future."
+ ProductSafety:
+ type: "object"
+ properties:
+ component:
+ type: "string"
+ description: "This field is used by the seller to provide product safety\
+ \ component information for the listing. For example, component information\
+ \ can include specific warnings related to product safety, such as 'Tipping\
+ \ hazard'.
Note: Component information\
+ \ can only be specified if used with the pictograms and/or statements\
+ \ field; if the component is provided without one or both of these fields,\
+ \ an error will occur.
Max length: 120 characters"
+ pictograms:
+ type: "array"
+ description: "An array of comma-separated string values used to provide\
+ \ product safety pictogram(s) for the listing.
If your product\
+ \ shows universal product safety or compliance symbols, please select\
+ \ the values corresponding to the product safety pictograms for display\
+ \ in the product safety section of the listing. The seller specifies the\
+ \ identifier of each pictogram in this field.
Note: For product safety pictograms, use the getProductSafetyLabels method of the Metadata\
+ \ API to find supported values for a specific marketplace/site.
A\
+ \ maximum of 2 pictograms are allowed for product safety."
+ items:
+ type: "string"
+ statements:
+ type: "array"
+ description: "An array of comma-separated string values used to provide\
+ \ product safety statement(s) for the listing.
If your product\
+ \ shows universal product safety or compliance warnings, please select\
+ \ the values corresponding to the product safety statements for display\
+ \ in the product safety section of the listing. The seller specifies the\
+ \ identifier of each statement in this field.
Note: For product safety statements, use the getProductSafetyLabels method of the Metadata\
+ \ API to find supported values for a specific marketplace/site.
A\
+ \ maximum of 8 statements are allowed for product safety."
+ items:
+ type: "string"
+ description: "This type is used to define the pictograms and statement\
+ \ containers, and the optional component field, that provide product\
+ \ safety and compliance related information."
+ PublishByInventoryItemGroupRequest:
+ type: "object"
+ properties:
+ inventoryItemGroupKey:
+ type: "string"
+ description: "This is the unique identifier of the inventory item group.\
+ \ All unpublished offers associated with this inventory item group will\
+ \ be published as a multiple-variation listing if the publishByInventoryItemGroup\
+ \ call is successful. The inventoryItemGroupKey identifier\
+ \ is automatically generated by eBay once an inventory item group is created.
To\
+ \ retrieve an inventoryItemGroupKey value, you can use\
+ \ the getInventoryItem method to retrieve an inventory\
+ \ item that is known to be in the inventory item group to publish, and\
+ \ then look for the inventory item group identifier under the groupIds\
+ \ container in the response of that call."
+ marketplaceId:
+ type: "string"
+ description: "This is the unique identifier of the eBay site on which the\
+ \ multiple-variation listing will be published. The marketplaceId\
+ \ enumeration values are found in MarketplaceEnum. For\
+ \ implementation help, refer to eBay\
+ \ API documentation"
+ description: "This type is used by the request payload of the publishByInventoryItemGroup\
+ \ call. The identifier of the inventory item group to publish and the eBay\
+ \ marketplace where the listing will be published is needed in the request\
+ \ payload."
+ PublishResponse:
+ type: "object"
+ properties:
+ listingId:
+ type: "string"
+ description: "The unique identifier of the newly created eBay listing. This\
+ \ field is returned if the single offer (if publishOffer\
+ \ call was used) or group of offers in an inventory item group (if publishOfferByInventoryItemGroup\
+ \ call was used) was successfully converted into an eBay listing."
+ warnings:
+ type: "array"
+ description: "This container will contain an array of errors and/or warnings\
+ \ if any occur when a publishOffer or publishOfferByInventoryItemGroup\
+ \ call is made."
+ items:
+ $ref: "#/components/schemas/Error"
+ description: "This type is used by the base response payload of the publishOffer\
+ \ and publishOfferByInventoryItemGroup calls."
+ RegionalProductCompliancePolicies:
+ type: "object"
+ properties:
+ countryPolicies:
+ type: "array"
+ description: "The array of country-specific product compliance policies\
+ \ to be used by an offer when it is published and converted to a listing."
+ items:
+ $ref: "#/components/schemas/CountryPolicy"
+ description: "This type lists regional product compliance policies to be used\
+ \ by an offer when it is published and converted to a listing."
+ RegionalTakeBackPolicies:
+ type: "object"
+ properties:
+ countryPolicies:
+ type: "array"
+ description: "The array of country-specific take-back policies to be used\
+ \ by an offer when it is published and converted to a listing."
+ items:
+ $ref: "#/components/schemas/CountryPolicy"
+ description: "This type lists regional take-back policies to be used by an offer\
+ \ when it is published and converted to a listing."
+ Regulatory:
+ type: "object"
+ properties:
+ documents:
+ type: "array"
+ description: "This container provides a collection of regulatory documents\
+ \ associated with the listing.
For information on removing one\
+ \ or more files from a listing using the updateOffer method, see Remove documents from listings. .
Note: As a part of General Product Safety\
+ \ Regulation (GPSR) requirements effective on December 13th, 2024, sellers\
+ \ operating in, or shipping to, EU-based countries or Northern Ireland\
+ \ are conditionally required to provide regulatory document information\
+ \ in their eBay listings. For more information on GPSR, see General Product Safety Regulation (GPSR)."
+ items:
+ $ref: "#/components/schemas/Document"
+ energyEfficiencyLabel:
+ description: "This container provides information about the energy efficiency\
+ \ for certain durable goods.
Note:\
+ \ This container can be used to provide European energy efficiency (EEK)\
+ \ information for listings in the Tyres and Appliance categories\
+ \ for sellers in the EU and UK, and Smartphones and Tablets categories\
+ \ for sellers in the US, AU, CA, EU, and UK. If no EEK information is\
+ \ specified through this container, it may be retrieved through a third\
+ \ party vendor. For more information, see Energy efficiency information.
Note: Energy efficiency information is not\
+ \ required for all categories. Use the getRegulatoryPolicies method of the Metadata\
+ \ API to return metadata on the eBay categories that recommend or\
+ \ require energy efficiency-related fields.
Important!\
+ \ When providing energy efficiency information on an appliance or smartphones\
+ \ and tablets listing, the energy efficiency rating and range\
+ \ of the item must be specified through the aspects field when creating the inventory item\
+ \ record. Use the getItemAspectsForCategory method of the Taxonomy\
+ \ API to retrieve applicable rating and range values for a specified category.
"
+ $ref: "#/components/schemas/EnergyEfficiencyLabel"
+ hazmat:
+ description: "This container is used by the seller to provide hazardous\
+ \ material information for the listing.
The statements element\
+ \ is required to complete the Hazmat section of a listing.
The\
+ \ following elements are optional:- pictograms
- signalWord
- component
Note: Hazmat information is not required\
+ \ for all categories. Use the getRegulatoryPolicies method of the Metadata\
+ \ API to return metadata on the eBay categories that recommend or\
+ \ require Hazmat-related fields."
+ $ref: "#/components/schemas/Hazmat"
+ manufacturer:
+ description: "This container provides information about the manufacturer\
+ \ of the item.
Note: As a part\
+ \ of General Product Safety Regulation (GPSR) requirements effective on\
+ \ December 13th, 2024, sellers operating in, or shipping to, EU-based\
+ \ countries or Northern Ireland are conditionally required to provide\
+ \ regulatory manufacturer information in their eBay listings. Manufacturer\
+ \ information is not required for all categories. Use the getRegulatoryPolicies method of the Metadata\
+ \ API to return metadata on the eBay categories that recommend or\
+ \ require manufacturer-related fields. For more information on GPSR, see\
+ \ General Product Safety Regulation (GPSR)."
+ $ref: "#/components/schemas/Manufacturer"
+ productSafety:
+ description: "This container is used to provide product safety information\
+ \ for the listing. One of the following elements is required to complete\
+ \ the Product Safety section for a listing: pictograms or statements.\
+ \ The component element is optional.
Note: As a part of General Product Safety Regulation (GPSR) requirements\
+ \ effective on December 13th, 2024, sellers operating in, or shipping\
+ \ to, EU-based countries or Northern Ireland are conditionally required\
+ \ to provide regulatory product safety information in their eBay listings.\
+ \ Product safety information is not required for all categories. Use the\
+ \ getRegulatoryPolicies method of the Metadata\
+ \ API to return metadata on the eBay categories that recommend or\
+ \ require product safety-related fields. For more information on GPSR,\
+ \ see General Product Safety Regulation (GPSR). "
+ $ref: "#/components/schemas/ProductSafety"
+ repairScore:
+ type: "number"
+ description: "This field represents the repair index for the listing.
The\
+ \ repair index identifies the manufacturer's repair score for a product\
+ \ (i.e., how easy is it to repair the product.) This field is a floating\
+ \ point value between 0.0 (i.e., difficult to repair,) and 10.0 (i.e.,\
+ \ easily repaired.)
Note: 0\
+ \ should not be used as a default value, as it implies the product is\
+ \ not repairable.
The format for repairScore is limited\
+ \ to one decimal place. For example:7.9 and 0.0\
+ \ are both valid scores5.645 and 2.10\
+ \ are both invalid scores
Note:\
+ \ Repair score is not applicable to all categories. Use the getExtendedProducerResponsibilityPolicies method\
+ \ of the Metadata API to see where repair score is applicable."
+ responsiblePersons:
+ type: "array"
+ description: "This container provides information about the EU-based Responsible\
+ \ Persons or entities associated with the listing.
A maximum of\
+ \ 5 EU Responsible Persons are supported.
Note: As a part of General Product Safety Regulation (GPSR) requirements\
+ \ effective on December 13th, 2024, sellers operating in, or shipping\
+ \ to, EU-based countries or Northern Ireland are conditionally required\
+ \ to provide regulatory Responsible Persons information in their eBay\
+ \ listings. For more information on GPSR, see General Product Safety Regulation (GPSR)."
+ items:
+ $ref: "#/components/schemas/ResponsiblePerson"
+ description: "Type defining regulatory information that the seller is required\
+ \ to disclose."
+ ResponsiblePerson:
+ type: "object"
+ properties:
+ addressLine1:
+ type: "string"
+ description: "The first line of the Responsible Person's street address.
Max\
+ \ length: 180 characters"
+ addressLine2:
+ type: "string"
+ description: "The second line of the Responsible Person's address. This\
+ \ field is not always used, but can be used for secondary address information\
+ \ such as 'Suite Number' or 'Apt Number'.
Max length: 180\
+ \ characters"
+ city:
+ type: "string"
+ description: "The city of the Responsible Person's street address.
Max\
+ \ length: 64 characters"
+ companyName:
+ type: "string"
+ description: "The name of the Responsible Person or entity.
Max\
+ \ length: 100 characters"
+ contactUrl:
+ type: "string"
+ description: "The contact URL of the Responsible Person or entity.
Max\
+ \ length: 250 characters"
+ country:
+ type: "string"
+ description: "This defines the list of valid country codes, adapted from\
+ \ http://www.iso.org/iso/country_codes, ISO 3166-1 country code. List\
+ \ elements take the following form to identify a two-letter code with\
+ \ a short name in English, a three-digit code, and a three-letter code:\
+ \ For example, the entry for Japan includes Japan, 392, JPN. Short codes\
+ \ provide uniform recognition, avoiding language-dependent country names.\
+ \ The number code is helpful where Latin script may be problematic. Not\
+ \ all listed codes are universally recognized as countries, for example:\
+ \ code AQ is Antarctica, 010, ATA For implementation help, refer to eBay\
+ \ API documentation"
+ email:
+ type: "string"
+ description: "The Responsible Person's email address.
Max length:\
+ \ 180 characters"
+ phone:
+ type: "string"
+ description: "The Responsible Person's business phone number.
Max\
+ \ length: 64 characters"
+ postalCode:
+ type: "string"
+ description: "The postal code of the Responsible Person's street address.
Max\
+ \ length: 9 characters"
+ stateOrProvince:
+ type: "string"
+ description: "The state of province of the Responsible Person's street address.
Max\
+ \ length: 64 characters"
+ types:
+ type: "array"
+ description: "The type(s) associated with the Responsible Person or entity.
Note: Currently, the only supported value\
+ \ is EUResponsiblePerson. "
+ items:
+ type: "string"
+ description: " For implementation help, refer to eBay\
+ \ API documentation"
+ description: "This type provides information, such as name and contact details,\
+ \ for an EU-based Responsible Person or entity, associated with the product."
+ SameDayShippingCutOffTimes:
+ type: "object"
+ properties:
+ overrides:
+ type: "array"
+ description: "This container can be used to override the existing cut-off\
+ \ time(s), specified in the weeklySchedule container, for a specific\
+ \ date or date range."
+ items:
+ $ref: "#/components/schemas/Overrides"
+ weeklySchedule:
+ type: "array"
+ description: "This container is used to specify the weekly schedule for\
+ \ shipping and handling cut-off times. A cut-off time is required for\
+ \ each business day that the fulfillment center operates. Any orders made\
+ \ after the specified cutOffTime on the specified day(s) of the\
+ \ week will be handled on the next day."
+ items:
+ $ref: "#/components/schemas/WeeklySchedule"
+ description: "This type is used by the createInventoryLocation call to\
+ \ specify cut-off time(s) for an inventory location, as well as any overrides\
+ \ for these times."
+ ShipToLocationAvailability:
+ type: "object"
+ properties:
+ availabilityDistributions:
+ type: "array"
+ description: "This container is used to set the available quantity of the\
+ \ inventory item at one or more warehouse locations.
This container\
+ \ will be returned if available quantity is set for one or more inventory\
+ \ locations."
+ items:
+ $ref: "#/components/schemas/AvailabilityDistribution"
+ quantity:
+ type: "integer"
+ description: "This container is used to set the total 'ship-to-home' quantity\
+ \ of the inventory item that will be available for purchase through one\
+ \ or more published offers.
This field represents the total quantity\
+ \ of the item that is available for sale across all marketplaces. To update\
+ \ the available quantity allocated to a specific marketplace, use the\
+ \ availableQuantity field in the offer container\
+ \ associated with that marketplace.
\
+ \ Note: To ensure that the available quantity allocated\
+ \ to a specific marketplace doesn't exceed the total available stock,\
+ \ the quantity specified on a listing will be the minimum value between\
+ \ this field and the availableQuantity field.
If an existing inventory\
+ \ item is being updated, and the 'ship-to-home' quantity already exists\
+ \ for the inventory item record, this field should be included again,\
+ \ even if the value is not changing, or the available quantity data will\
+ \ be lost.
Important! This field is not\
+ \ immediately required, but 'ship-to-home' quantity must be set before\
+ \ an offer of the inventory item can be published.
"
+ format: "int32"
+ description: "This type is used to specify the total 'ship-to-home' quantity\
+ \ of the inventory item that will be available for purchase through one or\
+ \ more published offers."
+ ShipToLocationAvailabilityWithAll:
+ type: "object"
+ properties:
+ allocationByFormat:
+ description: "This container is used to specify the quantity of the inventory\
+ \ item that is available for purchase, allocated by the offer types."
+ $ref: "#/components/schemas/FormatAllocation"
+ availabilityDistributions:
+ type: "array"
+ description: "This container is used to set the available quantity of the\
+ \ inventory item at one or more warehouse locations.
This container\
+ \ will be returned if the available quantity is set for one or more inventory\
+ \ locations."
+ items:
+ $ref: "#/components/schemas/AvailabilityDistribution"
+ quantity:
+ type: "integer"
+ description: "Important! Publish offer note:\
+ \ Although this field is not required before an offer can be published\
+ \ to create an active listing, out of stock listings will result if this\
+ \ field is omitted or set to 0.
This field is\
+ \ used to set the total 'ship-to-home' quantity of the inventory item\
+ \ that will be available for purchase through one or more published offers.\
+ \ This field is not immediately required, but 'ship-to-home' quantity\
+ \ must be set before an offer of the inventory item can be published.
If\
+ \ an existing inventory item is being updated, and the 'ship-to-home'\
+ \ quantity already exists for the inventory item record, this field should\
+ \ be included again, even if the value is not changing, or the available\
+ \ quantity data will be lost."
+ format: "int32"
+ description: "This type is used to specify the total 'ship-to-home' quantity\
+ \ of the inventory items that will be available for purchase through one or\
+ \ more published offers."
+ ShippingCostOverride:
+ type: "object"
+ properties:
+ additionalShippingCost:
+ description: "The dollar value passed into this field will override the\
+ \ additional shipping cost that is currently set for the applicable shipping\
+ \ service option. The \"Additional shipping cost\" is the cost to ship\
+ \ each additional identical product to the buyer using the corresponding\
+ \ shipping service. The shipping service option in the fulfillment policy\
+ \ to override is controlled by the shippingServiceType\
+ \ and priority values.
If using an updateOffer\
+ \ call, and this field is defined for the offer being updated, this field\
+ \ must be supplied again, even if its value is not changing.
This\
+ \ field is returned in the getOffer and getOffers calls if defined."
+ $ref: "#/components/schemas/Amount"
+ priority:
+ type: "integer"
+ description: "The integer value input into this field, along with the shippingServiceType\
+ \ value, sets which domestic or international shipping service option\
+ \ in the fulfillment policy will be modified with updated shipping costs.\
+ \ Specifically, the shippingCostOverrides.shippingServiceType\
+ \ value in a createOffer or updateOffer\
+ \ call must match the shippingOptions.optionType value\
+ \ in a fulfillment listing policy, and the shippingCostOverrides.priority\
+ \ value in a createOffer or updateOffer\
+ \ call must match the shippingOptions.shippingServices.sortOrderId\
+ \ value in a fulfillment listing policy.
This field is always required\
+ \ when overriding the shipping costs of a shipping service option, and\
+ \ will be always be returned for each shipping service option whose costs\
+ \ are being overridden."
+ format: "int32"
+ shippingCost:
+ description: "The dollar value passed into this field will override the\
+ \ shipping cost that is currently set for the applicable shipping service\
+ \ option. This value will be the cost to ship one item to the buyer using\
+ \ the corresponding shipping service. The shipping service option in\
+ \ the fulfillment policy to override is controlled by the shippingServiceType\
+ \ and priority values.
If using an updateOffer\
+ \ call, and this field is defined for the offer being updated, this field\
+ \ must be supplied again, even if its value is not changing.
This\
+ \ field is returned in the getOffer and getOffers calls if defined."
+ $ref: "#/components/schemas/Amount"
+ shippingServiceType:
+ type: "string"
+ description: "This enumerated value indicates whether the shipping service\
+ \ specified in the priority field is a domestic or an\
+ \ international shipping service option. To override the shipping costs\
+ \ for a specific domestic shipping service in the fulfillment listing\
+ \ policy, this field should be set to DOMESTIC, and to override\
+ \ the shipping costs for each international shipping service, this field\
+ \ should be set to INTERNATIONAL. This value, along with\
+ \ priority value, sets which domestic or international\
+ \ shipping service option in the fulfillment policy that will be modified\
+ \ with updated shipping costs. Specifically, the shippingCostOverrides.shippingServiceType\
+ \ value in a createOffer or updateOffer\
+ \ call must match the shippingOptions.optionType value\
+ \ in a fulfillment listing policy, and the shippingCostOverrides.priority\
+ \ value in a createOffer or updateOffer\
+ \ call must match the shippingOptions.shippingServices.sortOrderId\
+ \ value in a fulfillment listing policy.
This field is always required\
+ \ when overriding the shipping costs of a shipping service option, and\
+ \ will be always be returned for each shipping service option whose costs\
+ \ are being overridden. For implementation help, refer to eBay\
+ \ API documentation"
+ surcharge:
+ description: " Note: DO NOT USE\
+ \ THIS FIELD. Shipping surcharges for shipping service options can no\
+ \ longer be set with fulfillment business policies. To set a shipping\
+ \ surcharge for a shipping service option, only the Shipping rate tables\
+ \ tool in My eBay can be used.
The dollar value passed\
+ \ into this field will override the shipping surcharge that is currently\
+ \ set for the applicable shipping service option. The shipping service\
+ \ option in the fulfillment policy to override is controlled by the shippingServiceType\
+ \ and priority values.
If using an updateOffer\
+ \ call, and this field is defined for the offer being updated, this field\
+ \ must be supplied again, even if its value is not changing.
This\
+ \ field is returned in the getOffer and getOffers calls if defined."
+ $ref: "#/components/schemas/Amount"
+ description: "This type is used if the seller wants to override the shipping\
+ \ costs or surcharge associated with a specific domestic or international\
+ \ shipping service option defined in the fulfillment listing policy that is\
+ \ being applied toward the offer. The shipping-related costs that can be overridden\
+ \ include the shipping cost to ship one item, the shipping cost to ship each\
+ \ additional item (if multiple quantity are purchased), and the shipping surcharge\
+ \ applied to the shipping service option."
+ SpecialHours:
+ type: "object"
+ properties:
+ date:
+ type: "string"
+ description: "A date value is required for each specific\
+ \ date that the store location has special operating hours or is closed\
+ \ for that date.
The timestamp is formatted as an ISO 8601 string, which is based on the 24-hour\
+ \ Coordinated Universal Time (UTC) clock.
Format: [YYYY]-[MM]-[DD]T[hh]:[mm]:[ss].[sss]Z\
+ \
Example: 2025-08-04T00:00:00.000Z
This\
+ \ field is returned if set for the store location."
+ intervals:
+ type: "array"
+ description: "This array is used to set the operating hours for the date\
+ \ specified in the corresponding date field. These special\
+ \ operating hours on this specific date will override the normal operating\
+ \ hours for that day of the week that is specified through the operatingHours\
+ \ array.
To specify a location as closed on the corresponding\
+ \ date, include the intervals array\
+ \ as empty.
If a location closes for lunch (or any other period\
+ \ during the day) and then reopens, multiple open and\
+ \ close pairs are needed to specify each interval where\
+ \ the location is open.
This container is returned if set for\
+ \ the store location."
+ items:
+ $ref: "#/components/schemas/Interval"
+ description: "This type is used to express the special operating hours of a\
+ \ store location on a specific date. A specialHours container\
+ \ is needed when the store's opening hours on a specific date are different\
+ \ than the normal operating hours on that particular day of the week."
+ Specification:
+ type: "object"
+ properties:
+ name:
+ type: "string"
+ description: "This is the name of product variation aspect. Typically, for\
+ \ clothing, typical aspect names are \"Size\" and \"\
+ Color\". Product variation aspects are not required immediately\
+ \ upon creating an inventory item group, but these aspects will be required\
+ \ before a multiple-variation listing containing this inventory item group\
+ \ is published. For each product variation aspect that is specified through\
+ \ the specifications container, one name\
+ \ value is required and two or more variations of this aspect are required\
+ \ through the values array.
Note: Each member of the inventory item group should\
+ \ have these same aspect names specified through the product.aspects\
+ \ container when the inventory item is created with the createOrReplaceInventoryItem\
+ \ or bulkCreateOrReplaceInventoryItem call.
Important!Publish\
+ \ offer note: This field is required before an offer can be published\
+ \ to create an active listing.
Max Length:\
+ \ 40"
+ values:
+ type: "array"
+ description: "This is an array of values pertaining to the corresponding\
+ \ product variation aspect (specified in the name field).\
+ \ Below is a sample of how these values will appear under a specifications\
+ \ container:
\"specifications\": [{
\"name\": \"Size\"\
+ ,
\"values\": [\"Small\",
\"Medium\",
\"Large\"]
},
\
+ \ {
\"name\": \"Color\",
\"values\": [\"Blue\",
\"White\"\
+ ,
\"Red\"]
}]
Note:\
+ \ Each member of the inventory item group should have these same aspect\
+ \ names, and each individual inventory item should have each variation\
+ \ of the product aspect values specified through the product.aspects\
+ \ container when the inventory item is created with the createOrReplaceInventoryItem\
+ \ or bulkCreateOrReplaceInventoryItem call.
Important!Publish\
+ \ offer note: This array is required and at least one value that matches\
+ \ the corresponding aspect name must be specified.
Max\
+ \ Length: 50"
+ items:
+ type: "string"
+ description: "This type is used to specify product aspects for which variations\
+ \ within an inventory item group vary, and the order in which they appear\
+ \ in the listing. For example, t-shirts in an inventory item group may be\
+ \ available in multiple sizes and colors."
+ Tax:
+ type: "object"
+ properties:
+ applyTax:
+ type: "boolean"
+ description: "When set to true, the seller's account-level\
+ \ sales-tax table will be used to calculate sales tax for an order.
Note: Sales-tax tables are available only\
+ \ for the US and Canada marketplaces.
Important!\
+ \ In the US, eBay now calculates, collects, and remits sales tax to the\
+ \ proper taxing authorities in all 50 states and Washington, DC. Sellers\
+ \ can no longer specify sales-tax rates for these jurisdictions using\
+ \ a tax table.
However, sellers may continue to use a sales-tax\
+ \ table to set rates for the following US territories:
- American\
+ \ Samoa (AS)
- Guam (GU)
- Northern Mariana Islands (MP)
- Palau\
+ \ (PW)
- US Virgin Islands (VI)
For complete\
+ \ information about using sales-tax tables, refer to Establishing sales-tax tables.
Note that\
+ \ a seller can enable the use of a sales-tax table, but if a sales-tax\
+ \ rate is not specified for the buyer's tax jurisdiction, sales tax will\
+ \ not be applied to the order.
When a thirdPartyTaxCategory\
+ \ value is used, applyTax must also be set to true.
This\
+ \ field will be returned by getOffer and getOffers if set for the offer.
For additional information,\
+ \ refer to Taxes and import charges."
+ thirdPartyTaxCategory:
+ type: "string"
+ description: "The tax exception category code. If this field is used, sales\
+ \ tax will also apply to a service/fee, and not just the item price. This\
+ \ is to be used only by sellers who have opted into sales tax being calculated\
+ \ by a sales tax calculation vendor. If you are interested in becoming\
+ \ a tax calculation vendor partner with eBay, contact developer-relations@ebay.com. One supported value for this field\
+ \ is WASTE_RECYCLING_FEE. If this field is used, the applyTax\
+ \ field must also be used and set to true
This field\
+ \ will be returned by getOffer and getOffers if set for the offer."
+ vatPercentage:
+ type: "number"
+ description: "This value is the Value Add Tax (VAT) rate for the item, if\
+ \ any. When a VAT percentage is specified, the item's VAT information\
+ \ appears on the listing's View Item page. In addition, the seller can\
+ \ choose to print an invoice that includes the item's net price, VAT percent,\
+ \ VAT amount, and total price. Since VAT rates vary depending on the item\
+ \ and on the user's country of residence, a seller is responsible for\
+ \ entering the correct VAT rate; it is not calculated by eBay.
To\
+ \ use VAT, a seller must be a business seller with a VAT-ID registered\
+ \ with eBay, and must be listing the item on a VAT-enabled site. Max applicable\
+ \ length is 6 characters, including the decimal (e.g., 12.345). The scale\
+ \ is 3 decimal places. (If you pass in 12.3456, eBay may round up the\
+ \ value to 12.346).
This field will be returned by getOffer and getOffers if set for the offer."
+ description: "This type is used to enable the use of a sales-tax table, to pass\
+ \ in a tax exception category code, or to specify a VAT percentage.
Note: Sales-tax tables are available only for\
+ \ the US and Canada marketplaces."
+ TimeDuration:
+ type: "object"
+ properties:
+ unit:
+ type: "string"
+ description: "This enumeration value indicates the time unit used to specify\
+ \ the fulfillment time, such as BUSINESS_DAY. For implementation\
+ \ help, refer to eBay\
+ \ API documentation"
+ value:
+ type: "integer"
+ description: "The integer value in this field, along with the time unit\
+ \ in the unit field, will indicate the fulfillment time.
For\
+ \ standard orders that will be shipped, this value will indicate the expected\
+ \ fulfillment time if the inventory item is shipped from the inventory\
+ \ location. If the value of this field is 4, and the value\
+ \ of the unit field is BUSINESS_DAY, then\
+ \ the estimated delivery date after purchase is 4 business days."
+ format: "int32"
+ description: "This type is used to indicate the fulfillment time for an In-Store\
+ \ Pickup order, or for an order than will be shipped to the buyer."
+ VariesBy:
+ type: "object"
+ properties:
+ aspectsImageVariesBy:
+ type: "array"
+ description: "This container is used if the seller wants to include multiple\
+ \ images to demonstrate how variations within a multiple-variation listing\
+ \ differ. In this string field, the seller will specify the product aspect\
+ \ where the variations of the inventory item group vary, such as color.\
+ \ If Color is specified in this field, Color\
+ \ must also be one of the specifications.name values,\
+ \ and all available colors must appear in the corresponding specifications.values\
+ \ array.
If the aspectsImageVariesBy container\
+ \ is used, links to images of each variation should be specified through\
+ \ the imageUrls container of the inventory item group,\
+ \ or the seller can choose to include those links to images in each inventory\
+ \ item record for the inventory items in the group.
Important!Publish\
+ \ offer note: This array is required and at least one aspect (such as\
+ \ Color) must be specified before an offer can be published\
+ \ to create an active listing.
"
+ items:
+ type: "string"
+ specifications:
+ type: "array"
+ description: "This container consists of an array of one or more product\
+ \ aspects where each variation differs, and values for each of those product\
+ \ aspects. This container is not immediately required, but will be required\
+ \ before the first offer of the inventory item group is published.
If\
+ \ a product aspect is specified in the aspectsImageVariesBy\
+ \ container, this product aspect (along with all variations of that product\
+ \ aspect) must be included in the specifications container.\
+ \ Before offers related to the inventory item group are published, the\
+ \ product aspects and values specified through the specifications\
+ \ container should be in synch with the name-value pairs specified through\
+ \ the product.aspects containers of the inventory items\
+ \ contained in the group. For example, if Color and Size\
+ \ are in this specifications container, each inventory\
+ \ item of the group should also have Color and Size\
+ \ as aspect names in their inventory item records.
This container\
+ \ is always returned if one or more offers associated with the inventory\
+ \ item group have been published. For inventory item groups that have\
+ \ yet to have any published offers, this container is only returned if\
+ \ set.
Important!Publish offer note:\
+ \ This array is required and at least one aspect with the available variations\
+ \ must be specified.
"
+ items:
+ $ref: "#/components/schemas/Specification"
+ description: "This type is used to specify the product aspect(s) where individual\
+ \ items of the group vary, as well as a list of the available variations of\
+ \ those aspects."
+ Version:
+ type: "object"
+ properties:
+ instance:
+ description: "The instance of the version."
+ $ref: "#/components/schemas/Version"
+ version:
+ type: "string"
+ description: "The version number of the service or API."
+ description: "This type is used to show the version number and instance of the\
+ \ service or API."
+ WeeklySchedule:
+ type: "object"
+ properties:
+ cutOffTime:
+ type: "string"
+ description: "This field specifies the cut-off times (in 24-hour format)\
+ \ for the business day(s) specified in the dayOfWeekEnum array.
Cut-off\
+ \ times default to the time zone of the specified address if the timeZoneId\
+ \ is not provided.
Note: If cut-off\
+ \ hours are not specified for a particular day, the fulfillment center\
+ \ is considered to be on holiday for that day.
Format:\
+ \ 00:00"
+ dayOfWeekEnum:
+ type: "array"
+ description: "This comma-separated array defines the days of week for which\
+ \ the specified cutOffTime is used."
+ items:
+ type: "string"
+ description: " For implementation help, refer to eBay\
+ \ API documentation"
+ description: "This type describes the weekly schedule for cut-off times."
+ Weight:
+ type: "object"
+ properties:
+ unit:
+ type: "string"
+ description: "The unit of measurement used to specify the weight of a shipping\
+ \ package. Both the unit and value fields\
+ \ are required if the weight container is used. If the\
+ \ English system of measurement is being used, the applicable values for\
+ \ weight units are POUND and OUNCE. If the metric\
+ \ system of measurement is being used, the applicable values for weight\
+ \ units are KILOGRAM and GRAM. The metric system\
+ \ is used by most countries outside of the US. For implementation help,\
+ \ refer to eBay\
+ \ API documentation"
+ value:
+ type: "number"
+ description: "The actual weight (in the measurement unit specified in the\
+ \ unit field) of the shipping package. Both the unit\
+ \ and value fields are required if the weight\
+ \ container is used. If a shipping package weighed 20.5 ounces, the container\
+ \ would look as follows:
\"weight\": {
\"value\": 20.5,
\
+ \ \"unit\": \"OUNCE\"
}"
+ description: "This type is used to specify the weight (and the unit used to\
+ \ measure that weight) of a shipping package. The weight\
+ \ container is conditionally required if the seller will be offering calculated\
+ \ shipping rates to determine shipping cost, or is using flat-rate costs,\
+ \ but charging a weight surcharge. See the Calculated shipping help page for more information\
+ \ on calculated shipping."
+ WithdrawByInventoryItemGroupRequest:
+ type: "object"
+ properties:
+ inventoryItemGroupKey:
+ type: "string"
+ description: "This is the unique identifier of the inventory item group.\
+ \ This identifier is automatically generated by eBay once an inventory\
+ \ item group is created.
To retrieve an inventoryItemGroupKey\
+ \ value, you can use the getInventoryItem method to retrieve an inventory\
+ \ item that is known to be in the inventory item group to publish, and\
+ \ then look for the inventory item group identifier under the groupIds\
+ \ container in the response of that call."
+ marketplaceId:
+ type: "string"
+ description: "This is the unique identifier of the eBay site for which the\
+ \ offer will be made available. See MarketplaceEnum for supported\
+ \ values. For implementation help, refer to eBay\
+ \ API documentation"
+ description: "This type is used by the base request of the WithdrawByInventoryItemGroup\
+ \ method, which is used to end a multiple-variation listing."
+ WithdrawResponse:
+ type: "object"
+ properties:
+ listingId:
+ type: "string"
+ description: "The unique identifier of the eBay listing associated with\
+ \ the offer that was withdrawn. This field will not be returned if the\
+ \ eBay listing was not successfully ended."
+ warnings:
+ type: "array"
+ description: "This container will be returned if there were one or more\
+ \ warnings associated with the attempt to withdraw the offer."
+ items:
+ $ref: "#/components/schemas/Error"
+ description: "The base response of the withdrawOffer call."
+ securitySchemes:
+ api_auth:
+ type: "oauth2"
+ description: "The security definitions for this API. Please check individual\
+ \ operations for applicable scopes."
+ flows:
+ authorizationCode:
+ authorizationUrl: "https://auth.ebay.com/oauth2/authorize"
+ tokenUrl: "https://api.ebay.com/identity/v1/oauth2/token"
+ scopes:
+ https://api.ebay.com/oauth/api_scope/sell.inventory: "View and manage\
+ \ your inventory and offers"
+ https://api.ebay.com/oauth/api_scope/sell.inventory.readonly: "View your\
+ \ inventory and offers"
diff --git a/tests/test_auth_oauth.py b/tests/test_auth_oauth.py
new file mode 100644
index 0000000..e711b5a
--- /dev/null
+++ b/tests/test_auth_oauth.py
@@ -0,0 +1,35 @@
+from __future__ import annotations
+
+from urllib.parse import parse_qs, urlparse
+
+from ebay_client.core.auth.models import EbayOAuthConfig, OAuthToken
+from ebay_client.core.auth.oauth import EbayOAuthClient
+from ebay_client.core.auth.store import InMemoryTokenStore
+
+
+def test_build_authorization_url_uses_configured_scopes() -> None:
+ config = EbayOAuthConfig(
+ client_id="client-id",
+ client_secret="client-secret",
+ redirect_uri="https://example.test/callback",
+ default_scopes=["scope.a", "scope.b"],
+ )
+ client = EbayOAuthClient(config)
+
+ url = client.build_authorization_url(state="state-1")
+ query = parse_qs(urlparse(url).query)
+
+ assert query["client_id"] == ["client-id"]
+ assert query["state"] == ["state-1"]
+ assert query["scope"] == ["scope.a scope.b"]
+
+
+def test_get_valid_token_reuses_unexpired_token() -> None:
+ config = EbayOAuthConfig(client_id="client-id", client_secret="client-secret")
+ store = InMemoryTokenStore()
+ store.set_token(OAuthToken(access_token="cached-token", scope="scope.a"))
+ client = EbayOAuthClient(config, token_store=store)
+
+ token = client.get_valid_token(scopes=["scope.a"])
+
+ assert token.access_token == "cached-token"
diff --git a/tests/test_notification_webhook.py b/tests/test_notification_webhook.py
new file mode 100644
index 0000000..7098247
--- /dev/null
+++ b/tests/test_notification_webhook.py
@@ -0,0 +1,24 @@
+from __future__ import annotations
+
+from ebay_client.notification.webhook import WebhookChallengeHandler, WebhookSignatureParser
+
+
+def test_challenge_handler_builds_sha256_response() -> None:
+ response = WebhookChallengeHandler.build_challenge_response(
+ challenge_code="challenge",
+ verification_token="verification",
+ endpoint="https://example.test/webhook",
+ )
+
+ assert len(response) == 64
+
+
+def test_signature_parser_extracts_known_fields() -> None:
+ parser = WebhookSignatureParser()
+
+ parsed = parser.parse("kid=public-key-1,alg=ECDSA,digest=SHA256,sig=Zm9v")
+
+ assert parsed.key_id == "public-key-1"
+ assert parsed.algorithm == "ECDSA"
+ assert parsed.digest == "SHA256"
+ assert parsed.signature == b"foo"
\ No newline at end of file