@foxtware/mineral 0.1.14 → 0.1.16

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 (358) hide show
  1. package/.creds.yml.sample +34 -0
  2. package/AGENTS.md +5 -0
  3. package/_build_scripts/createNewFunction.js +19 -19
  4. package/api/_example.js +6 -3
  5. package/api/_tools/log.js +22 -0
  6. package/api/algolia/docs.md +7 -0
  7. package/api/asana/asana.constants.js +7 -0
  8. package/api/asana/asana.utils.js +37 -0
  9. package/api/asana/asanaGet.js +150 -0
  10. package/api/asana/docs.md +5 -0
  11. package/api/athos/docs.md +9 -0
  12. package/api/bleckmann/bleckmannAsnsGet.js +3 -1
  13. package/api/clickup/clickup.constants.js +7 -0
  14. package/api/clickup/clickup.utils.js +36 -0
  15. package/api/clickup/clickupGet.js +150 -0
  16. package/api/clickup/docs.md +6 -0
  17. package/api/discord/discord.constants.js +7 -0
  18. package/api/discord/discord.utils.js +36 -0
  19. package/api/discord/discordGet.js +144 -0
  20. package/api/discord/docs.md +6 -0
  21. package/api/etsy/_example.get.js +68 -0
  22. package/api/etsy/etsy.constants.js +33 -0
  23. package/api/etsy/etsy.utils.js +208 -0
  24. package/api/etsy/etsyAccessTokenRefresh.js +106 -0
  25. package/api/etsy/etsyAccessTokenRequest.js +118 -0
  26. package/api/etsy/etsyAllListingFilesGet.js +69 -0
  27. package/api/etsy/etsyAllListingsGetActive.js +88 -0
  28. package/api/etsy/etsyAuthorizationCodeRequest.js +124 -0
  29. package/api/etsy/etsyBuyerTaxonomyNodePropertiesGet.js +62 -0
  30. package/api/etsy/etsyBuyerTaxonomyNodesGet.js +58 -0
  31. package/api/etsy/etsyDraftListingCreate.js +71 -0
  32. package/api/etsy/etsyFeaturedListingsByShopGet.js +78 -0
  33. package/api/etsy/etsyGet.js +150 -0
  34. package/api/etsy/etsyHolidayPreferencesGet.js +65 -0
  35. package/api/etsy/etsyHolidayPreferencesUpdate.js +75 -0
  36. package/api/etsy/etsyListingDelete.js +61 -0
  37. package/api/etsy/etsyListingFileDelete.js +72 -0
  38. package/api/etsy/etsyListingFileGet.js +73 -0
  39. package/api/etsy/etsyListingGet.js +62 -0
  40. package/api/etsy/etsyListingImageDelete.js +72 -0
  41. package/api/etsy/etsyListingImageGet.js +66 -0
  42. package/api/etsy/etsyListingImagesGet.js +62 -0
  43. package/api/etsy/etsyListingInventoryGet.js +62 -0
  44. package/api/etsy/etsyListingInventoryUpdate.js +99 -0
  45. package/api/etsy/etsyListingOfferingGet.js +70 -0
  46. package/api/etsy/etsyListingPersonalizationDelete.js +68 -0
  47. package/api/etsy/etsyListingPersonalizationGet.js +62 -0
  48. package/api/etsy/etsyListingPersonalizationUpdate.js +75 -0
  49. package/api/etsy/etsyListingProductGet.js +64 -0
  50. package/api/etsy/etsyListingPropertiesGet.js +69 -0
  51. package/api/etsy/etsyListingPropertyDelete.js +72 -0
  52. package/api/etsy/etsyListingPropertyGet.js +66 -0
  53. package/api/etsy/etsyListingPropertyUpdate.js +79 -0
  54. package/api/etsy/etsyListingTranslationCreate.js +79 -0
  55. package/api/etsy/etsyListingTranslationGet.js +73 -0
  56. package/api/etsy/etsyListingTranslationUpdate.js +79 -0
  57. package/api/etsy/etsyListingUpdate.js +75 -0
  58. package/api/etsy/etsyListingVariationImagesGet.js +69 -0
  59. package/api/etsy/etsyListingVideoDelete.js +72 -0
  60. package/api/etsy/etsyListingVideoGet.js +66 -0
  61. package/api/etsy/etsyListingVideosGet.js +62 -0
  62. package/api/etsy/etsyListingsByListingIdsGet.js +63 -0
  63. package/api/etsy/etsyListingsByShopReceiptGet.js +82 -0
  64. package/api/etsy/etsyListingsByShopReturnPolicyGet.js +69 -0
  65. package/api/etsy/etsyListingsInventoryByListingIdsGet.js +63 -0
  66. package/api/etsy/etsyListingsShippingByListingIdsGet.js +63 -0
  67. package/api/etsy/etsyMeGet.js +56 -0
  68. package/api/etsy/etsyOauthRedirectParse.js +201 -0
  69. package/api/etsy/etsyPaymentAccountLedgerEntryPaymentsGet.js +65 -0
  70. package/api/etsy/etsyPaymentsGet.js +65 -0
  71. package/api/etsy/etsyPing.js +51 -0
  72. package/api/etsy/etsyReceiptShipmentCreate.js +75 -0
  73. package/api/etsy/etsyReviewsByListingGet.js +76 -0
  74. package/api/etsy/etsyReviewsByShopGet.js +80 -0
  75. package/api/etsy/etsySellerTaxonomyNodePropertiesGet.js +62 -0
  76. package/api/etsy/etsySellerTaxonomyNodesGet.js +58 -0
  77. package/api/etsy/etsyShippingCarriersGet.js +63 -0
  78. package/api/etsy/etsyShopGet.js +65 -0
  79. package/api/etsy/etsyShopListingsActiveGet.js +82 -0
  80. package/api/etsy/etsyShopListingsGet.js +87 -0
  81. package/api/etsy/etsyShopPaymentAccountLedgerEntriesGet.js +80 -0
  82. package/api/etsy/etsyShopPaymentAccountLedgerEntryGet.js +69 -0
  83. package/api/etsy/etsyShopPaymentByReceiptIdGet.js +69 -0
  84. package/api/etsy/etsyShopProductionPartnersGet.js +65 -0
  85. package/api/etsy/etsyShopReadinessStateDefinitionCreate.js +71 -0
  86. package/api/etsy/etsyShopReadinessStateDefinitionDelete.js +68 -0
  87. package/api/etsy/etsyShopReadinessStateDefinitionGet.js +69 -0
  88. package/api/etsy/etsyShopReadinessStateDefinitionUpdate.js +75 -0
  89. package/api/etsy/etsyShopReadinessStateDefinitionsGet.js +78 -0
  90. package/api/etsy/etsyShopReceiptGet.js +67 -0
  91. package/api/etsy/etsyShopReceiptTransactionGet.js +69 -0
  92. package/api/etsy/etsyShopReceiptTransactionsByListingGet.js +82 -0
  93. package/api/etsy/etsyShopReceiptTransactionsByReceiptGet.js +69 -0
  94. package/api/etsy/etsyShopReceiptTransactionsByShopGet.js +78 -0
  95. package/api/etsy/etsyShopReceiptUpdate.js +75 -0
  96. package/api/etsy/etsyShopReceiptsGet.js +70 -0
  97. package/api/etsy/etsyShopReturnPoliciesConsolidate.js +75 -0
  98. package/api/etsy/etsyShopReturnPolicyCreate.js +71 -0
  99. package/api/etsy/etsyShopReturnPolicyDelete.js +68 -0
  100. package/api/etsy/etsyShopReturnPolicyGet.js +69 -0
  101. package/api/etsy/etsyShopReturnPolicyUpdate.js +75 -0
  102. package/api/etsy/etsyShopReturnsPoliciesGet.js +70 -0
  103. package/api/etsy/etsyShopSectionCreate.js +71 -0
  104. package/api/etsy/etsyShopSectionDelete.js +68 -0
  105. package/api/etsy/etsyShopSectionGet.js +69 -0
  106. package/api/etsy/etsyShopSectionListingsGet.js +86 -0
  107. package/api/etsy/etsyShopSectionUpdate.js +75 -0
  108. package/api/etsy/etsyShopSectionsGet.js +65 -0
  109. package/api/etsy/etsyShopShippingProfileCreate.js +71 -0
  110. package/api/etsy/etsyShopShippingProfileDelete.js +68 -0
  111. package/api/etsy/etsyShopShippingProfileDestinationCreate.js +75 -0
  112. package/api/etsy/etsyShopShippingProfileDestinationDelete.js +72 -0
  113. package/api/etsy/etsyShopShippingProfileDestinationUpdate.js +79 -0
  114. package/api/etsy/etsyShopShippingProfileDestinationsByShippingProfileGet.js +82 -0
  115. package/api/etsy/etsyShopShippingProfileGet.js +69 -0
  116. package/api/etsy/etsyShopShippingProfileUpdate.js +75 -0
  117. package/api/etsy/etsyShopShippingProfileUpgradeCreate.js +75 -0
  118. package/api/etsy/etsyShopShippingProfileUpgradeDelete.js +72 -0
  119. package/api/etsy/etsyShopShippingProfileUpgradeUpdate.js +79 -0
  120. package/api/etsy/etsyShopShippingProfileUpgradesGet.js +69 -0
  121. package/api/etsy/etsyShopShippingProfilesGet.js +65 -0
  122. package/api/etsy/etsyShopUpdate.js +69 -0
  123. package/api/etsy/etsyShopsGet.js +70 -0
  124. package/api/etsy/etsyTokenScopes.js +63 -0
  125. package/api/etsy/etsyUserAddressDelete.js +61 -0
  126. package/api/etsy/etsyUserAddressGet.js +62 -0
  127. package/api/etsy/etsyUserAddressesGet.js +70 -0
  128. package/api/etsy/etsyUserGet.js +62 -0
  129. package/api/etsy/etsyUserShopsGet.js +62 -0
  130. package/api/etsy/etsyVariationImagesUpdate.js +75 -0
  131. package/api/figma/docs.md +6 -0
  132. package/api/figma/figma.constants.js +7 -0
  133. package/api/figma/figma.utils.js +36 -0
  134. package/api/figma/figmaGet.js +107 -0
  135. package/api/github/githubReposGet.js +3 -1
  136. package/api/github/githubUserGet.js +3 -1
  137. package/api/google/docs.md +7 -0
  138. package/api/google/google.constants.js +9 -0
  139. package/api/google/google.utils.js +137 -0
  140. package/api/google/googlecalendarCalendarsGet.js +54 -0
  141. package/api/google/googlecalendarEventCreate.js +63 -0
  142. package/api/google/googlecalendarEventDelete.js +55 -0
  143. package/api/google/googlecalendarEventGet.js +55 -0
  144. package/api/google/googlecalendarEventsGet.js +65 -0
  145. package/api/google/googledriveFileDelete.js +53 -0
  146. package/api/google/googledriveFileGet.js +57 -0
  147. package/api/google/googledriveFileUpload.js +127 -0
  148. package/api/google/googledriveFilesGet.js +72 -0
  149. package/api/google/googlesheetsSpreadsheetGet.js +57 -0
  150. package/api/google/googlesheetsSpreadsheetSheetAdd.js +150 -0
  151. package/api/google/googlesheetsSpreadsheetSheetGetData.js +159 -0
  152. package/api/google/googlesheetsSpreadsheetTrim.js +239 -0
  153. package/api/gorgias/docs.md +7 -0
  154. package/api/logiwa/logiwaAuthGet.js +3 -1
  155. package/api/logiwa/logiwaInventoriesGet.js +3 -1
  156. package/api/logiwa/logiwaOrdersGet.js +3 -1
  157. package/api/logiwa/logiwaProductsGet.js +3 -1
  158. package/api/logiwa/logiwaReportGetInventorySnapshot.js +3 -1
  159. package/api/logiwa/logiwaReportGetTotalInventory.js +3 -1
  160. package/api/logiwa/logiwaWebhooksGet.js +3 -1
  161. package/api/loop/loopAllowlistItemsGet.js +3 -1
  162. package/api/loop/loopBlocklistItemsGet.js +3 -1
  163. package/api/loop/loopDestinationsGet.js +3 -1
  164. package/api/loop/loopReturnsGet.js +3 -1
  165. package/api/notion/docs.md +6 -0
  166. package/api/notion/notion.constants.js +9 -0
  167. package/api/notion/notion.utils.js +44 -0
  168. package/api/notion/notionGet.js +146 -0
  169. package/api/peoplevox/_example.js +4 -1
  170. package/api/peoplevox/peoplevox.sessions.js +29 -0
  171. package/api/peoplevox/peoplevox.utils.js +4 -38
  172. package/api/peoplevox/peoplevoxAuthGet.js +3 -1
  173. package/api/peoplevox/peoplevoxGetSingle.js +4 -2
  174. package/api/peoplevox/peoplevoxOrderEdit.js +8 -2
  175. package/api/peoplevox/peoplevoxOrderGet.js +6 -1
  176. package/api/peoplevox/peoplevoxReportGet.js +6 -2
  177. package/api/pipe17/docs.md +8 -0
  178. package/api/pipe17/pipe17.constants.js +47 -0
  179. package/api/pipe17/pipe17.utils.js +123 -0
  180. package/api/pipe17/pipe17ArrivalGet.js +78 -0
  181. package/api/pipe17/pipe17ArrivalUpdate.js +111 -0
  182. package/api/pipe17/pipe17ArrivalsGet.js +54 -0
  183. package/api/pipe17/pipe17FulfillmentGet.js +69 -0
  184. package/api/pipe17/pipe17FulfillmentsGet.js +54 -0
  185. package/api/pipe17/pipe17Get.js +151 -0
  186. package/api/pipe17/pipe17InventoryItemGet.js +57 -0
  187. package/api/pipe17/pipe17InventoryItemsGet.js +54 -0
  188. package/api/pipe17/pipe17JobCreate.js +95 -0
  189. package/api/pipe17/pipe17JobGet.js +70 -0
  190. package/api/pipe17/pipe17JobResultsGet.js +55 -0
  191. package/api/pipe17/pipe17LocationGet.js +57 -0
  192. package/api/pipe17/pipe17LocationsGet.js +54 -0
  193. package/api/pipe17/pipe17OrderGet.js +71 -0
  194. package/api/pipe17/pipe17OrdersGet.js +54 -0
  195. package/api/pipe17/pipe17ProductGet.js +57 -0
  196. package/api/pipe17/pipe17ProductsGet.js +54 -0
  197. package/api/pipe17/pipe17PurchaseGet.js +57 -0
  198. package/api/pipe17/pipe17PurchasesGet.js +54 -0
  199. package/api/pipe17/pipe17ReceiptGet.js +57 -0
  200. package/api/pipe17/pipe17ReceiptsGet.js +54 -0
  201. package/api/pipe17/pipe17ReturnGet.js +57 -0
  202. package/api/pipe17/pipe17ReturnsGet.js +54 -0
  203. package/api/printify/_example.get.js +67 -0
  204. package/api/printify/_example.js +59 -0
  205. package/api/printify/printify.constants.js +8 -0
  206. package/api/printify/printify.utils.js +41 -0
  207. package/api/printify/printifyBlueprintGet.js +60 -0
  208. package/api/printify/printifyBlueprintPrintProviderVariantsGet.js +77 -0
  209. package/api/printify/printifyBlueprintPrintProvidersGet.js +60 -0
  210. package/api/printify/printifyBlueprintsGet.js +38 -0
  211. package/api/printify/printifyGet.js +154 -0
  212. package/api/printify/printifyImageUpload.js +74 -0
  213. package/api/printify/printifyOrderCancel.js +70 -0
  214. package/api/printify/printifyOrderCreate.js +98 -0
  215. package/api/printify/printifyOrderGet.js +70 -0
  216. package/api/printify/printifyOrderSubmit.js +70 -0
  217. package/api/printify/printifyOrdersGet.js +72 -0
  218. package/api/printify/printifyProductCreate.js +96 -0
  219. package/api/printify/printifyProductDelete.js +70 -0
  220. package/api/printify/printifyProductGet.js +79 -0
  221. package/api/printify/printifyProductUpdate.js +81 -0
  222. package/api/printify/printifyProductsGet.js +67 -0
  223. package/api/printify/printifyShippingGet.js +70 -0
  224. package/api/printify/printifyShopsGet.js +56 -0
  225. package/api/printify/printifyWebhookCreate.js +84 -0
  226. package/api/printify/printifyWebhookDelete.js +70 -0
  227. package/api/printify/printifyWebhookUpdate.js +81 -0
  228. package/api/printify/printifyWebhooksGet.js +56 -0
  229. package/api/salesforce/docs.md +6 -0
  230. package/api/shopify/_example.create.js +2 -2
  231. package/api/shopify/_example.get.js +17 -4
  232. package/api/shopify/_example.getsingle.js +4 -1
  233. package/api/shopify/_example.js +4 -1
  234. package/api/shopify/_example.mutation.js +4 -1
  235. package/api/shopify/shopifyAbandonedCheckoutsGet.js +1 -1
  236. package/api/shopify/shopifyArticlesGet.js +1 -1
  237. package/api/shopify/shopifyBlogsGet.js +1 -1
  238. package/api/shopify/shopifyBulkMutationDo.js +5 -6
  239. package/api/shopify/shopifyBulkOperationsGet.js +1 -1
  240. package/api/shopify/shopifyCatalogsGet.js +17 -4
  241. package/api/shopify/shopifyChannelsGet.js +17 -4
  242. package/api/shopify/shopifyCheckoutAndAccountsConfigurationsGet.js +17 -4
  243. package/api/shopify/shopifyCollectionGet.js +4 -1
  244. package/api/shopify/shopifyCollectionsGet.js +17 -4
  245. package/api/shopify/shopifyCustomerCreate.js +2 -2
  246. package/api/shopify/shopifyCustomerGet.js +4 -1
  247. package/api/shopify/shopifyCustomerMarketingConsentUpdateSms.js +84 -0
  248. package/api/shopify/shopifyCustomersGet.js +18 -5
  249. package/api/shopify/shopifyDecodeSessionToken.js +2 -2
  250. package/api/shopify/shopifyDeliveryCustomizationsGet.js +1 -1
  251. package/api/shopify/shopifyDeliveryProfilesGet.js +17 -4
  252. package/api/shopify/shopifyDiscountNodesGet.js +1 -1
  253. package/api/shopify/shopifyDisputesGet.js +1 -1
  254. package/api/shopify/shopifyDraftOrdersGet.js +1 -1
  255. package/api/shopify/shopifyEventsGet.js +1 -1
  256. package/api/shopify/shopifyFilesGet.js +1 -1
  257. package/api/shopify/shopifyFulfillmentOrdersGet.js +17 -4
  258. package/api/shopify/shopifyGet.js +1 -1
  259. package/api/shopify/shopifyGiftCardCreate.js +4 -1
  260. package/api/shopify/shopifyGiftCardDeactivate.js +4 -1
  261. package/api/shopify/shopifyGiftCardsGet.js +17 -4
  262. package/api/shopify/shopifyInventoryItemsGet.js +17 -4
  263. package/api/shopify/shopifyLocationsGet.js +1 -1
  264. package/api/shopify/shopifyMarketingEventsGet.js +1 -1
  265. package/api/shopify/shopifyMarketsGet.js +1 -1
  266. package/api/shopify/shopifyMenusGet.js +1 -1
  267. package/api/shopify/shopifyMetafieldDefinitionCreate.js +111 -0
  268. package/api/shopify/shopifyMetafieldDefinitionsGet.js +18 -4
  269. package/api/shopify/shopifyMetafieldsDelete.js +78 -0
  270. package/api/shopify/shopifyMetaobjectDefinitionsGet.js +1 -1
  271. package/api/shopify/shopifyMetaobjectsGet.js +1 -1
  272. package/api/shopify/shopifyMutationDo.js +4 -1
  273. package/api/shopify/shopifyOrderGet.js +4 -1
  274. package/api/shopify/shopifyOrdersGet.js +3 -1
  275. package/api/shopify/shopifyPageDelete.js +4 -1
  276. package/api/shopify/shopifyPageGet.js +4 -1
  277. package/api/shopify/shopifyPageUpdate.js +5 -1
  278. package/api/shopify/shopifyPagesGet.js +1 -1
  279. package/api/shopify/shopifyPaymentCustomizationsGet.js +1 -1
  280. package/api/shopify/shopifyProductFeedsGet.js +1 -1
  281. package/api/shopify/shopifyProductGet.js +110 -0
  282. package/api/shopify/shopifyProductVariantsGet.js +1 -1
  283. package/api/shopify/shopifyProductsGet.js +17 -4
  284. package/api/shopify/shopifyPublicationsGet.js +17 -4
  285. package/api/shopify/shopifySegmentsGet.js +1 -1
  286. package/api/shopify/shopifyStoreCreditAccountCredit.js +144 -0
  287. package/api/shopify/shopifyStoreCreditAccountDebit.js +132 -0
  288. package/api/shopify/shopifyTagsRemoveBulk.js +77 -0
  289. package/api/shopify/shopifyThemeDelete.js +4 -1
  290. package/api/shopify/shopifyThemeDuplicate.js +4 -1
  291. package/api/shopify/shopifyThemeGet.js +2 -2
  292. package/api/shopify/shopifyThemesGet.js +3 -1
  293. package/api/shopify/shopifyUrlRedirectsGet.js +1 -1
  294. package/api/shopify/shopifyWebhookSubscriptionsGet.js +17 -4
  295. package/api/snowflake/docs.md +8 -0
  296. package/api/starshipit/starshipitAddressesGet.js +3 -1
  297. package/api/starshipit/starshipitOrdersListShipped.js +3 -1
  298. package/api/starshipit/starshipitProductsGet.js +3 -1
  299. package/api/stripe/_example.js +4 -1
  300. package/api/stripe/stripeChargesGet.js +3 -1
  301. package/api/stripe/stripeRefundsGet.js +3 -1
  302. package/api/stylearcade/stylearcadeDataGet.js +14 -6
  303. package/api/stylearcade/stylearcadeMetadataGet.js +3 -1
  304. package/api/tagalys/docs.md +7 -0
  305. package/api/telnyx/docs.md +6 -0
  306. package/api/telnyx/telnyx.constants.js +7 -0
  307. package/api/telnyx/telnyx.utils.js +37 -0
  308. package/api/telnyx/telnyxAvailablePhoneNumbersGet.js +59 -0
  309. package/api/telnyx/telnyxBalanceGet.js +51 -0
  310. package/api/telnyx/telnyxGet.js +151 -0
  311. package/api/telnyx/telnyxMessageGet.js +59 -0
  312. package/api/telnyx/telnyxMessageSend.js +65 -0
  313. package/api/telnyx/telnyxMessagesGet.js +53 -0
  314. package/api/telnyx/telnyxMessagingProfileCreate.js +62 -0
  315. package/api/telnyx/telnyxMessagingProfileGet.js +59 -0
  316. package/api/telnyx/telnyxMessagingProfileUpdate.js +68 -0
  317. package/api/telnyx/telnyxMessagingProfilesGet.js +53 -0
  318. package/api/telnyx/telnyxNumberLookupGet.js +61 -0
  319. package/api/telnyx/telnyxNumberOrderCreate.js +64 -0
  320. package/api/telnyx/telnyxPhoneNumberGet.js +59 -0
  321. package/api/telnyx/telnyxPhoneNumberUpdate.js +68 -0
  322. package/api/telnyx/telnyxPhoneNumbersGet.js +53 -0
  323. package/api/telnyx/telnyxWebhookDeliveriesGet.js +58 -0
  324. package/api/threeclicks/threeclicksCollectionsGet.js +3 -1
  325. package/api/threeclicks/threeclicksPurchaseOrderCreate.js +4 -1
  326. package/api/threeclicks/threeclicksPurchaseOrderCreateBulk.js +4 -1
  327. package/api/threeclicks/threeclicksPurchaseOrderGet.js +4 -1
  328. package/api/threeclicks/threeclicksPurchaseOrderQuantitiesGet.js +4 -1
  329. package/api/threeclicks/threeclicksPurchaseOrderQuantityCreate.js +4 -1
  330. package/api/threeclicks/threeclicksPurchaseOrderQuantityCreateBulk.js +4 -1
  331. package/api/threeclicks/threeclicksPurchaseOrderUpdate.js +5 -1
  332. package/api/threeclicks/threeclicksPurchaseOrdersGet.js +3 -1
  333. package/api/threeclicks/threeclicksShipmentCreate.js +4 -1
  334. package/api/threeclicks/threeclicksShipmentGet.js +4 -1
  335. package/api/threeclicks/threeclicksShipmentOrderAdd.js +5 -1
  336. package/api/threeclicks/threeclicksShipmentOrderQuantityCreate.js +5 -1
  337. package/api/threeclicks/threeclicksShipmentQuantityUpdate.js +5 -1
  338. package/api/threeclicks/threeclicksShipmentStatusUpdate.js +5 -1
  339. package/api/threeclicks/threeclicksShipmentsGet.js +3 -1
  340. package/api/threeclicks/threeclicksSignatureCalculate.js +4 -4
  341. package/api/threeclicks/threeclicksStyleCodesGet.js +4 -1
  342. package/api/threeclicks/threeclicksStyleColourDelete.js +5 -1
  343. package/api/threeclicks/threeclicksStyleDelete.js +4 -1
  344. package/api/threeclicks/threeclicksStylesGet.js +3 -1
  345. package/api/upstash/upstashDel.js +4 -1
  346. package/api/upstash/upstashExists.js +4 -1
  347. package/api/upstash/upstashGet.js +4 -1
  348. package/api/utils.js +86 -6
  349. package/api/workable/workableJobsGet.js +3 -1
  350. package/api/yotpo/yotpoCampaignsGet.js +3 -1
  351. package/api/yotpo/yotpoCustomersRecentGet.js +3 -1
  352. package/api/yotpo/yotpoRedemptionOptionsGet.js +3 -1
  353. package/api/yotpo/yotpoVipTiersGet.js +3 -1
  354. package/hosting/copyCredsToEnv.js +3 -3
  355. package/hosting/handlerPaths.js +3 -3
  356. package/package.json +2 -1
  357. package/server.js +8 -6
  358. package/server.utils.js +1 -1
@@ -0,0 +1,67 @@
1
+ // https://developers.printify.com/#retrieve-a-list-of-products
2
+
3
+ const { ArgsWarden } = require('../utils');
4
+ const { credsValidator } = require('../validators');
5
+ const { printifyGet, printifyGetter } = require('../printify/printifyGet');
6
+ const { resolveShopIdFromCreds } = require('../printify/printify.utils');
7
+
8
+ const argsWarden = new ArgsWarden([
9
+ ['credsPayload', credsValidator],
10
+ ]);
11
+
12
+ const printifyProductsGet = async (
13
+ returnGetter,
14
+
15
+ credsPayload,
16
+ {
17
+ shopId,
18
+ perPage,
19
+ ...getterOptions
20
+ } = {},
21
+ ) => {
22
+
23
+ const rejectResponse = await argsWarden.responseIfRejectingArgs({
24
+ credsPayload,
25
+ });
26
+ if (rejectResponse) {
27
+ return rejectResponse;
28
+ }
29
+
30
+ const shopIdResponse = await resolveShopIdFromCreds({ shopId, credsPayload });
31
+ if (!shopIdResponse.ok) {
32
+ return shopIdResponse;
33
+ }
34
+ ({ data: shopId } = shopIdResponse);
35
+
36
+ const getterArgs = [
37
+ credsPayload,
38
+ `/shops/${ shopId }/products.json`,
39
+ {
40
+ ...(perPage && { params: { limit: perPage } }),
41
+ ...getterOptions,
42
+ },
43
+ ];
44
+
45
+ return returnGetter
46
+ ? printifyGetter(...getterArgs)
47
+ : printifyGet(...getterArgs);
48
+ };
49
+
50
+ const funcApiConfig = {
51
+ argsWarden,
52
+ };
53
+
54
+ module.exports = {
55
+ printifyProductsGet: (...args) => printifyProductsGet(false, ...args),
56
+ printifyProductsGetter: (...args) => printifyProductsGet(true, ...args),
57
+ funcApiConfig,
58
+ };
59
+
60
+ /*
61
+ curl -X POST "http://localhost:8000/printifyProductsGet" \
62
+ -H "Content-Type: application/json" \
63
+ -d '{
64
+ "credsPayload": { "credsPath": "printify" },
65
+ "options": { "perPage": 10 }
66
+ }'
67
+ */
@@ -0,0 +1,70 @@
1
+ // https://developers.printify.com/#retrieve-shipping-information
2
+
3
+ const { ArgsWarden, actionSingleOrMultiple, everyIfArray, valueProvided } = require('../utils');
4
+ const { credsValidator } = require('../validators');
5
+ const { printifyClient } = require('../printify/printify.utils');
6
+
7
+ const catalogQueryValidator = (catalogQuery) => {
8
+ return valueProvided(catalogQuery?.blueprintId)
9
+ && valueProvided(catalogQuery?.printProviderId);
10
+ };
11
+
12
+ const argsWarden = new ArgsWarden([
13
+ ['credsPayload', credsValidator],
14
+ ['catalogQuery', (catalogQuery) => everyIfArray(catalogQueryValidator, catalogQuery)],
15
+ ]);
16
+
17
+ const printifyShippingGetSingle = async (
18
+ credsPayload,
19
+ catalogQuery,
20
+ ) => {
21
+ const {
22
+ blueprintId,
23
+ printProviderId,
24
+ } = catalogQuery;
25
+
26
+ return printifyClient.fetch({
27
+ requestPayload: {
28
+ method: 'get',
29
+ url: `/catalog/blueprints/${ blueprintId }/print_providers/${ printProviderId }/shipping.json`,
30
+ },
31
+ context: { credsPayload },
32
+ });
33
+ };
34
+
35
+ const printifyShippingGet = async (
36
+ credsPayload,
37
+ catalogQuery,
38
+ {
39
+ queueRunOptions,
40
+ } = {},
41
+ ) => {
42
+
43
+ const rejectResponse = await argsWarden.responseIfRejectingArgs({
44
+ credsPayload,
45
+ catalogQuery,
46
+ });
47
+ if (rejectResponse) {
48
+ return rejectResponse;
49
+ }
50
+
51
+ return actionSingleOrMultiple(
52
+ catalogQuery,
53
+ printifyShippingGetSingle,
54
+ (catalogQueryItem) => ({
55
+ args: [credsPayload, catalogQueryItem],
56
+ }),
57
+ {
58
+ ...(queueRunOptions ? { queueRunOptions } : {}),
59
+ },
60
+ );
61
+ };
62
+
63
+ const funcApiConfig = {
64
+ argsWarden,
65
+ };
66
+
67
+ module.exports = {
68
+ printifyShippingGet,
69
+ funcApiConfig,
70
+ };
@@ -0,0 +1,56 @@
1
+ // https://developers.printify.com/#retrieve-list-of-shops-in-a-printify-account
2
+
3
+ const { ArgsWarden } = require('../utils');
4
+ const { credsValidator } = require('../validators');
5
+ const { printifyGet, printifyGetter } = require('../printify/printifyGet');
6
+
7
+ const argsWarden = new ArgsWarden([
8
+ ['credsPayload', credsValidator],
9
+ ]);
10
+
11
+ const printifyShopsGet = async (
12
+ returnGetter,
13
+
14
+ credsPayload,
15
+ {
16
+ ...getterOptions
17
+ } = {},
18
+ ) => {
19
+
20
+ const rejectResponse = await argsWarden.responseIfRejectingArgs({
21
+ credsPayload,
22
+ });
23
+ if (rejectResponse) {
24
+ return rejectResponse;
25
+ }
26
+
27
+ const getterArgs = [
28
+ credsPayload,
29
+ '/shops.json',
30
+ {
31
+ ...getterOptions,
32
+ },
33
+ ];
34
+
35
+ return returnGetter
36
+ ? printifyGetter(...getterArgs)
37
+ : printifyGet(...getterArgs);
38
+ };
39
+
40
+ const funcApiConfig = {
41
+ argsWarden,
42
+ };
43
+
44
+ module.exports = {
45
+ printifyShopsGet: (...args) => printifyShopsGet(false, ...args),
46
+ printifyShopsGetter: (...args) => printifyShopsGet(true, ...args),
47
+ funcApiConfig,
48
+ };
49
+
50
+ /*
51
+ curl -X POST "http://localhost:8000/printifyShopsGet" \
52
+ -H "Content-Type: application/json" \
53
+ -d '{
54
+ "credsPayload": { "credsPath": "printify" }
55
+ }'
56
+ */
@@ -0,0 +1,84 @@
1
+ // https://developers.printify.com/#create-a-new-webhook
2
+
3
+ const { ArgsWarden, actionSingleOrMultiple, everyIfArray, valueProvided } = require('../utils');
4
+ const { credsValidator } = require('../validators');
5
+ const { printifyClient, resolveShopIdFromCreds } = require('../printify/printify.utils');
6
+
7
+ const webhookPayloadValidator = (webhookPayload) => {
8
+ return valueProvided(webhookPayload?.topic)
9
+ && valueProvided(webhookPayload?.webhookUrl);
10
+ };
11
+
12
+ const argsWarden = new ArgsWarden([
13
+ ['credsPayload', credsValidator],
14
+ ['webhookPayload', (webhookPayload) => everyIfArray(webhookPayloadValidator, webhookPayload)],
15
+ ]);
16
+
17
+ const printifyWebhookCreateSingle = async (
18
+ credsPayload,
19
+ webhookPayload,
20
+ {
21
+ shopId,
22
+ } = {},
23
+ ) => {
24
+ const {
25
+ topic,
26
+ webhookUrl,
27
+ } = webhookPayload;
28
+
29
+ return printifyClient.fetch({
30
+ requestPayload: {
31
+ method: 'post',
32
+ url: `/shops/${ shopId }/webhooks.json`,
33
+ body: {
34
+ topic,
35
+ url: webhookUrl,
36
+ },
37
+ },
38
+ context: { credsPayload },
39
+ });
40
+ };
41
+
42
+ const printifyWebhookCreate = async (
43
+ credsPayload,
44
+ webhookPayload,
45
+ {
46
+ shopId,
47
+ queueRunOptions,
48
+ } = {},
49
+ ) => {
50
+
51
+ const rejectResponse = await argsWarden.responseIfRejectingArgs({
52
+ credsPayload,
53
+ webhookPayload,
54
+ });
55
+ if (rejectResponse) {
56
+ return rejectResponse;
57
+ }
58
+
59
+ const shopIdResponse = await resolveShopIdFromCreds({ shopId, credsPayload });
60
+ if (!shopIdResponse.ok) {
61
+ return shopIdResponse;
62
+ }
63
+ ({ data: shopId } = shopIdResponse);
64
+
65
+ return actionSingleOrMultiple(
66
+ webhookPayload,
67
+ printifyWebhookCreateSingle,
68
+ (webhookPayloadItem) => ({
69
+ args: [credsPayload, webhookPayloadItem, { shopId }],
70
+ }),
71
+ {
72
+ ...(queueRunOptions ? { queueRunOptions } : {}),
73
+ },
74
+ );
75
+ };
76
+
77
+ const funcApiConfig = {
78
+ argsWarden,
79
+ };
80
+
81
+ module.exports = {
82
+ printifyWebhookCreate,
83
+ funcApiConfig,
84
+ };
@@ -0,0 +1,70 @@
1
+ // https://developers.printify.com/#delete-a-webhook
2
+
3
+ const { ArgsWarden, actionSingleOrMultiple } = require('../utils');
4
+ const { credsValidator } = require('../validators');
5
+ const { printifyClient, resolveShopIdFromCreds } = require('../printify/printify.utils');
6
+
7
+ const argsWarden = new ArgsWarden([
8
+ ['credsPayload', credsValidator],
9
+ ['webhookId'],
10
+ ]);
11
+
12
+ const printifyWebhookDeleteSingle = async (
13
+ credsPayload,
14
+ webhookId,
15
+ {
16
+ shopId,
17
+ } = {},
18
+ ) => {
19
+ return printifyClient.fetch({
20
+ requestPayload: {
21
+ method: 'delete',
22
+ url: `/shops/${ shopId }/webhooks/${ webhookId }.json`,
23
+ },
24
+ context: { credsPayload },
25
+ });
26
+ };
27
+
28
+ const printifyWebhookDelete = async (
29
+ credsPayload,
30
+ webhookId,
31
+ {
32
+ shopId,
33
+ queueRunOptions,
34
+ } = {},
35
+ ) => {
36
+
37
+ const rejectResponse = await argsWarden.responseIfRejectingArgs({
38
+ credsPayload,
39
+ webhookId,
40
+ });
41
+ if (rejectResponse) {
42
+ return rejectResponse;
43
+ }
44
+
45
+ const shopIdResponse = await resolveShopIdFromCreds({ shopId, credsPayload });
46
+ if (!shopIdResponse.ok) {
47
+ return shopIdResponse;
48
+ }
49
+ ({ data: shopId } = shopIdResponse);
50
+
51
+ return actionSingleOrMultiple(
52
+ webhookId,
53
+ printifyWebhookDeleteSingle,
54
+ (webhookIdItem) => ({
55
+ args: [credsPayload, webhookIdItem, { shopId }],
56
+ }),
57
+ {
58
+ ...(queueRunOptions ? { queueRunOptions } : {}),
59
+ },
60
+ );
61
+ };
62
+
63
+ const funcApiConfig = {
64
+ argsWarden,
65
+ };
66
+
67
+ module.exports = {
68
+ printifyWebhookDelete,
69
+ funcApiConfig,
70
+ };
@@ -0,0 +1,81 @@
1
+ // https://developers.printify.com/#update-a-webhook
2
+
3
+ const { ArgsWarden, actionSingleOrMultiple, everyIfArray, valueProvided } = require('../utils');
4
+ const { credsValidator } = require('../validators');
5
+ const { printifyClient, resolveShopIdFromCreds } = require('../printify/printify.utils');
6
+
7
+ const webhookUpdateValidator = (webhookUpdate) => {
8
+ return valueProvided(webhookUpdate?.webhookId)
9
+ && valueProvided(webhookUpdate?.updatePayload);
10
+ };
11
+
12
+ const argsWarden = new ArgsWarden([
13
+ ['credsPayload', credsValidator],
14
+ ['webhookUpdate', (webhookUpdate) => everyIfArray(webhookUpdateValidator, webhookUpdate)],
15
+ ]);
16
+
17
+ const printifyWebhookUpdateSingle = async (
18
+ credsPayload,
19
+ webhookUpdate,
20
+ {
21
+ shopId,
22
+ } = {},
23
+ ) => {
24
+ const {
25
+ webhookId,
26
+ updatePayload,
27
+ } = webhookUpdate;
28
+
29
+ return printifyClient.fetch({
30
+ requestPayload: {
31
+ method: 'put',
32
+ url: `/shops/${ shopId }/webhooks/${ webhookId }.json`,
33
+ body: updatePayload,
34
+ },
35
+ context: { credsPayload },
36
+ });
37
+ };
38
+
39
+ const printifyWebhookUpdate = async (
40
+ credsPayload,
41
+ webhookUpdate,
42
+ {
43
+ shopId,
44
+ queueRunOptions,
45
+ } = {},
46
+ ) => {
47
+
48
+ const rejectResponse = await argsWarden.responseIfRejectingArgs({
49
+ credsPayload,
50
+ webhookUpdate,
51
+ });
52
+ if (rejectResponse) {
53
+ return rejectResponse;
54
+ }
55
+
56
+ const shopIdResponse = await resolveShopIdFromCreds({ shopId, credsPayload });
57
+ if (!shopIdResponse.ok) {
58
+ return shopIdResponse;
59
+ }
60
+ ({ data: shopId } = shopIdResponse);
61
+
62
+ return actionSingleOrMultiple(
63
+ webhookUpdate,
64
+ printifyWebhookUpdateSingle,
65
+ (webhookUpdateItem) => ({
66
+ args: [credsPayload, webhookUpdateItem, { shopId }],
67
+ }),
68
+ {
69
+ ...(queueRunOptions ? { queueRunOptions } : {}),
70
+ },
71
+ );
72
+ };
73
+
74
+ const funcApiConfig = {
75
+ argsWarden,
76
+ };
77
+
78
+ module.exports = {
79
+ printifyWebhookUpdate,
80
+ funcApiConfig,
81
+ };
@@ -0,0 +1,56 @@
1
+ // https://developers.printify.com/#retrieve-a-list-of-webhooks
2
+
3
+ const { ArgsWarden } = require('../utils');
4
+ const { credsValidator } = require('../validators');
5
+ const { printifyGet, printifyGetter } = require('../printify/printifyGet');
6
+ const { resolveShopIdFromCreds } = require('../printify/printify.utils');
7
+
8
+ const argsWarden = new ArgsWarden([
9
+ ['credsPayload', credsValidator],
10
+ ]);
11
+
12
+ const printifyWebhooksGet = async (
13
+ returnGetter,
14
+
15
+ credsPayload,
16
+ {
17
+ shopId,
18
+ ...getterOptions
19
+ } = {},
20
+ ) => {
21
+
22
+ const rejectResponse = await argsWarden.responseIfRejectingArgs({
23
+ credsPayload,
24
+ });
25
+ if (rejectResponse) {
26
+ return rejectResponse;
27
+ }
28
+
29
+ const shopIdResponse = await resolveShopIdFromCreds({ shopId, credsPayload });
30
+ if (!shopIdResponse.ok) {
31
+ return shopIdResponse;
32
+ }
33
+ ({ data: shopId } = shopIdResponse);
34
+
35
+ const getterArgs = [
36
+ credsPayload,
37
+ `/shops/${ shopId }/webhooks.json`,
38
+ {
39
+ ...getterOptions,
40
+ },
41
+ ];
42
+
43
+ return returnGetter
44
+ ? printifyGetter(...getterArgs)
45
+ : printifyGet(...getterArgs);
46
+ };
47
+
48
+ const funcApiConfig = {
49
+ argsWarden,
50
+ };
51
+
52
+ module.exports = {
53
+ printifyWebhooksGet: (...args) => printifyWebhooksGet(false, ...args),
54
+ printifyWebhooksGetter: (...args) => printifyWebhooksGet(true, ...args),
55
+ funcApiConfig,
56
+ };
@@ -0,0 +1,6 @@
1
+ # Salesforce
2
+
3
+ - [Developer documentation](https://developer.salesforce.com/docs)
4
+ - [REST API Developer Guide](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/)
5
+
6
+ Org-specific REST and Bulk APIs at `{instance}.salesforce.com/services/data/v{version}/`, using OAuth 2.0 (and often connected-app JWT) rather than a single static API key.
@@ -22,8 +22,8 @@ const shopifyThingCreate = async (
22
22
  } = {},
23
23
  ) => {
24
24
 
25
- const rejectResponse = await argsWarden.responseIfRejectingArgs({
26
- credsPayload,
25
+ const rejectResponse = await argsWarden.responseIfRejectingArgs({
26
+ credsPayload,
27
27
  thingInput,
28
28
  });
29
29
  if (rejectResponse) {
@@ -2,27 +2,39 @@
2
2
 
3
3
  const { ArgsWarden } = require('../utils');
4
4
  const { credsValidator } = require('../validators');
5
- const { shopifyGet } = require('./shopifyGet');
5
+ const { shopifyGet, shopifyGetter } = require('./shopifyGet');
6
6
 
7
7
  const argsWarden = new ArgsWarden([
8
8
  ['credsPayload', credsValidator],
9
9
  ]);
10
10
 
11
11
  const shopifyThingsGet = async (
12
+ returnGetter, // Always bound
13
+
12
14
  credsPayload,
13
15
  {
14
16
  ...getterOptions // e.g. limit
15
17
  } = {},
16
18
  ) => {
17
19
 
18
- const rejectResponse = await argsWarden.responseIfRejectingArgs({
20
+ const rejectResponse = await argsWarden.responseIfRejectingArgs({
19
21
  credsPayload,
20
22
  });
21
23
  if (rejectResponse) {
22
24
  return rejectResponse;
23
25
  }
24
26
 
25
- return await shopifyGet(credsPayload, 'thing', { ...getterOptions });
27
+ const getterArgs = [
28
+ credsPayload,
29
+ 'thing',
30
+ {
31
+ ...getterOptions,
32
+ },
33
+ ];
34
+
35
+ return returnGetter
36
+ ? shopifyGetter(...getterArgs)
37
+ : shopifyGet(...getterArgs);
26
38
  };
27
39
 
28
40
  const funcApiConfig = {
@@ -30,7 +42,8 @@ const funcApiConfig = {
30
42
  };
31
43
 
32
44
  module.exports = {
33
- shopifyThingsGet,
45
+ shopifyThingsGet: (...args) => shopifyThingsGet(false, ...args),
46
+ shopifyThingsGetter: (...args) => shopifyThingsGet(true, ...args),
34
47
  funcApiConfig,
35
48
  };
36
49
 
@@ -20,7 +20,10 @@ const FUNC = async (
20
20
  } = {},
21
21
  ) => {
22
22
 
23
- const rejectResponse = await argsWarden.responseIfRejectingArgs({ credsPayload, thingId });
23
+ const rejectResponse = await argsWarden.responseIfRejectingArgs({
24
+ credsPayload,
25
+ thingId,
26
+ });
24
27
  if (rejectResponse) {
25
28
  return rejectResponse;
26
29
  }
@@ -12,7 +12,10 @@ const FUNC = async (
12
12
  options = {},
13
13
  ) => {
14
14
 
15
- const rejectResponse = await argsWarden.responseIfRejectingArgs({ credsPayload, arg });
15
+ const rejectResponse = await argsWarden.responseIfRejectingArgs({
16
+ credsPayload,
17
+ arg,
18
+ });
16
19
  if (rejectResponse) {
17
20
  return rejectResponse;
18
21
  }
@@ -18,7 +18,10 @@ const FUNC = async (
18
18
  } = {},
19
19
  ) => {
20
20
 
21
- const rejectResponse = await argsWarden.responseIfRejectingArgs({ credsPayload, thingId });
21
+ const rejectResponse = await argsWarden.responseIfRejectingArgs({
22
+ credsPayload,
23
+ thingId,
24
+ });
22
25
  if (rejectResponse) {
23
26
  return rejectResponse;
24
27
  }
@@ -15,7 +15,7 @@ const shopifyAbandonedCheckoutsGet = async (
15
15
  } = {},
16
16
  ) => {
17
17
 
18
- const rejectResponse = await argsWarden.responseIfRejectingArgs({
18
+ const rejectResponse = await argsWarden.responseIfRejectingArgs({
19
19
  credsPayload,
20
20
  });
21
21
  if (rejectResponse) {
@@ -15,7 +15,7 @@ const shopifyArticlesGet = async (
15
15
  } = {},
16
16
  ) => {
17
17
 
18
- const rejectResponse = await argsWarden.responseIfRejectingArgs({
18
+ const rejectResponse = await argsWarden.responseIfRejectingArgs({
19
19
  credsPayload,
20
20
  });
21
21
  if (rejectResponse) {
@@ -15,7 +15,7 @@ const shopifyBlogsGet = async (
15
15
  } = {},
16
16
  ) => {
17
17
 
18
- const rejectResponse = await argsWarden.responseIfRejectingArgs({
18
+ const rejectResponse = await argsWarden.responseIfRejectingArgs({
19
19
  credsPayload,
20
20
  });
21
21
  if (rejectResponse) {
@@ -1,6 +1,5 @@
1
1
  const { randomUUID } = require('crypto');
2
- const { Blob } = require('buffer');
3
- const fs = require('fs').promises;
2
+ const { openAsBlob, promises: fs } = require('fs');
4
3
 
5
4
  const { HOSTED, TEMP_DIR } = require('../constants');
6
5
  const { credsValidator } = require('../validators');
@@ -53,8 +52,8 @@ const shopifyBulkMutationDo = async (
53
52
  } = {},
54
53
  ) => {
55
54
 
56
- const rejectResponse = await argsWarden.responseIfRejectingArgs({
57
- credsPayload,
55
+ const rejectResponse = await argsWarden.responseIfRejectingArgs({
56
+ credsPayload,
58
57
  createOrResumeBulkOpPayload,
59
58
  });
60
59
  if (rejectResponse) {
@@ -106,14 +105,14 @@ const shopifyBulkMutationDo = async (
106
105
  const { url, parameters } = stagedUploadResponse.data.stagedTargets[0];
107
106
  const stagedUploadPath = parameters.find(({ name }) => name === 'key')?.value;
108
107
 
109
- const fileBuffer = await fs.readFile(filepath);
108
+ const fileBlob = await openAsBlob(filepath, { type: 'text/jsonl' });
110
109
 
111
110
  const formData = objectToFormData(
112
111
  Object.fromEntries(parameters.map(({ name, value }) => [name, value])),
113
112
  );
114
113
  formData.append(
115
114
  'file',
116
- new Blob([fileBuffer], { type: 'text/jsonl' }),
115
+ fileBlob,
117
116
  filepath.split('/').pop(),
118
117
  );
119
118
 
@@ -15,7 +15,7 @@ const shopifyBulkOperationsGet = async (
15
15
  } = {},
16
16
  ) => {
17
17
 
18
- const rejectResponse = await argsWarden.responseIfRejectingArgs({
18
+ const rejectResponse = await argsWarden.responseIfRejectingArgs({
19
19
  credsPayload,
20
20
  });
21
21
  if (rejectResponse) {