ebay-mcp 1.18.0 → 1.18.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (161) hide show
  1. package/README.md +24 -35
  2. package/build/api/account-management/accountV2.js +22 -22
  3. package/build/api/account-management/finances.js +10 -10
  4. package/build/api/analytics-and-report/analytics.js +1 -1
  5. package/build/api/{client.js → client/ebayApiClient.js} +37 -41
  6. package/build/api/{clientTrading.js → client/tradingApiClient.js} +22 -22
  7. package/build/api/communication/feedback.js +21 -21
  8. package/build/api/communication/message.js +23 -23
  9. package/build/api/communication/negotiation.js +7 -7
  10. package/build/api/communication/notification.js +52 -52
  11. package/build/api/developer/developer.js +3 -3
  12. package/build/api/{index.js → ebaySellerApi.js} +4 -4
  13. package/build/api/listing-management/feedReportTasks.js +6 -6
  14. package/build/api/listing-management/feedRequest.js +6 -6
  15. package/build/api/listing-management/feedSchedules.js +4 -4
  16. package/build/api/listing-management/feedTasks.js +2 -2
  17. package/build/api/listing-management/items.js +22 -22
  18. package/build/api/listing-management/locations.js +4 -4
  19. package/build/api/listing-management/media.js +14 -14
  20. package/build/api/listing-management/mediaAttach.js +14 -14
  21. package/build/api/listing-management/mediaResources.js +15 -13
  22. package/build/api/listing-management/offerFormat.js +1 -1
  23. package/build/api/listing-management/offers.js +23 -23
  24. package/build/api/listing-management/stores.js +9 -9
  25. package/build/api/listing-metadata/metadata.js +10 -10
  26. package/build/api/marketing-and-promotions/ads.js +34 -34
  27. package/build/api/marketing-and-promotions/campaigns.js +19 -19
  28. package/build/api/marketing-and-promotions/promotions.js +22 -22
  29. package/build/api/marketing-and-promotions/reports.js +7 -7
  30. package/build/api/order-management/dispute.js +11 -9
  31. package/build/api/order-management/fulfillment.js +4 -4
  32. package/build/api/order-management/logistics.js +7 -7
  33. package/build/api/other/browseMappers.js +15 -13
  34. package/build/api/other/browseValidators.js +4 -4
  35. package/build/api/other/edelivery.js +19 -19
  36. package/build/api/other/finding.js +13 -13
  37. package/build/api/other/translation.js +2 -2
  38. package/build/api/other/vero.js +2 -2
  39. package/build/api/shared/download.js +7 -7
  40. package/build/api/shared/request.js +28 -19
  41. package/build/api/trading/listingFormat.js +37 -30
  42. package/build/api/trading/trading.js +33 -33
  43. package/build/auth/credentialSession.js +5 -5
  44. package/build/auth/oauth.js +3 -3
  45. package/build/auth/oauthHelper.js +24 -24
  46. package/build/auth/oauthMetadata.js +4 -4
  47. package/build/auth/oauthMiddleware.js +16 -16
  48. package/build/auth/scopeUtils.js +2 -2
  49. package/build/auth/tokenVerifier.js +23 -23
  50. package/build/config/environment.js +4 -45
  51. package/build/config/oauthScopes.js +132 -0
  52. package/build/index.js +5 -5
  53. package/build/mcp/httpTransport.js +32 -20
  54. package/build/mcp/runtime.js +12 -12
  55. package/build/mcp/toolGating.js +6 -12
  56. package/build/mcp/uiBridge.js +3 -3
  57. package/build/schemas/account-management/account.js +2 -52
  58. package/build/schemas/account-management/accountV2.js +2 -2
  59. package/build/schemas/account-management/finances.js +1 -1
  60. package/build/schemas/analytics/analytics.js +2 -48
  61. package/build/schemas/communication/messages.js +2 -46
  62. package/build/schemas/developer/developer.js +1 -27
  63. package/build/schemas/fulfillment/logistics.js +1 -1
  64. package/build/schemas/fulfillment/orders.js +2 -47
  65. package/build/schemas/inventory-management/feed.js +1 -1
  66. package/build/schemas/inventory-management/inventory.js +2 -50
  67. package/build/schemas/inventory-management/media.js +2 -2
  68. package/build/schemas/inventory-management/mediaDocuments.js +1 -1
  69. package/build/schemas/inventory-management/stores.js +1 -1
  70. package/build/schemas/marketing/ads.js +2 -2
  71. package/build/schemas/marketing/campaigns.js +2 -2
  72. package/build/schemas/marketing/common.js +2 -2
  73. package/build/schemas/marketing/marketing.js +0 -1
  74. package/build/schemas/marketing/promotions.js +2 -2
  75. package/build/schemas/marketing/reports.js +2 -2
  76. package/build/schemas/metadata/metadata.js +2 -90
  77. package/build/schemas/metadata/shipping.js +1 -1
  78. package/build/schemas/other/browse.js +2 -2
  79. package/build/schemas/other/finding.js +2 -2
  80. package/build/schemas/other/otherApis.js +2 -114
  81. package/build/schemas/taxonomy/categoryTree.js +1 -1
  82. package/build/schemas/taxonomy/charity.js +1 -1
  83. package/build/schemas/taxonomy/taxonomy.js +2 -69
  84. package/build/scripts/autoSetup.js +3 -3
  85. package/build/scripts/{buildUi.js → buildMcpApps.js} +13 -13
  86. package/build/scripts/devSync.js +19 -68
  87. package/build/scripts/diagnostics.js +15 -16
  88. package/build/scripts/interactiveSetup.js +25 -25
  89. package/build/scripts/scopeHelper.js +2 -2
  90. package/build/scripts/securityChecker.js +20 -20
  91. package/build/scripts/setup.js +76 -76
  92. package/build/scripts/setupShared.js +5 -30
  93. package/build/scripts/setupValidator.js +9 -9
  94. package/build/scripts/setupWizard.js +23 -23
  95. package/build/scripts/skills.js +14 -17
  96. package/build/scripts/specRefs.js +1 -1
  97. package/build/scripts/specSources.js +144 -0
  98. package/build/serverHttp.js +4 -7
  99. package/build/skills/content.js +13 -13
  100. package/build/skills/install.js +9 -9
  101. package/build/skills/render.js +2 -2
  102. package/build/tools/categories/communication.js +1 -1
  103. package/build/tools/categories/connector.js +19 -16
  104. package/build/tools/categories/fulfillment.js +4 -4
  105. package/build/tools/categories/inventory.js +1 -1
  106. package/build/tools/categories/metadata.js +1 -1
  107. package/build/tools/categories/taxonomy.js +1 -1
  108. package/build/tools/categories/tokenManagement.js +8 -8
  109. package/build/tools/contracts.js +2 -2
  110. package/build/tools/defineTool.js +27 -12
  111. package/build/tools/registry.js +2 -2
  112. package/build/tools/schemas.js +2 -2
  113. package/build/tools/ui/mapHelpers.js +12 -12
  114. package/build/tools/ui/maps.js +101 -97
  115. package/build/tools/ui/viewModels.js +2 -2
  116. package/build/utils/apiStatusFeed.js +12 -12
  117. package/build/utils/communication/feedback.js +3 -3
  118. package/build/utils/communication/message.js +3 -3
  119. package/build/utils/communication/negotiation.js +3 -3
  120. package/build/utils/communication/notification.js +3 -3
  121. package/build/utils/entryModule.js +33 -0
  122. package/build/utils/envFile.js +47 -0
  123. package/build/utils/envParser.js +5 -5
  124. package/build/utils/errors.js +4 -4
  125. package/build/utils/http.js +38 -38
  126. package/build/utils/localFeedFiles.js +3 -3
  127. package/build/utils/logRedaction.js +21 -0
  128. package/build/utils/logger.js +49 -35
  129. package/build/utils/other/compliance.js +3 -3
  130. package/build/utils/other/identity.js +3 -3
  131. package/build/utils/other/translation.js +3 -3
  132. package/build/utils/other/vero.js +3 -3
  133. package/build/utils/schemaHelpers.js +2 -2
  134. package/build/utils/tokenUtils.js +2 -2
  135. package/build/utils/trading/trading.js +1 -1
  136. package/build/utils/version.js +1 -1
  137. package/build/utils/zodIssues.js +14 -0
  138. package/package.json +8 -11
  139. package/README.de.md +0 -426
  140. package/README.es.md +0 -426
  141. package/README.fr.md +0 -426
  142. package/README.ja.md +0 -426
  143. package/README.ko.md +0 -426
  144. package/README.pt-BR.md +0 -426
  145. package/README.ru.md +0 -426
  146. package/README.zh-CN.md +0 -426
  147. package/build/schemas/index.js +0 -76
  148. package/build/schemas/marketing/jsonSchemas.js +0 -118
  149. package/build/scripts/downloadSpecs.js +0 -117
  150. package/build/scripts/updateApiStatusDoc.js +0 -71
  151. package/build/utils/effectSchema.js +0 -203
  152. package/build/utils/effectSchemaAdapter.js +0 -121
  153. package/build/utils/effectSchemaChainMethods.js +0 -146
  154. package/build/utils/effectSchemaRefinements.js +0 -104
  155. package/build/utils/effectSchemaStringMethods.js +0 -63
  156. package/build/utils/effectSchemaTypes.js +0 -47
  157. package/docs/auth/production_scopes.json +0 -111
  158. package/docs/auth/sandbox_scopes.json +0 -142
  159. /package/build/api/{clientRequestError.js → client/ebayClientRequestError.js} +0 -0
  160. /package/build/api/{rateLimitTracker.js → client/rateLimitTracker.js} +0 -0
  161. /package/build/api/{clientTradingError.js → client/tradingApiFailure.js} +0 -0
@@ -2,7 +2,7 @@ import { buildEndpointParams, optionalNonNegativeNumberEffect, optionalPositiveN
2
2
  import { Effect } from 'effect';
3
3
  /**
4
4
  * Feedback API - Manage buyer and seller feedback
5
- * Based on: docs/sell-apps/communication/commerce_feedback_v1_beta_oas3.json
5
+ * Based on: commerce_feedback_v1_beta_oas3.json
6
6
  */
7
7
  export class FeedbackApi {
8
8
  client;
@@ -61,17 +61,17 @@ export class FeedbackApi {
61
61
  const client = this.client;
62
62
  const path = `${this.basePath}/feedback`;
63
63
  return Effect.gen(function* () {
64
- const request = yield* requireObjectEffect(input, 'input');
65
- const userId = yield* requireStringEffect(request.userId, 'userId');
66
- const feedbackType = yield* requireStringEffect(request.feedbackType, 'feedbackType');
67
- const feedbackId = yield* optionalStringEffect(request.feedbackId, 'feedbackId');
68
- const filter = yield* optionalStringEffect(request.filter, 'filter');
69
- const limit = yield* optionalPositiveNumberEffect(request.limit, 'limit');
70
- const listingId = yield* optionalStringEffect(request.listingId, 'listingId');
71
- const offset = yield* optionalNonNegativeNumberEffect(request.offset, 'offset');
72
- const orderLineItemId = yield* optionalStringEffect(request.orderLineItemId, 'orderLineItemId');
73
- const sort = yield* optionalStringEffect(request.sort, 'sort');
74
- const transactionId = yield* optionalStringEffect(request.transactionId, 'transactionId');
64
+ const validatedInput = yield* requireObjectEffect(input, 'input');
65
+ const userId = yield* requireStringEffect(validatedInput.userId, 'userId');
66
+ const feedbackType = yield* requireStringEffect(validatedInput.feedbackType, 'feedbackType');
67
+ const feedbackId = yield* optionalStringEffect(validatedInput.feedbackId, 'feedbackId');
68
+ const filter = yield* optionalStringEffect(validatedInput.filter, 'filter');
69
+ const limit = yield* optionalPositiveNumberEffect(validatedInput.limit, 'limit');
70
+ const listingId = yield* optionalStringEffect(validatedInput.listingId, 'listingId');
71
+ const offset = yield* optionalNonNegativeNumberEffect(validatedInput.offset, 'offset');
72
+ const orderLineItemId = yield* optionalStringEffect(validatedInput.orderLineItemId, 'orderLineItemId');
73
+ const sort = yield* optionalStringEffect(validatedInput.sort, 'sort');
74
+ const transactionId = yield* optionalStringEffect(validatedInput.transactionId, 'transactionId');
75
75
  const params = buildEndpointParams({
76
76
  userId: { wireName: 'user_id', value: userId },
77
77
  feedbackType: { wireName: 'feedback_type', value: feedbackType },
@@ -109,9 +109,9 @@ export class FeedbackApi {
109
109
  const client = this.client;
110
110
  const path = `${this.basePath}/feedback_rating_summary`;
111
111
  return Effect.gen(function* () {
112
- const request = yield* requireObjectEffect(input, 'input');
113
- const userId = yield* requireStringEffect(request.userId, 'userId');
114
- const filter = yield* requireStringEffect(request.filter, 'filter');
112
+ const validatedInput = yield* requireObjectEffect(input, 'input');
113
+ const userId = yield* requireStringEffect(validatedInput.userId, 'userId');
114
+ const filter = yield* requireStringEffect(validatedInput.filter, 'filter');
115
115
  const params = buildEndpointParams({
116
116
  userId: { wireName: 'user_id', value: userId },
117
117
  filter: { wireName: 'filter', value: filter },
@@ -138,14 +138,14 @@ export class FeedbackApi {
138
138
  const client = this.client;
139
139
  const path = `${this.basePath}/feedback`;
140
140
  return Effect.gen(function* () {
141
- const body = yield* requireObjectEffect(feedbackData, 'feedbackData');
142
- return yield* requestPostEffect(client, path, body);
141
+ const feedbackRequest = yield* requireObjectEffect(feedbackData, 'feedbackData');
142
+ return yield* requestPostEffect(client, path, feedbackRequest);
143
143
  });
144
144
  };
145
145
  /**
146
146
  * Responds to feedback received from another eBay user.
147
147
  *
148
- * @param response - Generated RespondToFeedbackRequest body.
148
+ * @param feedbackReply - Generated RespondToFeedbackRequest body.
149
149
  * @returns An Effect that succeeds with eBay's generated empty response.
150
150
  *
151
151
  * @example
@@ -157,12 +157,12 @@ export class FeedbackApi {
157
157
  *
158
158
  * @see https://developer.ebay.com/api-docs/commerce/feedback/resources/respond_to_feedback/methods/respondToFeedback
159
159
  */
160
- respondToFeedback = (response) => {
160
+ respondToFeedback = (feedbackReply) => {
161
161
  const client = this.client;
162
162
  const path = `${this.basePath}/respond_to_feedback`;
163
163
  return Effect.gen(function* () {
164
- const body = yield* requireObjectEffect(response, 'response');
165
- return yield* requestPostEffect(client, path, body);
164
+ const replyRequest = yield* requireObjectEffect(feedbackReply, 'feedbackReply');
165
+ return yield* requestPostEffect(client, path, replyRequest);
166
166
  });
167
167
  };
168
168
  }
@@ -2,7 +2,7 @@ import { buildEndpointParams, optionalNonNegativeNumberEffect, optionalPositiveN
2
2
  import { Effect } from 'effect';
3
3
  /**
4
4
  * Message API - Buyer-seller messaging
5
- * Based on: docs/sell-apps/communication/commerce_message_v1_oas3.json
5
+ * Based on: commerce_message_v1_oas3.json
6
6
  */
7
7
  export class MessageApi {
8
8
  client;
@@ -18,7 +18,7 @@ export class MessageApi {
18
18
  *
19
19
  * @example
20
20
  * ```ts
21
- * const result = await Effect.runPromise(
21
+ * const updatedConversations = await Effect.runPromise(
22
22
  * messageApi.bulkUpdateConversation({ conversations: [{ conversationId: 'c1' }] }),
23
23
  * );
24
24
  * ```
@@ -29,8 +29,8 @@ export class MessageApi {
29
29
  const client = this.client;
30
30
  const path = `${this.basePath}/bulk_update_conversation`;
31
31
  return Effect.gen(function* () {
32
- const body = yield* requireObjectEffect(updateData, 'updateData');
33
- return yield* requestPostEffect(client, path, body);
32
+ const bulkUpdateRequest = yield* requireObjectEffect(updateData, 'updateData');
33
+ return yield* requestPostEffect(client, path, bulkUpdateRequest);
34
34
  });
35
35
  };
36
36
  /**
@@ -52,16 +52,16 @@ export class MessageApi {
52
52
  const client = this.client;
53
53
  const path = `${this.basePath}/conversation`;
54
54
  return Effect.gen(function* () {
55
- const request = yield* requireObjectEffect(input, 'input');
56
- const conversationType = yield* requireStringEffect(request.conversationType, 'conversationType');
57
- const conversationStatus = yield* optionalStringEffect(request.conversationStatus, 'conversationStatus');
58
- const endTime = yield* optionalStringEffect(request.endTime, 'endTime');
59
- const limit = yield* optionalPositiveNumberEffect(request.limit, 'limit');
60
- const offset = yield* optionalNonNegativeNumberEffect(request.offset, 'offset');
61
- const otherPartyUsername = yield* optionalStringEffect(request.otherPartyUsername, 'otherPartyUsername');
62
- const referenceId = yield* optionalStringEffect(request.referenceId, 'referenceId');
63
- const referenceType = yield* optionalStringEffect(request.referenceType, 'referenceType');
64
- const startTime = yield* optionalStringEffect(request.startTime, 'startTime');
55
+ const validatedInput = yield* requireObjectEffect(input, 'input');
56
+ const conversationType = yield* requireStringEffect(validatedInput.conversationType, 'conversationType');
57
+ const conversationStatus = yield* optionalStringEffect(validatedInput.conversationStatus, 'conversationStatus');
58
+ const endTime = yield* optionalStringEffect(validatedInput.endTime, 'endTime');
59
+ const limit = yield* optionalPositiveNumberEffect(validatedInput.limit, 'limit');
60
+ const offset = yield* optionalNonNegativeNumberEffect(validatedInput.offset, 'offset');
61
+ const otherPartyUsername = yield* optionalStringEffect(validatedInput.otherPartyUsername, 'otherPartyUsername');
62
+ const referenceId = yield* optionalStringEffect(validatedInput.referenceId, 'referenceId');
63
+ const referenceType = yield* optionalStringEffect(validatedInput.referenceType, 'referenceType');
64
+ const startTime = yield* optionalStringEffect(validatedInput.startTime, 'startTime');
65
65
  const params = buildEndpointParams({
66
66
  conversationType: { wireName: 'conversation_type', value: conversationType },
67
67
  conversationStatus: { wireName: 'conversation_status', value: conversationStatus },
@@ -95,11 +95,11 @@ export class MessageApi {
95
95
  const client = this.client;
96
96
  const basePath = this.basePath;
97
97
  return Effect.gen(function* () {
98
- const request = yield* requireObjectEffect(input, 'input');
99
- const conversationId = yield* requireStringEffect(request.conversationId, 'conversationId');
100
- const conversationType = yield* requireStringEffect(request.conversationType, 'conversationType');
101
- const limit = yield* optionalPositiveNumberEffect(request.limit, 'limit');
102
- const offset = yield* optionalNonNegativeNumberEffect(request.offset, 'offset');
98
+ const validatedInput = yield* requireObjectEffect(input, 'input');
99
+ const conversationId = yield* requireStringEffect(validatedInput.conversationId, 'conversationId');
100
+ const conversationType = yield* requireStringEffect(validatedInput.conversationType, 'conversationType');
101
+ const limit = yield* optionalPositiveNumberEffect(validatedInput.limit, 'limit');
102
+ const offset = yield* optionalNonNegativeNumberEffect(validatedInput.offset, 'offset');
103
103
  const params = buildEndpointParams({
104
104
  conversationType: { wireName: 'conversation_type', value: conversationType },
105
105
  limit: { wireName: 'limit', value: limit },
@@ -127,8 +127,8 @@ export class MessageApi {
127
127
  const client = this.client;
128
128
  const path = `${this.basePath}/send_message`;
129
129
  return Effect.gen(function* () {
130
- const body = yield* requireObjectEffect(messageData, 'messageData');
131
- return yield* requestPostEffect(client, path, body);
130
+ const messageRequest = yield* requireObjectEffect(messageData, 'messageData');
131
+ return yield* requestPostEffect(client, path, messageRequest);
132
132
  });
133
133
  };
134
134
  /**
@@ -150,8 +150,8 @@ export class MessageApi {
150
150
  const client = this.client;
151
151
  const path = `${this.basePath}/update_conversation`;
152
152
  return Effect.gen(function* () {
153
- const body = yield* requireObjectEffect(updateData, 'updateData');
154
- return yield* requestPostEffect(client, path, body);
153
+ const conversationUpdate = yield* requireObjectEffect(updateData, 'updateData');
154
+ return yield* requestPostEffect(client, path, conversationUpdate);
155
155
  });
156
156
  };
157
157
  }
@@ -2,7 +2,7 @@ import { buildEndpointParams, optionalNonNegativeNumberEffect, optionalPositiveN
2
2
  import { Effect } from 'effect';
3
3
  /**
4
4
  * Negotiation API - Buyer-seller negotiations and offers
5
- * Based on: docs/sell-apps/communication/sell_negotiation_v1_oas3.json
5
+ * Based on: sell_negotiation_v1_oas3.json
6
6
  */
7
7
  export class NegotiationApi {
8
8
  basePath = '/sell/negotiation/v1';
@@ -29,8 +29,8 @@ export class NegotiationApi {
29
29
  const apiClient = this.client;
30
30
  const path = `${this.basePath}/find_eligible_items`;
31
31
  return Effect.gen(function* () {
32
- const request = yield* requireObjectEffect(input, 'input');
33
- const { marketplaceId: inputMarketplaceId, limit: inputLimit, offset: inputOffset } = request;
32
+ const validatedInput = yield* requireObjectEffect(input, 'input');
33
+ const { marketplaceId: inputMarketplaceId, limit: inputLimit, offset: inputOffset, } = validatedInput;
34
34
  const marketplaceId = yield* optionalStringEffect(inputMarketplaceId, 'marketplaceId');
35
35
  const limit = yield* optionalPositiveNumberEffect(inputLimit, 'limit');
36
36
  const offset = yield* optionalNonNegativeNumberEffect(inputOffset, 'offset');
@@ -66,14 +66,14 @@ export class NegotiationApi {
66
66
  const apiClient = this.client;
67
67
  const path = `${this.basePath}/send_offer_to_interested_buyers`;
68
68
  return Effect.gen(function* () {
69
- const request = yield* requireObjectEffect(input, 'input');
70
- const { marketplaceId, ...offerData } = request;
71
- const body = yield* requireObjectEffect(offerData, 'offerData');
69
+ const validatedInput = yield* requireObjectEffect(input, 'input');
70
+ const { marketplaceId, ...offerData } = validatedInput;
71
+ const createOffersRequest = yield* requireObjectEffect(offerData, 'offerData');
72
72
  const validatedMarketplaceId = yield* optionalStringEffect(marketplaceId, 'marketplaceId');
73
73
  const config = validatedMarketplaceId === undefined
74
74
  ? undefined
75
75
  : { headers: { 'X-EBAY-C-MARKETPLACE-ID': validatedMarketplaceId } };
76
- return yield* requestPostEffect(apiClient, path, body, config);
76
+ return yield* requestPostEffect(apiClient, path, createOffersRequest, config);
77
77
  });
78
78
  };
79
79
  }
@@ -2,7 +2,7 @@ import { buildEndpointParams, optionalPositiveNumberEffect, optionalStringEffect
2
2
  import { Effect } from 'effect';
3
3
  /**
4
4
  * Notification API - Event notifications and subscriptions
5
- * Based on: docs/sell-apps/communication/commerce_notification_v1_oas3.json
5
+ * Based on: commerce_notification_v1_oas3.json
6
6
  */
7
7
  export class NotificationApi {
8
8
  basePath = '/commerce/notification/v1';
@@ -27,8 +27,8 @@ export class NotificationApi {
27
27
  const apiClient = this.client;
28
28
  const apiBasePath = this.basePath;
29
29
  return Effect.gen(function* () {
30
- const request = yield* requireObjectEffect(input, 'input');
31
- const validatedPublicKeyId = yield* requireStringEffect(request.publicKeyId, 'publicKeyId');
30
+ const validatedInput = yield* requireObjectEffect(input, 'input');
31
+ const validatedPublicKeyId = yield* requireStringEffect(validatedInput.publicKeyId, 'publicKeyId');
32
32
  return yield* requestGetEffect(apiClient, `${apiBasePath}/public_key/${validatedPublicKeyId}`);
33
33
  });
34
34
  };
@@ -66,8 +66,8 @@ export class NotificationApi {
66
66
  const apiClient = this.client;
67
67
  const path = `${this.basePath}/config`;
68
68
  return Effect.gen(function* () {
69
- const body = yield* requireObjectEffect(input, 'input');
70
- return yield* requestPutEffect(apiClient, path, body);
69
+ const configUpdate = yield* requireObjectEffect(input, 'input');
70
+ return yield* requestPutEffect(apiClient, path, configUpdate);
71
71
  });
72
72
  };
73
73
  /**
@@ -87,9 +87,9 @@ export class NotificationApi {
87
87
  const apiClient = this.client;
88
88
  const path = `${this.basePath}/destination`;
89
89
  return Effect.gen(function* () {
90
- const request = yield* requireObjectEffect(input, 'input');
91
- const limit = yield* optionalPositiveNumberEffect(request.limit, 'limit');
92
- const continuationToken = yield* optionalStringEffect(request.continuationToken, 'continuationToken');
90
+ const validatedInput = yield* requireObjectEffect(input, 'input');
91
+ const limit = yield* optionalPositiveNumberEffect(validatedInput.limit, 'limit');
92
+ const continuationToken = yield* optionalStringEffect(validatedInput.continuationToken, 'continuationToken');
93
93
  const params = buildEndpointParams({
94
94
  limit: { wireName: 'limit', value: limit },
95
95
  continuationToken: { wireName: 'continuation_token', value: continuationToken },
@@ -116,8 +116,8 @@ export class NotificationApi {
116
116
  const apiClient = this.client;
117
117
  const apiBasePath = this.basePath;
118
118
  return Effect.gen(function* () {
119
- const request = yield* requireObjectEffect(input, 'input');
120
- const validatedDestinationId = yield* requireStringEffect(request.destinationId, 'destinationId');
119
+ const validatedInput = yield* requireObjectEffect(input, 'input');
120
+ const validatedDestinationId = yield* requireStringEffect(validatedInput.destinationId, 'destinationId');
121
121
  return yield* requestGetEffect(apiClient, `${apiBasePath}/destination/${validatedDestinationId}`);
122
122
  });
123
123
  };
@@ -138,8 +138,8 @@ export class NotificationApi {
138
138
  const apiClient = this.client;
139
139
  const path = `${this.basePath}/destination`;
140
140
  return Effect.gen(function* () {
141
- const body = yield* requireObjectEffect(input, 'input');
142
- return yield* requestPostEffect(apiClient, path, body);
141
+ const destinationRequest = yield* requireObjectEffect(input, 'input');
142
+ return yield* requestPostEffect(apiClient, path, destinationRequest);
143
143
  });
144
144
  };
145
145
  /**
@@ -161,11 +161,11 @@ export class NotificationApi {
161
161
  const apiClient = this.client;
162
162
  const apiBasePath = this.basePath;
163
163
  return Effect.gen(function* () {
164
- const request = yield* requireObjectEffect(input, 'input');
165
- const { destinationId, ...destination } = request;
164
+ const validatedInput = yield* requireObjectEffect(input, 'input');
165
+ const { destinationId, ...destination } = validatedInput;
166
166
  const validatedDestinationId = yield* requireStringEffect(destinationId, 'destinationId');
167
- const body = yield* requireObjectEffect(destination, 'destination');
168
- return yield* requestPutEffect(apiClient, `${apiBasePath}/destination/${validatedDestinationId}`, body);
167
+ const destinationRequest = yield* requireObjectEffect(destination, 'destination');
168
+ return yield* requestPutEffect(apiClient, `${apiBasePath}/destination/${validatedDestinationId}`, destinationRequest);
169
169
  });
170
170
  };
171
171
  /**
@@ -185,8 +185,8 @@ export class NotificationApi {
185
185
  const apiClient = this.client;
186
186
  const apiBasePath = this.basePath;
187
187
  return Effect.gen(function* () {
188
- const request = yield* requireObjectEffect(input, 'input');
189
- const validatedDestinationId = yield* requireStringEffect(request.destinationId, 'destinationId');
188
+ const validatedInput = yield* requireObjectEffect(input, 'input');
189
+ const validatedDestinationId = yield* requireStringEffect(validatedInput.destinationId, 'destinationId');
190
190
  return yield* requestDeleteEffect(apiClient, `${apiBasePath}/destination/${validatedDestinationId}`);
191
191
  });
192
192
  };
@@ -207,9 +207,9 @@ export class NotificationApi {
207
207
  const apiClient = this.client;
208
208
  const path = `${this.basePath}/subscription`;
209
209
  return Effect.gen(function* () {
210
- const request = yield* requireObjectEffect(input, 'input');
211
- const limit = yield* optionalPositiveNumberEffect(request.limit, 'limit');
212
- const continuationToken = yield* optionalStringEffect(request.continuationToken, 'continuationToken');
210
+ const validatedInput = yield* requireObjectEffect(input, 'input');
211
+ const limit = yield* optionalPositiveNumberEffect(validatedInput.limit, 'limit');
212
+ const continuationToken = yield* optionalStringEffect(validatedInput.continuationToken, 'continuationToken');
213
213
  const params = buildEndpointParams({
214
214
  limit: { wireName: 'limit', value: limit },
215
215
  continuationToken: { wireName: 'continuation_token', value: continuationToken },
@@ -234,8 +234,8 @@ export class NotificationApi {
234
234
  const apiClient = this.client;
235
235
  const path = `${this.basePath}/subscription`;
236
236
  return Effect.gen(function* () {
237
- const body = yield* requireObjectEffect(input, 'input');
238
- return yield* requestPostEffect(apiClient, path, body);
237
+ const subscriptionRequest = yield* requireObjectEffect(input, 'input');
238
+ return yield* requestPostEffect(apiClient, path, subscriptionRequest);
239
239
  });
240
240
  };
241
241
  /**
@@ -257,8 +257,8 @@ export class NotificationApi {
257
257
  const apiClient = this.client;
258
258
  const apiBasePath = this.basePath;
259
259
  return Effect.gen(function* () {
260
- const request = yield* requireObjectEffect(input, 'input');
261
- const validatedSubscriptionId = yield* requireStringEffect(request.subscriptionId, 'subscriptionId');
260
+ const validatedInput = yield* requireObjectEffect(input, 'input');
261
+ const validatedSubscriptionId = yield* requireStringEffect(validatedInput.subscriptionId, 'subscriptionId');
262
262
  return yield* requestGetEffect(apiClient, `${apiBasePath}/subscription/${validatedSubscriptionId}`);
263
263
  });
264
264
  };
@@ -281,11 +281,11 @@ export class NotificationApi {
281
281
  const apiClient = this.client;
282
282
  const apiBasePath = this.basePath;
283
283
  return Effect.gen(function* () {
284
- const request = yield* requireObjectEffect(input, 'input');
285
- const { subscriptionId, ...subscription } = request;
284
+ const validatedInput = yield* requireObjectEffect(input, 'input');
285
+ const { subscriptionId, ...subscription } = validatedInput;
286
286
  const validatedSubscriptionId = yield* requireStringEffect(subscriptionId, 'subscriptionId');
287
- const body = yield* requireObjectEffect(subscription, 'subscription');
288
- return yield* requestPutEffect(apiClient, `${apiBasePath}/subscription/${validatedSubscriptionId}`, body);
287
+ const subscriptionUpdate = yield* requireObjectEffect(subscription, 'subscription');
288
+ return yield* requestPutEffect(apiClient, `${apiBasePath}/subscription/${validatedSubscriptionId}`, subscriptionUpdate);
289
289
  });
290
290
  };
291
291
  /**
@@ -305,8 +305,8 @@ export class NotificationApi {
305
305
  const apiClient = this.client;
306
306
  const apiBasePath = this.basePath;
307
307
  return Effect.gen(function* () {
308
- const request = yield* requireObjectEffect(input, 'input');
309
- const validatedSubscriptionId = yield* requireStringEffect(request.subscriptionId, 'subscriptionId');
308
+ const validatedInput = yield* requireObjectEffect(input, 'input');
309
+ const validatedSubscriptionId = yield* requireStringEffect(validatedInput.subscriptionId, 'subscriptionId');
310
310
  return yield* requestDeleteEffect(apiClient, `${apiBasePath}/subscription/${validatedSubscriptionId}`);
311
311
  });
312
312
  };
@@ -327,8 +327,8 @@ export class NotificationApi {
327
327
  const apiClient = this.client;
328
328
  const apiBasePath = this.basePath;
329
329
  return Effect.gen(function* () {
330
- const request = yield* requireObjectEffect(input, 'input');
331
- const validatedSubscriptionId = yield* requireStringEffect(request.subscriptionId, 'subscriptionId');
330
+ const validatedInput = yield* requireObjectEffect(input, 'input');
331
+ const validatedSubscriptionId = yield* requireStringEffect(validatedInput.subscriptionId, 'subscriptionId');
332
332
  return yield* requestPostEffect(apiClient, `${apiBasePath}/subscription/${validatedSubscriptionId}/disable`);
333
333
  });
334
334
  };
@@ -349,8 +349,8 @@ export class NotificationApi {
349
349
  const apiClient = this.client;
350
350
  const apiBasePath = this.basePath;
351
351
  return Effect.gen(function* () {
352
- const request = yield* requireObjectEffect(input, 'input');
353
- const validatedSubscriptionId = yield* requireStringEffect(request.subscriptionId, 'subscriptionId');
352
+ const validatedInput = yield* requireObjectEffect(input, 'input');
353
+ const validatedSubscriptionId = yield* requireStringEffect(validatedInput.subscriptionId, 'subscriptionId');
354
354
  return yield* requestPostEffect(apiClient, `${apiBasePath}/subscription/${validatedSubscriptionId}/enable`);
355
355
  });
356
356
  };
@@ -371,8 +371,8 @@ export class NotificationApi {
371
371
  const apiClient = this.client;
372
372
  const apiBasePath = this.basePath;
373
373
  return Effect.gen(function* () {
374
- const request = yield* requireObjectEffect(input, 'input');
375
- const validatedSubscriptionId = yield* requireStringEffect(request.subscriptionId, 'subscriptionId');
374
+ const validatedInput = yield* requireObjectEffect(input, 'input');
375
+ const validatedSubscriptionId = yield* requireStringEffect(validatedInput.subscriptionId, 'subscriptionId');
376
376
  return yield* requestPostEffect(apiClient, `${apiBasePath}/subscription/${validatedSubscriptionId}/test`);
377
377
  });
378
378
  };
@@ -393,8 +393,8 @@ export class NotificationApi {
393
393
  const apiClient = this.client;
394
394
  const apiBasePath = this.basePath;
395
395
  return Effect.gen(function* () {
396
- const request = yield* requireObjectEffect(input, 'input');
397
- const validatedTopicId = yield* requireStringEffect(request.topicId, 'topicId');
396
+ const validatedInput = yield* requireObjectEffect(input, 'input');
397
+ const validatedTopicId = yield* requireStringEffect(validatedInput.topicId, 'topicId');
398
398
  return yield* requestGetEffect(apiClient, `${apiBasePath}/topic/${validatedTopicId}`);
399
399
  });
400
400
  };
@@ -415,9 +415,9 @@ export class NotificationApi {
415
415
  const apiClient = this.client;
416
416
  const path = `${this.basePath}/topic`;
417
417
  return Effect.gen(function* () {
418
- const request = yield* requireObjectEffect(input, 'input');
419
- const limit = yield* optionalPositiveNumberEffect(request.limit, 'limit');
420
- const continuationToken = yield* optionalStringEffect(request.continuationToken, 'continuationToken');
418
+ const validatedInput = yield* requireObjectEffect(input, 'input');
419
+ const limit = yield* optionalPositiveNumberEffect(validatedInput.limit, 'limit');
420
+ const continuationToken = yield* optionalStringEffect(validatedInput.continuationToken, 'continuationToken');
421
421
  const params = buildEndpointParams({
422
422
  limit: { wireName: 'limit', value: limit },
423
423
  continuationToken: { wireName: 'continuation_token', value: continuationToken },
@@ -447,11 +447,11 @@ export class NotificationApi {
447
447
  const apiClient = this.client;
448
448
  const apiBasePath = this.basePath;
449
449
  return Effect.gen(function* () {
450
- const request = yield* requireObjectEffect(input, 'input');
451
- const { subscriptionId, ...filter } = request;
450
+ const validatedInput = yield* requireObjectEffect(input, 'input');
451
+ const { subscriptionId, ...filter } = validatedInput;
452
452
  const validatedSubscriptionId = yield* requireStringEffect(subscriptionId, 'subscriptionId');
453
- const body = yield* requireObjectEffect(filter, 'filter');
454
- return yield* requestPostEffect(apiClient, `${apiBasePath}/subscription/${validatedSubscriptionId}/filter`, body);
453
+ const filterRequest = yield* requireObjectEffect(filter, 'filter');
454
+ return yield* requestPostEffect(apiClient, `${apiBasePath}/subscription/${validatedSubscriptionId}/filter`, filterRequest);
455
455
  });
456
456
  };
457
457
  /**
@@ -473,9 +473,9 @@ export class NotificationApi {
473
473
  const apiClient = this.client;
474
474
  const apiBasePath = this.basePath;
475
475
  return Effect.gen(function* () {
476
- const request = yield* requireObjectEffect(input, 'input');
477
- const validatedSubscriptionId = yield* requireStringEffect(request.subscriptionId, 'subscriptionId');
478
- const validatedFilterId = yield* requireStringEffect(request.filterId, 'filterId');
476
+ const validatedInput = yield* requireObjectEffect(input, 'input');
477
+ const validatedSubscriptionId = yield* requireStringEffect(validatedInput.subscriptionId, 'subscriptionId');
478
+ const validatedFilterId = yield* requireStringEffect(validatedInput.filterId, 'filterId');
479
479
  return yield* requestGetEffect(apiClient, `${apiBasePath}/subscription/${validatedSubscriptionId}/filter/${validatedFilterId}`);
480
480
  });
481
481
  };
@@ -501,9 +501,9 @@ export class NotificationApi {
501
501
  const apiClient = this.client;
502
502
  const apiBasePath = this.basePath;
503
503
  return Effect.gen(function* () {
504
- const request = yield* requireObjectEffect(input, 'input');
505
- const validatedSubscriptionId = yield* requireStringEffect(request.subscriptionId, 'subscriptionId');
506
- const validatedFilterId = yield* requireStringEffect(request.filterId, 'filterId');
504
+ const validatedInput = yield* requireObjectEffect(input, 'input');
505
+ const validatedSubscriptionId = yield* requireStringEffect(validatedInput.subscriptionId, 'subscriptionId');
506
+ const validatedFilterId = yield* requireStringEffect(validatedInput.filterId, 'filterId');
507
507
  return yield* requestDeleteEffect(apiClient, `${apiBasePath}/subscription/${validatedSubscriptionId}/filter/${validatedFilterId}`);
508
508
  });
509
509
  };
@@ -3,9 +3,9 @@ import { Effect } from 'effect';
3
3
  /**
4
4
  * Developer API - Rate limits, client registration, and signing keys
5
5
  * Based on:
6
- * - docs/sell-apps/application-settings/developer_analytics_v1_beta_oas3.json
7
- * - docs/sell-apps/application-settings/developer_client_registration_v1_oas3.json
8
- * - docs/sell-apps/application-settings/developer_key_management_v1_oas3.json
6
+ * - developer_analytics_v1_beta_oas3.json
7
+ * - developer_client_registration_v1_oas3.json
8
+ * - developer_key_management_v1_oas3.json
9
9
  */
10
10
  export class DeveloperApi {
11
11
  client;
@@ -2,7 +2,7 @@ import { AccountApi } from '../api/account-management/account.js';
2
2
  import { AccountV2Api } from '../api/account-management/accountV2.js';
3
3
  import { FinancesApi } from '../api/account-management/finances.js';
4
4
  import { AnalyticsApi } from '../api/analytics-and-report/analytics.js';
5
- import { EbayApiClient } from '../api/client.js';
5
+ import { EbayApiClient } from '../api/client/ebayApiClient.js';
6
6
  import { FeedbackApi } from '../api/communication/feedback.js';
7
7
  import { MessageApi } from '../api/communication/message.js';
8
8
  import { NegotiationApi } from '../api/communication/negotiation.js';
@@ -27,7 +27,7 @@ import { FindingApi } from '../api/other/finding.js';
27
27
  import { IdentityApi } from '../api/other/identity.js';
28
28
  import { TranslationApi } from '../api/other/translation.js';
29
29
  import { VeroApi } from '../api/other/vero.js';
30
- import { TradingApiClient } from '../api/clientTrading.js';
30
+ import { TradingApiClient } from '../api/client/tradingApiClient.js';
31
31
  import { TradingApi } from '../api/trading/trading.js';
32
32
  /**
33
33
  * Main API facade providing access to all eBay APIs
@@ -150,7 +150,7 @@ export * from '../api/account-management/account.js';
150
150
  export * from '../api/account-management/accountV2.js';
151
151
  export * from '../api/account-management/finances.js';
152
152
  export * from '../api/analytics-and-report/analytics.js';
153
- export * from '../api/client.js';
153
+ export * from '../api/client/ebayApiClient.js';
154
154
  export * from '../api/communication/feedback.js';
155
155
  export * from '../api/communication/message.js';
156
156
  export * from '../api/communication/negotiation.js';
@@ -180,4 +180,4 @@ export * from '../api/other/translation.js';
180
180
  export * from '../api/other/vero.js';
181
181
  export * from '../api/developer/developer.js';
182
182
  export * from '../api/trading/trading.js';
183
- export * from '../api/clientTrading.js';
183
+ export * from '../api/client/tradingApiClient.js';
@@ -26,8 +26,8 @@ export const createFeedReportTaskMethods = (client) => {
26
26
  * @see https://developer.ebay.com/api-docs/sell/feed/resources/order_task/methods/createOrderTask
27
27
  */
28
28
  const createOrderTask = (input) => decodeEndpointInputEffect(createOrderTaskInputSchema, input).pipe(Effect.flatMap(({ task }) => {
29
- const body = task;
30
- return postFeedTask(client, '/order_task', body);
29
+ const orderTaskRequest = task;
30
+ return postFeedTask(client, '/order_task', orderTaskRequest);
31
31
  }));
32
32
  /**
33
33
  * Retrieves one order report task.
@@ -53,8 +53,8 @@ export const createFeedReportTaskMethods = (client) => {
53
53
  * @see https://developer.ebay.com/api-docs/sell/feed/resources/inventory_task/methods/createInventoryTask
54
54
  */
55
55
  const createInventoryTask = (input) => decodeEndpointInputEffect(createInventoryTaskInputSchema, input).pipe(Effect.flatMap(({ task }) => {
56
- const body = task;
57
- return postFeedTask(client, '/inventory_task', body);
56
+ const inventoryTaskRequest = task;
57
+ return postFeedTask(client, '/inventory_task', inventoryTaskRequest);
58
58
  }));
59
59
  /**
60
60
  * Retrieves one active inventory report task.
@@ -81,9 +81,9 @@ export const createFeedReportTaskMethods = (client) => {
81
81
  * @see https://developer.ebay.com/api-docs/sell/feed/resources/customer_service_metric_task/methods/createCustomerServiceMetricTask
82
82
  */
83
83
  const createCustomerServiceMetricTask = (input) => decodeEndpointInputEffect(createCustomerServiceMetricTaskInputSchema, input).pipe(Effect.flatMap(({ task, acceptLanguage }) => {
84
- const body = task;
84
+ const metricTaskRequest = task;
85
85
  const headers = acceptLanguage ? { 'Accept-Language': acceptLanguage } : undefined;
86
- return postFeedTask(client, '/customer_service_metric_task', body, headers);
86
+ return postFeedTask(client, '/customer_service_metric_task', metricTaskRequest, headers);
87
87
  }));
88
88
  /**
89
89
  * Retrieves one customer service metric report task.
@@ -57,29 +57,29 @@ export const exclusiveFeedFilters = (query) => {
57
57
  *
58
58
  * @param client - Shared authenticated HTTP client.
59
59
  * @param collection - Collection path below the base path, e.g. `/schedule`.
60
- * @param body - Generated create-request DTO.
60
+ * @param createRequest - Generated create-request DTO.
61
61
  * @param config - Optional per-request headers.
62
62
  * @returns An Effect with the decoded ID and Location, or an EbayApiError.
63
63
  * @example postFeedResource(client, '/schedule', { feedType: 'LMS_ORDER_REPORT', scheduleTemplateId: 'T-1' })
64
64
  */
65
- export const postFeedResource = (client, collection, body, config) => {
65
+ export const postFeedResource = (client, collection, createRequest, config) => {
66
66
  const path = `${FEED_BASE_PATH}${collection}`;
67
67
  return Effect.tryPromise({
68
- try: () => client.postForResponse(path, body, config),
68
+ try: () => client.postForResponse(path, createRequest, config),
69
69
  catch: (cause) => new EbayApiError({ method: 'POST', path, cause }), // allow-duplicate
70
- }).pipe(Effect.flatMap((response) => locatedResourceId(response.headers.location, path)));
70
+ }).pipe(Effect.flatMap((createdResponse) => locatedResourceId(createdResponse.headers.location, path)));
71
71
  };
72
72
  /**
73
73
  * Creates a Feed API task (HTTP 202, no body) and returns the ID from its `Location`.
74
74
  *
75
75
  * @param client - Shared authenticated HTTP client.
76
76
  * @param collection - Task collection path, e.g. `/order_task`.
77
- * @param body - Generated create-task DTO.
77
+ * @param taskRequest - Generated create-task DTO.
78
78
  * @param headers - Optional request headers such as Accept-Language.
79
79
  * @returns An Effect with the new task ID and Location, or an EbayApiError.
80
80
  * @example postFeedTask(client, '/task', { feedType: 'LMS_ORDER_ACK', schemaVersion: '1235' })
81
81
  */
82
- export const postFeedTask = (client, collection, body, headers) => postFeedResource(client, collection, body, headers ? { headers } : undefined).pipe(Effect.map(({ id, location }) => ({ taskId: id, location })));
82
+ export const postFeedTask = (client, collection, taskRequest, headers) => postFeedResource(client, collection, taskRequest, headers ? { headers } : undefined).pipe(Effect.map(({ id, location }) => ({ taskId: id, location })));
83
83
  /**
84
84
  * Downloads a Feed API file (input, result or latest schedule report) as raw bytes.
85
85
  *
@@ -25,8 +25,8 @@ export const createFeedScheduleMethods = (client) => {
25
25
  * @see https://developer.ebay.com/api-docs/sell/feed/resources/schedule/methods/createSchedule
26
26
  */
27
27
  const createSchedule = (input) => decodeEndpointInputEffect(createFeedScheduleInputSchema, input).pipe(Effect.flatMap(({ schedule }) => {
28
- const body = schedule;
29
- return postFeedResource(client, '/schedule', body);
28
+ const createScheduleRequest = schedule;
29
+ return postFeedResource(client, '/schedule', createScheduleRequest);
30
30
  }), Effect.map(({ id, location }) => ({ scheduleId: id, location })));
31
31
  /**
32
32
  * Retrieves one schedule's details and status.
@@ -47,8 +47,8 @@ export const createFeedScheduleMethods = (client) => {
47
47
  parameter: 'schedule',
48
48
  message: 'Provide at least one schedule field to update',
49
49
  })), Effect.flatMap(({ scheduleId, schedule }) => {
50
- const body = schedule;
51
- return requestPutEffect(client, feedResourcePath('/schedule', scheduleId), body);
50
+ const updateScheduleRequest = schedule;
51
+ return requestPutEffect(client, feedResourcePath('/schedule', scheduleId), updateScheduleRequest);
52
52
  }));
53
53
  /**
54
54
  * Deletes a schedule; it stops generating reports.
@@ -38,7 +38,7 @@ export const createFeedTaskMethods = (client) => {
38
38
  */
39
39
  const createTask = (input) => Effect.gen(function* () {
40
40
  const { task, marketplaceId, acceptLanguage } = yield* decodeEndpointInputEffect(createFeedTaskInputSchema, input);
41
- const body = task;
41
+ const taskRequest = task;
42
42
  const headers = {};
43
43
  if (marketplaceId) {
44
44
  headers['X-EBAY-C-MARKETPLACE-ID'] = marketplaceId;
@@ -46,7 +46,7 @@ export const createFeedTaskMethods = (client) => {
46
46
  if (acceptLanguage) {
47
47
  headers['Accept-Language'] = acceptLanguage;
48
48
  }
49
- return yield* postFeedTask(client, '/task', body, headers);
49
+ return yield* postFeedTask(client, '/task', taskRequest, headers);
50
50
  });
51
51
  /**
52
52
  * Retrieves a feed task's status and upload summary.