hostinger-api-mcp 1.35.5 → 1.36.0

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.
@@ -15,7 +15,7 @@ export interface OpenApiTool extends Tool {
15
15
 
16
16
  const tools: OpenApiTool[] = [
17
17
  {
18
- "name": "agencyHosting_deployNodeStaticWebsite",
18
+ "name": "agency-hosting_deployNodeStaticWebsite",
19
19
  "topic": "agency-hosting",
20
20
  "description": "Deploy a node-static Agency Plan (h5g) website from an archive file. WARNING: this overwrites the website's existing contents and cannot be undone — always confirm with the user before proceeding. Use this for Agency Plan websites of type node-static (a Node.js-built static site that requires a build step or a plain simple static site). The tool resolves the website from its domain, uploads the archive to the website's file browser over TUS, and triggers the build-assets process which builds the site and deploys the result to public_html. This operation is synchronous: the build and deployment complete before the tool returns, so the website is live as soon as the tool finishes successfully — there is no separate asynchronous build to wait for or poll. For plain PHP applications that should be extracted as-is, use agencyHosting_deployPhpApplication instead. The website UID is automatically resolved from the domain.",
21
21
  "method": "",
@@ -49,7 +49,7 @@ const tools: OpenApiTool[] = [
49
49
  "group": "agency-hosting"
50
50
  },
51
51
  {
52
- "name": "agencyHosting_deployPhpApplication",
52
+ "name": "agency-hosting_deployPhpApplication",
53
53
  "topic": "agency-hosting",
54
54
  "description": "Deploy a PHP (or other non-build) Agency Plan (h5g) website from an archive file. WARNING: this overwrites the website's existing contents and cannot be undone — always confirm with the user before proceeding. Use this for Agency Plan websites where the archive contents should be extracted and served as-is with no build step (e.g., PHP applications). The tool resolves the website from its domain, uploads the archive to the website's file browser over TUS, and triggers the import-archive process which overwrites the website contents with the archive contents. This operation is synchronous: the archive is extracted and deployed before the tool returns, so the website is live as soon as the tool finishes successfully — there is no separate asynchronous build to wait for or poll. For node-static websites that require a build step, use agencyHosting_deployNodeStaticWebsite instead. The website UID is automatically resolved from the domain.",
55
55
  "method": "",
@@ -340,7 +340,7 @@ const tools: OpenApiTool[] = [
340
340
  "group": "hosting"
341
341
  },
342
342
  {
343
- "name": "agency-hosting_listAvailableDatacentersForAnAgencyPlanOrderV1",
343
+ "name": "agency-hosting_listAvailableDatacentersV1",
344
344
  "description": "Lists the datacenters available for provisioning a new website on the given Agency Plan\nhosting order.\n\nEach datacenter includes a `pinger_url` you can ping from the client to measure round-trip\nlatency; comparing the results across datacenters lets you pick the nearest one (lowest\nping) before choosing its `code` as the `datacenter_code` when creating a website setup.",
345
345
  "method": "GET",
346
346
  "path": "/api/agency-hosting/v1/orders/{order_id}/datacenters",
@@ -364,7 +364,7 @@ const tools: OpenApiTool[] = [
364
364
  "group": "agency-hosting"
365
365
  },
366
366
  {
367
- "name": "agency-hosting_changeAgencyPlanWebsiteDomainV1",
367
+ "name": "agency-hosting_changeWebsiteDomainV1",
368
368
  "description": "Changes the primary domain for an Agency Plan website.\n\nProvide the current domain in the path and the new domain in the request body.\nSet domain to null to revert to the temporary domain.",
369
369
  "method": "PUT",
370
370
  "path": "/api/agency-hosting/v1/websites/{website_uid}/domains/{from_domain}",
@@ -398,7 +398,7 @@ const tools: OpenApiTool[] = [
398
398
  "group": "agency-hosting"
399
399
  },
400
400
  {
401
- "name": "agency-hosting_linkDomainToAgencyPlanWebsiteV1",
401
+ "name": "agency-hosting_linkDomainToWebsiteV1",
402
402
  "description": "Links a domain to the specified Agency Plan website so it can serve traffic for that domain.",
403
403
  "method": "POST",
404
404
  "path": "/api/agency-hosting/v1/websites/{website_uid}/domains",
@@ -427,7 +427,7 @@ const tools: OpenApiTool[] = [
427
427
  "group": "agency-hosting"
428
428
  },
429
429
  {
430
- "name": "agency-hosting_listAgencyPlanDomainsV1",
430
+ "name": "agency-hosting_listDomainsV1",
431
431
  "description": "Returns a paginated list of domains associated with Agency Plan websites accessible to the authenticated client.\n\nUse the website_uuids filter to narrow results to specific websites.",
432
432
  "method": "GET",
433
433
  "path": "/api/agency-hosting/v1/domains",
@@ -461,7 +461,7 @@ const tools: OpenApiTool[] = [
461
461
  "group": "agency-hosting"
462
462
  },
463
463
  {
464
- "name": "agency-hosting_unlinkDomainFromAgencyPlanWebsiteV1",
464
+ "name": "agency-hosting_unlinkDomainFromWebsiteV1",
465
465
  "description": "Unlinks a domain from the specified Agency Plan website.\n\nThe website stops serving traffic on this domain immediately.\n\nWebsite files and database are preserved, and any other linked domains remain accessible.\n\nIf this is the only domain on the website, unlinking leaves the website without an accessible domain.",
466
466
  "method": "DELETE",
467
467
  "path": "/api/agency-hosting/v1/websites/{website_uid}/domains/{domain}",
@@ -490,7 +490,7 @@ const tools: OpenApiTool[] = [
490
490
  "group": "agency-hosting"
491
491
  },
492
492
  {
493
- "name": "agency-hosting_importAgencyPlanWebsiteFromArchiveV1",
493
+ "name": "agency-hosting_importWebsiteFromArchiveV1",
494
494
  "description": "Imports an Agency Plan website from an already-uploaded archive.\n\nUpload the archive to the website's root directory via file browser first, then provide its\nfilename in this request. Website contents are overwritten by the archive contents. Supported\narchive types: .zip, .tar, .tar.gz, .tgz.",
495
495
  "method": "POST",
496
496
  "path": "/api/agency-hosting/v1/websites/{website_uid}/files/import-archive",
@@ -519,7 +519,7 @@ const tools: OpenApiTool[] = [
519
519
  "group": "agency-hosting"
520
520
  },
521
521
  {
522
- "name": "agency-hosting_listAgencyPlanOrdersV1",
522
+ "name": "agency-hosting_listOrdersV1",
523
523
  "description": "Returns a paginated list of Agency Plan orders accessible to the authenticated client.",
524
524
  "method": "GET",
525
525
  "path": "/api/agency-hosting/v1/orders",
@@ -545,7 +545,7 @@ const tools: OpenApiTool[] = [
545
545
  "group": "agency-hosting"
546
546
  },
547
547
  {
548
- "name": "agency-hosting_provisionANewAgencyPlanWebsiteV1",
548
+ "name": "agency-hosting_createANewWebsiteV1",
549
549
  "description": "Provisions a new website on one of your Agency Plan hosting orders.\n\nChoose the datacenter, stack (`flavor`), and PHP version for the site. Optionally attach\nyour own `domain` — omit it, set it to `null`, or leave it unavailable and a free\n`*.hostingersite.com` subdomain is generated instead — and/or install WordPress by\nsupplying the `wordpress` details (admin account, site title, and language).\n\nCommon setups:\n- **Plain PHP site**: `flavor` set to `php-fpm`, with `settings.php.version`; omit\n `wordpress` and `type`.\n- **WordPress site**: `flavor` set to the desired WordPress version (e.g. `wp-7.0`), plus\n the `wordpress` block (admin account, title, language).\n- **Static/Node.js frontend app**: `flavor` set to `php-fpm` and `type` set to\n `node-static`.\n\nProvisioning runs in the background, so the response returns immediately with a setup UUID\nthat identifies the job. The new website becomes reachable once provisioning finishes.",
550
550
  "method": "POST",
551
551
  "path": "/api/agency-hosting/v1/orders/{order_id}/websites/setups",
@@ -696,7 +696,7 @@ const tools: OpenApiTool[] = [
696
696
  "group": "agency-hosting"
697
697
  },
698
698
  {
699
- "name": "agency-hosting_getAgencyPlanWebsiteSetupStatusV1",
699
+ "name": "agency-hosting_getWebsiteSetupStatusV1",
700
700
  "description": "Returns the current status of an Agency Plan website setup started via the setups\nendpoint.\n\nPoll this endpoint using the `setup_uuid` returned from the provisioning request until\n`status` becomes `completed`, at which point `website_uid` identifies the new website.",
701
701
  "method": "GET",
702
702
  "path": "/api/agency-hosting/v1/orders/{order_id}/websites/setups/{setup_uuid}",
@@ -725,7 +725,7 @@ const tools: OpenApiTool[] = [
725
725
  "group": "agency-hosting"
726
726
  },
727
727
  {
728
- "name": "agency-hosting_buildAgencyPlanWebsiteNodeJSAssetsV1",
728
+ "name": "agency-hosting_buildWebsiteNodeJSAssetsV1",
729
729
  "description": "Builds and deploys a Node.js application for an Agency Plan website from an already-uploaded archive.\n\nUpload the archive to file browser first, then provide its relative path from document root in this request.\nWebsite contents are overwritten by the build result, which is deployed to public_html.",
730
730
  "method": "POST",
731
731
  "path": "/api/agency-hosting/v1/websites/{website_uid}/build-assets",
@@ -754,7 +754,7 @@ const tools: OpenApiTool[] = [
754
754
  "group": "agency-hosting"
755
755
  },
756
756
  {
757
- "name": "agency-hosting_clearAgencyPlanWebsiteCacheV1",
757
+ "name": "agency-hosting_clearWebsiteCacheV1",
758
758
  "description": "Clears cache for all domains associated with an Agency Plan website, including its preview domain.\n\nThis operation clears all cache types for the website.",
759
759
  "method": "DELETE",
760
760
  "path": "/api/agency-hosting/v1/websites/{website_uid}/cache",
@@ -778,7 +778,7 @@ const tools: OpenApiTool[] = [
778
778
  "group": "agency-hosting"
779
779
  },
780
780
  {
781
- "name": "agency-hosting_listAgencyPlanWebsiteCronJobsV1",
781
+ "name": "agency-hosting_listWebsiteCronJobsV1",
782
782
  "description": "Returns a paginated list of cron jobs configured for an Agency Plan website.\n\nEach entry includes the schedule expression and the command executed on that schedule.",
783
783
  "method": "GET",
784
784
  "path": "/api/agency-hosting/v1/websites/{website_uid}/cron-jobs",
@@ -810,7 +810,7 @@ const tools: OpenApiTool[] = [
810
810
  "group": "agency-hosting"
811
811
  },
812
812
  {
813
- "name": "agency-hosting_createAgencyPlanWebsiteCronJobV1",
813
+ "name": "agency-hosting_createWebsiteCronJobV1",
814
814
  "description": "Creates a cron job for an Agency Plan website from a schedule expression and a command.\n\nReturns the created cron job, including its uuid, which is required to delete the cron job.",
815
815
  "method": "POST",
816
816
  "path": "/api/agency-hosting/v1/websites/{website_uid}/cron-jobs",
@@ -844,7 +844,7 @@ const tools: OpenApiTool[] = [
844
844
  "group": "agency-hosting"
845
845
  },
846
846
  {
847
- "name": "agency-hosting_deleteAgencyPlanWebsiteCronJobV1",
847
+ "name": "agency-hosting_deleteWebsiteCronJobV1",
848
848
  "description": "Permanently deletes the cron job identified by its uuid from an Agency Plan website.\n\nThe operation is idempotent: deleting a cron job that does not exist succeeds without error.",
849
849
  "method": "DELETE",
850
850
  "path": "/api/agency-hosting/v1/websites/{website_uid}/cron-jobs/{uuid}",
@@ -873,7 +873,7 @@ const tools: OpenApiTool[] = [
873
873
  "group": "agency-hosting"
874
874
  },
875
875
  {
876
- "name": "agency-hosting_listAgencyPlanWebsiteDatabasesV1",
876
+ "name": "agency-hosting_listWebsiteDatabasesV1",
877
877
  "description": "Returns a paginated list of MySQL databases created for an Agency Plan website.\n\nEach entry includes the database's non-system users.",
878
878
  "method": "GET",
879
879
  "path": "/api/agency-hosting/v1/websites/{website_uid}/databases",
@@ -905,7 +905,7 @@ const tools: OpenApiTool[] = [
905
905
  "group": "agency-hosting"
906
906
  },
907
907
  {
908
- "name": "agency-hosting_createAgencyPlanWebsiteDatabaseV1",
908
+ "name": "agency-hosting_createWebsiteDatabaseV1",
909
909
  "description": "Creates a MySQL database with a dedicated user for an Agency Plan website.\n\nThe database name, username, and password must all be provided by the caller.",
910
910
  "method": "POST",
911
911
  "path": "/api/agency-hosting/v1/websites/{website_uid}/databases",
@@ -944,7 +944,7 @@ const tools: OpenApiTool[] = [
944
944
  "group": "agency-hosting"
945
945
  },
946
946
  {
947
- "name": "agency-hosting_deleteAgencyPlanWebsiteDatabaseV1",
947
+ "name": "agency-hosting_deleteWebsiteDatabaseV1",
948
948
  "description": "Permanently deletes a MySQL database and all its data from an Agency Plan website, including its users.\n\nThe operation is idempotent: deleting a database that does not exist succeeds without error.",
949
949
  "method": "DELETE",
950
950
  "path": "/api/agency-hosting/v1/websites/{website_uid}/databases/{database_name}",
@@ -973,7 +973,7 @@ const tools: OpenApiTool[] = [
973
973
  "group": "agency-hosting"
974
974
  },
975
975
  {
976
- "name": "agency-hosting_createAgencyPlanWebsiteDatabaseUserV1",
976
+ "name": "agency-hosting_createWebsiteDatabaseUserV1",
977
977
  "description": "Creates a user for an existing database on an Agency Plan website.\n\nEach database supports a single non-system user; creating a user for a database that already has one fails.",
978
978
  "method": "POST",
979
979
  "path": "/api/agency-hosting/v1/websites/{website_uid}/databases/{database_name}/users",
@@ -1016,7 +1016,7 @@ const tools: OpenApiTool[] = [
1016
1016
  "group": "agency-hosting"
1017
1017
  },
1018
1018
  {
1019
- "name": "agency-hosting_deleteAgencyPlanWebsiteDatabaseUserV1",
1019
+ "name": "agency-hosting_deleteWebsiteDatabaseUserV1",
1020
1020
  "description": "Permanently deletes a database user from an Agency Plan website database, revoking all access it had.\n\nThe operation is idempotent: deleting a user that does not exist succeeds without error.",
1021
1021
  "method": "DELETE",
1022
1022
  "path": "/api/agency-hosting/v1/websites/{website_uid}/databases/{database_name}/users/{database_user_name}",
@@ -1050,7 +1050,7 @@ const tools: OpenApiTool[] = [
1050
1050
  "group": "agency-hosting"
1051
1051
  },
1052
1052
  {
1053
- "name": "agency-hosting_getAgencyPlanWebsiteDetailsV1",
1053
+ "name": "agency-hosting_getWebsiteDetailsV1",
1054
1054
  "description": "Retrieves detailed information about a specific Agency Plan website, including configuration,\nstatus, metadata, hosting plan details, and resource quotas.",
1055
1055
  "method": "GET",
1056
1056
  "path": "/api/agency-hosting/v1/websites/{website_uid}",
@@ -1074,7 +1074,7 @@ const tools: OpenApiTool[] = [
1074
1074
  "group": "agency-hosting"
1075
1075
  },
1076
1076
  {
1077
- "name": "agency-hosting_deleteAgencyPlanWebsiteV1",
1077
+ "name": "agency-hosting_deleteWebsiteV1",
1078
1078
  "description": "Permanently deletes an Agency Plan website. Deletion is processed asynchronously: the\nwebsite is immediately transitioned to a deleting state and the underlying server\nresources are removed in the background.",
1079
1079
  "method": "DELETE",
1080
1080
  "path": "/api/agency-hosting/v1/websites/{website_uid}",
@@ -1098,7 +1098,7 @@ const tools: OpenApiTool[] = [
1098
1098
  "group": "agency-hosting"
1099
1099
  },
1100
1100
  {
1101
- "name": "agency-hosting_listRunningAgencyPlanWebsiteProcessesV1",
1101
+ "name": "agency-hosting_listWebsiteProcessesV1",
1102
1102
  "description": "Lists active and recently completed asynchronous processes for an Agency Plan website.\n\nEach process has a unique ID (for tracking), a type, and a status (running, completed, failed).\nPoll this endpoint after initiating async operations (SSL setup, backups, cloning) to track progress.",
1103
1103
  "method": "GET",
1104
1104
  "path": "/api/agency-hosting/v1/websites/{website_uid}/processes",
@@ -1122,7 +1122,7 @@ const tools: OpenApiTool[] = [
1122
1122
  "group": "agency-hosting"
1123
1123
  },
1124
1124
  {
1125
- "name": "agency-hosting_changeAgencyPlanWebsiteWordPressCoreVersionV1",
1125
+ "name": "agency-hosting_changeWordPressVersionV1",
1126
1126
  "description": "Changes the installed WordPress core version on an Agency Plan website to one of the versions available for installation.",
1127
1127
  "method": "PATCH",
1128
1128
  "path": "/api/agency-hosting/v1/websites/{website_uid}/wordpress/settings/version",
@@ -1151,7 +1151,7 @@ const tools: OpenApiTool[] = [
1151
1151
  "group": "agency-hosting"
1152
1152
  },
1153
1153
  {
1154
- "name": "agency-hosting_getAgencyPlanWebsiteWordPressSettingsV1",
1154
+ "name": "agency-hosting_getWordPressSettingsV1",
1155
1155
  "description": "Returns the current WordPress settings for an Agency Plan website: installed core version,\nLiteSpeed Cache plugin status, object cache status, and maintenance mode status.",
1156
1156
  "method": "GET",
1157
1157
  "path": "/api/agency-hosting/v1/websites/{website_uid}/wordpress/settings",
@@ -1175,7 +1175,7 @@ const tools: OpenApiTool[] = [
1175
1175
  "group": "agency-hosting"
1176
1176
  },
1177
1177
  {
1178
- "name": "agency-hosting_listAvailableWordPressVersionsForAnAgencyPlanWebsiteV1",
1178
+ "name": "agency-hosting_listAvailableWordPressVersionsV1",
1179
1179
  "description": "Lists the WordPress core versions available for installation on an Agency Plan website.",
1180
1180
  "method": "GET",
1181
1181
  "path": "/api/agency-hosting/v1/websites/{website_uid}/wordpress/settings/versions",
@@ -3010,6 +3010,35 @@ const tools: OpenApiTool[] = [
3010
3010
  ],
3011
3011
  "group": "ecommerce"
3012
3012
  },
3013
+ {
3014
+ "name": "ecommerce_createAProductImageUploadURLV1",
3015
+ "description": "Returns a signed URL to upload a product image to (multipart/form-data POST). Then call the\nattach-image endpoint with the returned object_name to scan and attach it to the product.",
3016
+ "method": "POST",
3017
+ "path": "/api/ecommerce/v1/stores/{store_id}/products/{product_id}/images/upload-url",
3018
+ "inputSchema": {
3019
+ "type": "object",
3020
+ "properties": {
3021
+ "store_id": {
3022
+ "type": "string",
3023
+ "description": "The ID of the store the product belongs to."
3024
+ },
3025
+ "product_id": {
3026
+ "type": "string",
3027
+ "description": "The ID of the product the image will be attached to."
3028
+ }
3029
+ },
3030
+ "required": [
3031
+ "store_id",
3032
+ "product_id"
3033
+ ]
3034
+ },
3035
+ "security": [
3036
+ {
3037
+ "apiToken": []
3038
+ }
3039
+ ],
3040
+ "group": "ecommerce"
3041
+ },
3013
3042
  {
3014
3043
  "name": "ecommerce_createDigitalProductV1",
3015
3044
  "description": "Create a published digital product with a single variant and an optional external download link.",
@@ -3100,7 +3129,7 @@ const tools: OpenApiTool[] = [
3100
3129
  },
3101
3130
  {
3102
3131
  "name": "ecommerce_uploadAndAttachAProductImageV1",
3103
- "description": "Upload a raster image (JPEG, PNG, GIF or WebP, max 15MB) and attach it to a product in a single call.\nThe image is virus-scanned and validated by content, then stored on the CDN. Set is_thumbnail to make\nit the product's primary image.",
3132
+ "description": "Fetch a raster image (JPEG, PNG, GIF or WebP, max 15MB) from a URL and attach it to a product in a\nsingle call. The image is virus-scanned and validated by content, then stored on the CDN. Set\nis_thumbnail to make it the product's primary image.",
3104
3133
  "method": "POST",
3105
3134
  "path": "/api/ecommerce/v1/stores/{store_id}/products/{product_id}/images",
3106
3135
  "inputSchema": {
@@ -3114,9 +3143,13 @@ const tools: OpenApiTool[] = [
3114
3143
  "type": "string",
3115
3144
  "description": "The ID of the product to attach the image to."
3116
3145
  },
3117
- "image": {
3146
+ "image_url": {
3118
3147
  "type": "string",
3119
- "description": "Raster image file (JPEG, PNG, GIF or WebP), maximum 15MB. SVG is not accepted."
3148
+ "description": "Publicly reachable URL of the raster image (JPEG, PNG, GIF or WebP), maximum 15MB. The image is\nfetched, virus-scanned and validated by content, then stored on the CDN. SVG is not accepted.\nProvide either this or object_name."
3149
+ },
3150
+ "object_name": {
3151
+ "type": "string",
3152
+ "description": "Key returned by the upload-url endpoint. Provide this instead of image_url to attach an uploaded image."
3120
3153
  },
3121
3154
  "is_thumbnail": {
3122
3155
  "type": "boolean",
@@ -3125,8 +3158,7 @@ const tools: OpenApiTool[] = [
3125
3158
  },
3126
3159
  "required": [
3127
3160
  "store_id",
3128
- "product_id",
3129
- "image"
3161
+ "product_id"
3130
3162
  ]
3131
3163
  },
3132
3164
  "security": [
@@ -6382,6 +6414,113 @@ const tools: OpenApiTool[] = [
6382
6414
  ],
6383
6415
  "group": "mail"
6384
6416
  },
6417
+ {
6418
+ "name": "reach_getAutomationDetailsV1",
6419
+ "description": "Get a single automation with the counts of contacts that entered it, are moving through it,\nfinished it or failed on the way.\n\nThis describes the automation itself. To see the workflow it runs, use the steps endpoint.",
6420
+ "method": "GET",
6421
+ "path": "/api/reach/v1/profiles/{profileUuid}/automations/{automationUuid}",
6422
+ "inputSchema": {
6423
+ "type": "object",
6424
+ "properties": {
6425
+ "profileUuid": {
6426
+ "type": "string",
6427
+ "description": "Profile uuid parameter"
6428
+ },
6429
+ "automationUuid": {
6430
+ "type": "string",
6431
+ "description": "Automation uuid parameter"
6432
+ }
6433
+ },
6434
+ "required": [
6435
+ "profileUuid",
6436
+ "automationUuid"
6437
+ ]
6438
+ },
6439
+ "security": [
6440
+ {
6441
+ "apiToken": []
6442
+ }
6443
+ ],
6444
+ "group": "reach"
6445
+ },
6446
+ {
6447
+ "name": "reach_listAutomationsV1",
6448
+ "description": "Get a paginated list of the automations in a profile.\n\nEvery automation comes with the counts of contacts that entered it, are moving through it,\nfinished it or failed on the way. Those counts describe the contact journey and are not\nemail engagement metrics - for opens, clicks and unsubscribes use the campaign statistics\nendpoint instead.",
6449
+ "method": "GET",
6450
+ "path": "/api/reach/v1/profiles/{profileUuid}/automations",
6451
+ "inputSchema": {
6452
+ "type": "object",
6453
+ "properties": {
6454
+ "profileUuid": {
6455
+ "type": "string",
6456
+ "description": "Profile uuid parameter"
6457
+ },
6458
+ "status": {
6459
+ "type": "string",
6460
+ "description": "Filter automations by status.\n\nThere is no `completed` status. An automation that has finished for every contact still\nreports `active`.",
6461
+ "enum": [
6462
+ "active",
6463
+ "paused",
6464
+ "draft"
6465
+ ]
6466
+ },
6467
+ "sort_direction": {
6468
+ "type": "string",
6469
+ "description": "Order automations by creation date. Newest first unless set to `asc`.",
6470
+ "enum": [
6471
+ "asc",
6472
+ "desc"
6473
+ ]
6474
+ },
6475
+ "page": {
6476
+ "type": "integer",
6477
+ "description": "Page number"
6478
+ },
6479
+ "per_page": {
6480
+ "type": "integer",
6481
+ "description": "Number of items per page"
6482
+ }
6483
+ },
6484
+ "required": [
6485
+ "profileUuid"
6486
+ ]
6487
+ },
6488
+ "security": [
6489
+ {
6490
+ "apiToken": []
6491
+ }
6492
+ ],
6493
+ "group": "reach"
6494
+ },
6495
+ {
6496
+ "name": "reach_listAutomationStepsV1",
6497
+ "description": "Get the workflow of an automation as a flat list of steps.\n\nThe steps form a tree rather than a straight line: follow `parent_uuid` to reconstruct the\nbranches, and use `step_order` to order the steps that share a parent. An automation with no\nsteps yet returns an empty list.",
6498
+ "method": "GET",
6499
+ "path": "/api/reach/v1/profiles/{profileUuid}/automations/{automationUuid}/steps",
6500
+ "inputSchema": {
6501
+ "type": "object",
6502
+ "properties": {
6503
+ "profileUuid": {
6504
+ "type": "string",
6505
+ "description": "Profile uuid parameter"
6506
+ },
6507
+ "automationUuid": {
6508
+ "type": "string",
6509
+ "description": "Automation uuid parameter"
6510
+ }
6511
+ },
6512
+ "required": [
6513
+ "profileUuid",
6514
+ "automationUuid"
6515
+ ]
6516
+ },
6517
+ "security": [
6518
+ {
6519
+ "apiToken": []
6520
+ }
6521
+ ],
6522
+ "group": "reach"
6523
+ },
6385
6524
  {
6386
6525
  "name": "reach_deleteAContactV1",
6387
6526
  "description": "Delete a contact with the specified UUID.\n\nThis endpoint permanently removes a contact from the email marketing system.\n\n**Deprecated.** This endpoint cannot target a profile, so it always falls back to the\nclient's default profile and cannot delete contacts of any other profile. Use\n`DELETE /api/reach/v1/profiles/{profileUuid}/contacts/{contactUuid}` instead.",
@@ -45,6 +45,35 @@ export default [
45
45
  ],
46
46
  "group": "ecommerce"
47
47
  },
48
+ {
49
+ "name": "ecommerce_createAProductImageUploadURLV1",
50
+ "description": "Returns a signed URL to upload a product image to (multipart/form-data POST). Then call the\nattach-image endpoint with the returned object_name to scan and attach it to the product.",
51
+ "method": "POST",
52
+ "path": "/api/ecommerce/v1/stores/{store_id}/products/{product_id}/images/upload-url",
53
+ "inputSchema": {
54
+ "type": "object",
55
+ "properties": {
56
+ "store_id": {
57
+ "type": "string",
58
+ "description": "The ID of the store the product belongs to."
59
+ },
60
+ "product_id": {
61
+ "type": "string",
62
+ "description": "The ID of the product the image will be attached to."
63
+ }
64
+ },
65
+ "required": [
66
+ "store_id",
67
+ "product_id"
68
+ ]
69
+ },
70
+ "security": [
71
+ {
72
+ "apiToken": []
73
+ }
74
+ ],
75
+ "group": "ecommerce"
76
+ },
48
77
  {
49
78
  "name": "ecommerce_createDigitalProductV1",
50
79
  "description": "Create a published digital product with a single variant and an optional external download link.",
@@ -135,7 +164,7 @@ export default [
135
164
  },
136
165
  {
137
166
  "name": "ecommerce_uploadAndAttachAProductImageV1",
138
- "description": "Upload a raster image (JPEG, PNG, GIF or WebP, max 15MB) and attach it to a product in a single call.\nThe image is virus-scanned and validated by content, then stored on the CDN. Set is_thumbnail to make\nit the product's primary image.",
167
+ "description": "Fetch a raster image (JPEG, PNG, GIF or WebP, max 15MB) from a URL and attach it to a product in a\nsingle call. The image is virus-scanned and validated by content, then stored on the CDN. Set\nis_thumbnail to make it the product's primary image.",
139
168
  "method": "POST",
140
169
  "path": "/api/ecommerce/v1/stores/{store_id}/products/{product_id}/images",
141
170
  "inputSchema": {
@@ -149,9 +178,13 @@ export default [
149
178
  "type": "string",
150
179
  "description": "The ID of the product to attach the image to."
151
180
  },
152
- "image": {
181
+ "image_url": {
182
+ "type": "string",
183
+ "description": "Publicly reachable URL of the raster image (JPEG, PNG, GIF or WebP), maximum 15MB. The image is\nfetched, virus-scanned and validated by content, then stored on the CDN. SVG is not accepted.\nProvide either this or object_name."
184
+ },
185
+ "object_name": {
153
186
  "type": "string",
154
- "description": "Raster image file (JPEG, PNG, GIF or WebP), maximum 15MB. SVG is not accepted."
187
+ "description": "Key returned by the upload-url endpoint. Provide this instead of image_url to attach an uploaded image."
155
188
  },
156
189
  "is_thumbnail": {
157
190
  "type": "boolean",
@@ -160,8 +193,7 @@ export default [
160
193
  },
161
194
  "required": [
162
195
  "store_id",
163
- "product_id",
164
- "image"
196
+ "product_id"
165
197
  ]
166
198
  },
167
199
  "security": [
@@ -59,6 +59,35 @@ const tools: OpenApiTool[] = [
59
59
  ],
60
60
  "group": "ecommerce"
61
61
  },
62
+ {
63
+ "name": "ecommerce_createAProductImageUploadURLV1",
64
+ "description": "Returns a signed URL to upload a product image to (multipart/form-data POST). Then call the\nattach-image endpoint with the returned object_name to scan and attach it to the product.",
65
+ "method": "POST",
66
+ "path": "/api/ecommerce/v1/stores/{store_id}/products/{product_id}/images/upload-url",
67
+ "inputSchema": {
68
+ "type": "object",
69
+ "properties": {
70
+ "store_id": {
71
+ "type": "string",
72
+ "description": "The ID of the store the product belongs to."
73
+ },
74
+ "product_id": {
75
+ "type": "string",
76
+ "description": "The ID of the product the image will be attached to."
77
+ }
78
+ },
79
+ "required": [
80
+ "store_id",
81
+ "product_id"
82
+ ]
83
+ },
84
+ "security": [
85
+ {
86
+ "apiToken": []
87
+ }
88
+ ],
89
+ "group": "ecommerce"
90
+ },
62
91
  {
63
92
  "name": "ecommerce_createDigitalProductV1",
64
93
  "description": "Create a published digital product with a single variant and an optional external download link.",
@@ -149,7 +178,7 @@ const tools: OpenApiTool[] = [
149
178
  },
150
179
  {
151
180
  "name": "ecommerce_uploadAndAttachAProductImageV1",
152
- "description": "Upload a raster image (JPEG, PNG, GIF or WebP, max 15MB) and attach it to a product in a single call.\nThe image is virus-scanned and validated by content, then stored on the CDN. Set is_thumbnail to make\nit the product's primary image.",
181
+ "description": "Fetch a raster image (JPEG, PNG, GIF or WebP, max 15MB) from a URL and attach it to a product in a\nsingle call. The image is virus-scanned and validated by content, then stored on the CDN. Set\nis_thumbnail to make it the product's primary image.",
153
182
  "method": "POST",
154
183
  "path": "/api/ecommerce/v1/stores/{store_id}/products/{product_id}/images",
155
184
  "inputSchema": {
@@ -163,9 +192,13 @@ const tools: OpenApiTool[] = [
163
192
  "type": "string",
164
193
  "description": "The ID of the product to attach the image to."
165
194
  },
166
- "image": {
195
+ "image_url": {
196
+ "type": "string",
197
+ "description": "Publicly reachable URL of the raster image (JPEG, PNG, GIF or WebP), maximum 15MB. The image is\nfetched, virus-scanned and validated by content, then stored on the CDN. SVG is not accepted.\nProvide either this or object_name."
198
+ },
199
+ "object_name": {
167
200
  "type": "string",
168
- "description": "Raster image file (JPEG, PNG, GIF or WebP), maximum 15MB. SVG is not accepted."
201
+ "description": "Key returned by the upload-url endpoint. Provide this instead of image_url to attach an uploaded image."
169
202
  },
170
203
  "is_thumbnail": {
171
204
  "type": "boolean",
@@ -174,8 +207,7 @@ const tools: OpenApiTool[] = [
174
207
  },
175
208
  "required": [
176
209
  "store_id",
177
- "product_id",
178
- "image"
210
+ "product_id"
179
211
  ]
180
212
  },
181
213
  "security": [