From 156b29b5e8b392fd86c17a45deb04f4e16902199 Mon Sep 17 00:00:00 2001 From: Ayushi Swaroop Date: Mon, 25 May 2026 17:10:17 +0530 Subject: [PATCH 1/6] Zipped Output & Folder Structure Documentation --- src/pages/getting-started/changelog/index.md | 7 + .../working-with-datamerge-api/index.md | 122 ++++++++++++++++++ .../records-foldercsv.png | Bin 0 -> 28321 bytes static/indesignapi.json | 24 +++- 4 files changed, 150 insertions(+), 3 deletions(-) create mode 100755 src/pages/guides/working-with-datamerge-api/records-foldercsv.png diff --git a/src/pages/getting-started/changelog/index.md b/src/pages/getting-started/changelog/index.md index 9c2381e..b9ecb65 100644 --- a/src/pages/getting-started/changelog/index.md +++ b/src/pages/getting-started/changelog/index.md @@ -41,6 +41,12 @@ twitter: This page contains the release notes and version history for Adobe InDesign APIs. Stay updated with the latest features, improvements, and bug fixes. +## July 29, 2026 + +### Enhancements + +- **Folder Structure and Zipped Output Support in Data Merge API:** The `POST /v4/merge-data` endpoint now supports organizing your outputs in a structured folder hierarchy, and a zipped folder containing all the outputs that have been created from the successful data merge. [Learn more about Folder Structure and Zipped Output support.][15] + ## June 2, 2026 ### Enhancements @@ -143,3 +149,4 @@ This page contains the release notes and version history for Adobe InDesign APIs [12]: ../../guides/pdf-to-indesign-conversion-notes/index.md [13]: ../concepts/index.md#api-capability-naming-rules [14]: ../../guides/working-with-datamerge-api/index.md#variable-file-naming-support-in-data-merge-api +[15]: ../../guides/working-with-datamerge-api/index.md#folder-structure-and-zipped-output-in-data-merge-api \ No newline at end of file diff --git a/src/pages/guides/working-with-datamerge-api/index.md b/src/pages/guides/working-with-datamerge-api/index.md index 1bd147d..bf9f9c3 100644 --- a/src/pages/guides/working-with-datamerge-api/index.md +++ b/src/pages/guides/working-with-datamerge-api/index.md @@ -120,6 +120,128 @@ repository, and a [pre-signed URL](../../getting-started/concepts/index.md#pre-s Consult this skeleton [cURL request](https://developer.adobe.com/commerce/webapi/get-started/gs-curl/) for more details. +### Folder Structure and Zipped Output in Data Merge API + +The Data Merge API supports organizing your outputs in a structured folder hierarchy, and a zipped folder containing all the outputs that have been created from the successful data merge. + +How it works + +- Add a dedicated column in your input CSV for folder names. +- Prefix the column header with ~ (for example: ~FolderName). +- Each row value in this column will be used as the folder hierarchy for the output file of that record. +- Users can opt in for zipped output by setting `outputCompressMediaType`; only `ZIP` is supported for now. +- Add three input parameters: + - **outputCompressMediaType** + - **Type:** String + - **ENUM:** ["application/zip"] + - **Meaning:** The type of compression the user wants (e.g. ZIP, RAR, etc.). + - If the user opts for zipped output, the response contains only the zipped output, not individual assets and their links. + - If the user does not opt for zipped output, the response is unchanged except that the output path reflects the desired folder hierarchy. + - **outputCompressName** + - **Type:** String + - **Default:** `"Result"` + - **Meaning:** Use this value to name the resulting zip. + - **outputFolderBaseString** + - **Type:** String + - **Default:** `mergedFiles` + - **Meaning:** Specifies which folder merged files go into and the name of the merged folder; multi-record output files or outputs from empty CSV column values are placed in this folder. + +Note: +- Only one folder name column is allowed. If multiple columns have a ‘~’ prefix, the job will fail. +- Local or absolute paths (for example, `C:\F1\F2`) are not supported in the `~` column. Provide relative folder hierarchy values (for example, `F1` or `F1\F2`) only. The job will fail if a row uses a local or absolute path. + + +#### Folder Name Constraints + +Certain special characters or words are not supported by the platform and are automatically normalized. + +- Consecutive unsupported characters (e.g., <, >, :, ", /, \, |, ?, *) are replaced with a single underscore (e.g., `Ab5<>;d` → `Ab5_d`) +- Windows reserved names (e.g., CON, PRN, AUX, NUL as well as device names like COM1–COM9 and LPT1–LPT9) are wrapped with underscores (e.g., `CON` → `_CON_`) +- File names (including extension) are limited to 255 characters, with longer names truncated automatically + +Here is a sample CSV file demonstrating a column header with prefix ‘~’. +![Records](./records-foldercsv.png) + +Example of input payload which is same as it is currently. + +```curl +curl --location --request POST 'https://indesign.adobe.io/v4/merge-data' \ +--header 'Authorization: Bearer {YOUR_OAUTH_TOKEN}' \ +--header 'x-api-key: {YOUR_API_KEY}' \ +--header 'Content-Type: application/json' \ +--data-raw '{ + "assets": [ + { + "source": { + "url": "{PRE-SIGNED_URL}", + "storageType": "Azure" + }, + "destination": "dataMergeTemplate.indd" + }, + { + "source": { + "url": "{PRE-SIGNED_URL}", + "storageType": "Azure" + }, + "destination": "FolderNames.csv" + } + ], + "params": { + "targetDocument": "dataMergeTemplate.indd", + "outputMediaType": "image/png", + "outputFolderPath": {OUTPUT_FOLDER_PATH}, + "outputFileBaseString": "merged", + "dataSource": "FolderNames.csv", + "recordRange": "All", + "outputCompressMediaType": "application/zip", + "outputCompressName": "Works only if outputCompressMediaType is provided", + "outputFolderBaseString": "Merged folder name; multi-record outputs and empty ~ values go here. Default: mergedFiles", + "hyphenationSettings": { + "afterFirst": 3, + "beforeLast": 3, + "wordsLongerThan": 6, + "ladderLimit": 2, + "zone": 0.15, + "capitalizedWords": false, + "lastWord": true, + "acrossColumns": false, + "dictionarySettings": [ + { + "language": "English: USA", + "wordList": ["~word1", "ex~word2"] + }, + { + "language": "English: UK", + "wordList": ["~word3", "~word4"] + } + ] + } + }, + "outputs": [ + { + "destination": { + "url": "{PUT-SIGNED_URL}" + }, + "source": "{OUTPUT_FOLDER_PATH}/{outputs}" + } + ] +}' +``` + +#### When folder structing is not supported, and output files will move to ‘outputFolderBaseString’ +| outputMediaType | params | +|----------------------------------|--------| +| JPEG (image/jpeg) | allowMultipleRecordsPerPage set to true | +| PNG (image/png) | allowMultipleRecordsPerPage set to true | +| PDF (application/pdf) | recordsPerFile ≠ 1 and recordRange = "All" | +| | recordsPerFile ≠ 1 and recordRange = "1-2, 5" | +| | allowMultipleRecordsPerPage set to true | +| InDesign (application/x-indesign)| recordsPerFile ≠ 1 and recordRange = "All" | +| | recordsPerFile ≠ 1 and recordRange = "1-2, 5" | +| | allowMultipleRecordsPerPage set to true | + +**Why:** Folder structuring via the `~` column applies only when the merge job has a clear one-to-one mapping between each data row and its output. In that case, each row’s `~` value defines the folder hierarchy for that record’s output file. If `allowMultipleRecordsPerPage` is true, multiple records can share a page, so per-row folder paths are ambiguous. If `recordsPerFile` is not 1, records are combined into multi-page output documents, so many rows contribute to the same file and per-row folder paths are no longer meaningful. In those situations, folder structuring via the `~` column is not supported for the affected output types, and output files are placed under `outputFolderBaseString` instead. + ### Variable File Naming Support in Data Merge API The Data Merge API supports variable file naming, allowing you to dynamically assign output file names using values from your input data. diff --git a/src/pages/guides/working-with-datamerge-api/records-foldercsv.png b/src/pages/guides/working-with-datamerge-api/records-foldercsv.png new file mode 100755 index 0000000000000000000000000000000000000000..5ae1e655dd03305dbdace12d15a4bd6bed04dd8f GIT binary patch literal 28321 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 literal 0 HcmV?d00001 diff --git a/static/indesignapi.json b/static/indesignapi.json index 2ddee1c..4cd586a 100644 --- a/static/indesignapi.json +++ b/static/indesignapi.json @@ -51,7 +51,7 @@ } ], "paths": { - "/v3/merge-data": { + "/v4/merge-data": { "post": { "summary": "Perform a data merge", "description": "Creates InDesign documents or PDFs by merging CSV data with InDesign templates. Supports multiple output formats: JPEG (`image/jpeg`), PNG (`image/png`), PDF (`application/pdf`), and InDesign (`application/x-indesign`).", @@ -1623,8 +1623,8 @@ } } }, - "pagesPerDocument": { - "description": "The maximum number of pages per document.", + "recordsPerFile": { + "description": "The maximum number of records per file.", "type": "integer", "default": "By default this would not be applicable." }, @@ -1647,6 +1647,24 @@ "type": "string", "description": "The path of the output folder.", "default": "A unique temporary folder name would be created." + }, + "outputCompressMediaType": { + "type": "string", + "description": "The media type of the output compression.", + "enum": [ + "application/zip" + ], + "default": "By default this would not be applicable." + }, + "outputCompressName": { + "type": "string", + "description": "The name of the output compression. Works only if outputCompressMediaType is provided", + "default": "Result" + }, + "outputFolderBaseString": { + "type": "string", + "description": "Specifies the merged output folder name. Used for multi-record outputs and when the `~` column value is empty.", + "default": "mergedFiles" } } } From 73892864929112dcaa8c2282229bc309c47e29ba Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 12 Jun 2026 07:14:23 +0000 Subject: [PATCH 2/6] chore: auto-generate contributors --- src/pages/contributors.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/pages/contributors.json b/src/pages/contributors.json index bd04c2f..441362e 100644 --- a/src/pages/contributors.json +++ b/src/pages/contributors.json @@ -41,11 +41,12 @@ { "page": "/getting-started/changelog/", "avatars": [ + "https://avatars.githubusercontent.com/u/160902380?v=4", "https://avatars.githubusercontent.com/u/274493592?v=4", "https://avatars.githubusercontent.com/u/264675027?v=4", "https://avatars.githubusercontent.com/u/41382203?v=4" ], - "lastUpdated": "6/2/2026" + "lastUpdated": "5/25/2026" }, { "page": "/getting-started/concepts/", @@ -94,12 +95,13 @@ { "page": "/guides/working-with-datamerge-api/", "avatars": [ + "https://avatars.githubusercontent.com/u/160902380?v=4", "https://avatars.githubusercontent.com/u/274493592?v=4", "https://avatars.githubusercontent.com/u/41382203?v=4", "https://avatars.githubusercontent.com/u/66052604?v=4", "https://avatars.githubusercontent.com/u/195011431?v=4" ], - "lastUpdated": "5/5/2026" + "lastUpdated": "5/25/2026" }, { "page": "/guides/working-with-rendition-api/", From 492249412328d8b9b25b28b36a719527a4d2a77f Mon Sep 17 00:00:00 2001 From: Sumit Garg <66052604+SumitCo@users.noreply.github.com> Date: Wed, 17 Jun 2026 16:05:33 +0530 Subject: [PATCH 3/6] Doc changes for asset size increase (#62) * Changes for 2GB support * chore: auto-generate contributors --------- Co-authored-by: github-actions[bot] --- src/pages/contributors.json | 6 ++++-- src/pages/getting-started/changelog/index.md | 2 ++ src/pages/getting-started/usage/index.md | 7 +++---- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/pages/contributors.json b/src/pages/contributors.json index bd04c2f..b47b291 100644 --- a/src/pages/contributors.json +++ b/src/pages/contributors.json @@ -41,11 +41,12 @@ { "page": "/getting-started/changelog/", "avatars": [ + "https://avatars.githubusercontent.com/u/66052604?v=4", "https://avatars.githubusercontent.com/u/274493592?v=4", "https://avatars.githubusercontent.com/u/264675027?v=4", "https://avatars.githubusercontent.com/u/41382203?v=4" ], - "lastUpdated": "6/2/2026" + "lastUpdated": "6/17/2026" }, { "page": "/getting-started/concepts/", @@ -58,9 +59,10 @@ { "page": "/getting-started/usage/", "avatars": [ + "https://avatars.githubusercontent.com/u/66052604?v=4", "https://avatars.githubusercontent.com/u/41382203?v=4" ], - "lastUpdated": "3/16/2026" + "lastUpdated": "6/17/2026" }, { "page": "/guides/", diff --git a/src/pages/getting-started/changelog/index.md b/src/pages/getting-started/changelog/index.md index 9c2381e..1117017 100644 --- a/src/pages/getting-started/changelog/index.md +++ b/src/pages/getting-started/changelog/index.md @@ -46,6 +46,7 @@ This page contains the release notes and version history for Adobe InDesign APIs ### Enhancements - **Variable File Naming Support in Data Merge API:** The `POST /v3/merge-data` endpoint now supports variable file naming. [Learn more about variable file naming support.][14] +- **Increased Asset Size Limit:** The maximum supported asset size has been increased from 1GB to 2GB, enabling processing of larger InDesign documents and linked assets. [Learn more about file size limits.][15] ## March 18, 2026 @@ -143,3 +144,4 @@ This page contains the release notes and version history for Adobe InDesign APIs [12]: ../../guides/pdf-to-indesign-conversion-notes/index.md [13]: ../concepts/index.md#api-capability-naming-rules [14]: ../../guides/working-with-datamerge-api/index.md#variable-file-naming-support-in-data-merge-api +[15]: ../usage/index.md#file-size-limits diff --git a/src/pages/getting-started/usage/index.md b/src/pages/getting-started/usage/index.md index ef4702a..a0252f4 100644 --- a/src/pages/getting-started/usage/index.md +++ b/src/pages/getting-started/usage/index.md @@ -38,11 +38,10 @@ To maintain API stability and fair usage across clients, the following limits ar * Hard limit: 350 requests per minute. Requests beyond this limit are rejected. -### File size +### File size limits -For the Custom Scripts API, the maximum allowed size for a Custom Script ZIP upload is 5MB. - -Otherwise, the maximum supported file size is 1GB. +* Assets: Maximum supported size is 2GB per asset. +* Custom Scripts API: Maximum allowed size for a Custom Script ZIP upload is 5MB. ### Assets From 3b96c94021d93ae80141393c0baa70e16d6e0ea0 Mon Sep 17 00:00:00 2001 From: Ayushi Swaroop Date: Mon, 25 May 2026 17:10:17 +0530 Subject: [PATCH 4/6] Zipped Output & Folder Structure Documentation --- src/pages/getting-started/changelog/index.md | 7 + .../working-with-datamerge-api/index.md | 122 ++++++++++++++++++ .../records-foldercsv.png | Bin 0 -> 28321 bytes static/indesignapi.json | 24 +++- 4 files changed, 150 insertions(+), 3 deletions(-) create mode 100755 src/pages/guides/working-with-datamerge-api/records-foldercsv.png diff --git a/src/pages/getting-started/changelog/index.md b/src/pages/getting-started/changelog/index.md index 1117017..c05f617 100644 --- a/src/pages/getting-started/changelog/index.md +++ b/src/pages/getting-started/changelog/index.md @@ -41,6 +41,12 @@ twitter: This page contains the release notes and version history for Adobe InDesign APIs. Stay updated with the latest features, improvements, and bug fixes. +## July 29, 2026 + +### Enhancements + +- **Folder Structure and Zipped Output Support in Data Merge API:** The `POST /v4/merge-data` endpoint now supports organizing your outputs in a structured folder hierarchy, and a zipped folder containing all the outputs that have been created from the successful data merge. [Learn more about Folder Structure and Zipped Output support.][16] + ## June 2, 2026 ### Enhancements @@ -145,3 +151,4 @@ This page contains the release notes and version history for Adobe InDesign APIs [13]: ../concepts/index.md#api-capability-naming-rules [14]: ../../guides/working-with-datamerge-api/index.md#variable-file-naming-support-in-data-merge-api [15]: ../usage/index.md#file-size-limits +[16]: ../../guides/working-with-datamerge-api/index.md#folder-structure-and-zipped-output-in-data-merge-api diff --git a/src/pages/guides/working-with-datamerge-api/index.md b/src/pages/guides/working-with-datamerge-api/index.md index 1bd147d..bf9f9c3 100644 --- a/src/pages/guides/working-with-datamerge-api/index.md +++ b/src/pages/guides/working-with-datamerge-api/index.md @@ -120,6 +120,128 @@ repository, and a [pre-signed URL](../../getting-started/concepts/index.md#pre-s Consult this skeleton [cURL request](https://developer.adobe.com/commerce/webapi/get-started/gs-curl/) for more details. +### Folder Structure and Zipped Output in Data Merge API + +The Data Merge API supports organizing your outputs in a structured folder hierarchy, and a zipped folder containing all the outputs that have been created from the successful data merge. + +How it works + +- Add a dedicated column in your input CSV for folder names. +- Prefix the column header with ~ (for example: ~FolderName). +- Each row value in this column will be used as the folder hierarchy for the output file of that record. +- Users can opt in for zipped output by setting `outputCompressMediaType`; only `ZIP` is supported for now. +- Add three input parameters: + - **outputCompressMediaType** + - **Type:** String + - **ENUM:** ["application/zip"] + - **Meaning:** The type of compression the user wants (e.g. ZIP, RAR, etc.). + - If the user opts for zipped output, the response contains only the zipped output, not individual assets and their links. + - If the user does not opt for zipped output, the response is unchanged except that the output path reflects the desired folder hierarchy. + - **outputCompressName** + - **Type:** String + - **Default:** `"Result"` + - **Meaning:** Use this value to name the resulting zip. + - **outputFolderBaseString** + - **Type:** String + - **Default:** `mergedFiles` + - **Meaning:** Specifies which folder merged files go into and the name of the merged folder; multi-record output files or outputs from empty CSV column values are placed in this folder. + +Note: +- Only one folder name column is allowed. If multiple columns have a ‘~’ prefix, the job will fail. +- Local or absolute paths (for example, `C:\F1\F2`) are not supported in the `~` column. Provide relative folder hierarchy values (for example, `F1` or `F1\F2`) only. The job will fail if a row uses a local or absolute path. + + +#### Folder Name Constraints + +Certain special characters or words are not supported by the platform and are automatically normalized. + +- Consecutive unsupported characters (e.g., <, >, :, ", /, \, |, ?, *) are replaced with a single underscore (e.g., `Ab5<>;d` → `Ab5_d`) +- Windows reserved names (e.g., CON, PRN, AUX, NUL as well as device names like COM1–COM9 and LPT1–LPT9) are wrapped with underscores (e.g., `CON` → `_CON_`) +- File names (including extension) are limited to 255 characters, with longer names truncated automatically + +Here is a sample CSV file demonstrating a column header with prefix ‘~’. +![Records](./records-foldercsv.png) + +Example of input payload which is same as it is currently. + +```curl +curl --location --request POST 'https://indesign.adobe.io/v4/merge-data' \ +--header 'Authorization: Bearer {YOUR_OAUTH_TOKEN}' \ +--header 'x-api-key: {YOUR_API_KEY}' \ +--header 'Content-Type: application/json' \ +--data-raw '{ + "assets": [ + { + "source": { + "url": "{PRE-SIGNED_URL}", + "storageType": "Azure" + }, + "destination": "dataMergeTemplate.indd" + }, + { + "source": { + "url": "{PRE-SIGNED_URL}", + "storageType": "Azure" + }, + "destination": "FolderNames.csv" + } + ], + "params": { + "targetDocument": "dataMergeTemplate.indd", + "outputMediaType": "image/png", + "outputFolderPath": {OUTPUT_FOLDER_PATH}, + "outputFileBaseString": "merged", + "dataSource": "FolderNames.csv", + "recordRange": "All", + "outputCompressMediaType": "application/zip", + "outputCompressName": "Works only if outputCompressMediaType is provided", + "outputFolderBaseString": "Merged folder name; multi-record outputs and empty ~ values go here. Default: mergedFiles", + "hyphenationSettings": { + "afterFirst": 3, + "beforeLast": 3, + "wordsLongerThan": 6, + "ladderLimit": 2, + "zone": 0.15, + "capitalizedWords": false, + "lastWord": true, + "acrossColumns": false, + "dictionarySettings": [ + { + "language": "English: USA", + "wordList": ["~word1", "ex~word2"] + }, + { + "language": "English: UK", + "wordList": ["~word3", "~word4"] + } + ] + } + }, + "outputs": [ + { + "destination": { + "url": "{PUT-SIGNED_URL}" + }, + "source": "{OUTPUT_FOLDER_PATH}/{outputs}" + } + ] +}' +``` + +#### When folder structing is not supported, and output files will move to ‘outputFolderBaseString’ +| outputMediaType | params | +|----------------------------------|--------| +| JPEG (image/jpeg) | allowMultipleRecordsPerPage set to true | +| PNG (image/png) | allowMultipleRecordsPerPage set to true | +| PDF (application/pdf) | recordsPerFile ≠ 1 and recordRange = "All" | +| | recordsPerFile ≠ 1 and recordRange = "1-2, 5" | +| | allowMultipleRecordsPerPage set to true | +| InDesign (application/x-indesign)| recordsPerFile ≠ 1 and recordRange = "All" | +| | recordsPerFile ≠ 1 and recordRange = "1-2, 5" | +| | allowMultipleRecordsPerPage set to true | + +**Why:** Folder structuring via the `~` column applies only when the merge job has a clear one-to-one mapping between each data row and its output. In that case, each row’s `~` value defines the folder hierarchy for that record’s output file. If `allowMultipleRecordsPerPage` is true, multiple records can share a page, so per-row folder paths are ambiguous. If `recordsPerFile` is not 1, records are combined into multi-page output documents, so many rows contribute to the same file and per-row folder paths are no longer meaningful. In those situations, folder structuring via the `~` column is not supported for the affected output types, and output files are placed under `outputFolderBaseString` instead. + ### Variable File Naming Support in Data Merge API The Data Merge API supports variable file naming, allowing you to dynamically assign output file names using values from your input data. diff --git a/src/pages/guides/working-with-datamerge-api/records-foldercsv.png b/src/pages/guides/working-with-datamerge-api/records-foldercsv.png new file mode 100755 index 0000000000000000000000000000000000000000..5ae1e655dd03305dbdace12d15a4bd6bed04dd8f GIT binary patch literal 28321 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 literal 0 HcmV?d00001 diff --git a/static/indesignapi.json b/static/indesignapi.json index 2ddee1c..4cd586a 100644 --- a/static/indesignapi.json +++ b/static/indesignapi.json @@ -51,7 +51,7 @@ } ], "paths": { - "/v3/merge-data": { + "/v4/merge-data": { "post": { "summary": "Perform a data merge", "description": "Creates InDesign documents or PDFs by merging CSV data with InDesign templates. Supports multiple output formats: JPEG (`image/jpeg`), PNG (`image/png`), PDF (`application/pdf`), and InDesign (`application/x-indesign`).", @@ -1623,8 +1623,8 @@ } } }, - "pagesPerDocument": { - "description": "The maximum number of pages per document.", + "recordsPerFile": { + "description": "The maximum number of records per file.", "type": "integer", "default": "By default this would not be applicable." }, @@ -1647,6 +1647,24 @@ "type": "string", "description": "The path of the output folder.", "default": "A unique temporary folder name would be created." + }, + "outputCompressMediaType": { + "type": "string", + "description": "The media type of the output compression.", + "enum": [ + "application/zip" + ], + "default": "By default this would not be applicable." + }, + "outputCompressName": { + "type": "string", + "description": "The name of the output compression. Works only if outputCompressMediaType is provided", + "default": "Result" + }, + "outputFolderBaseString": { + "type": "string", + "description": "Specifies the merged output folder name. Used for multi-record outputs and when the `~` column value is empty.", + "default": "mergedFiles" } } } From e65f4b6e2c645423e74a33f92b1d210c215d205c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 12 Jun 2026 07:14:23 +0000 Subject: [PATCH 5/6] chore: auto-generate contributors --- src/pages/contributors.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/pages/contributors.json b/src/pages/contributors.json index b47b291..0602638 100644 --- a/src/pages/contributors.json +++ b/src/pages/contributors.json @@ -96,12 +96,13 @@ { "page": "/guides/working-with-datamerge-api/", "avatars": [ + "https://avatars.githubusercontent.com/u/160902380?v=4", "https://avatars.githubusercontent.com/u/274493592?v=4", "https://avatars.githubusercontent.com/u/41382203?v=4", "https://avatars.githubusercontent.com/u/66052604?v=4", "https://avatars.githubusercontent.com/u/195011431?v=4" ], - "lastUpdated": "5/5/2026" + "lastUpdated": "5/25/2026" }, { "page": "/guides/working-with-rendition-api/", From 3d53f59ad0e4a5e208333f663e26f0c5cd9ea12a Mon Sep 17 00:00:00 2001 From: Ayushi Swaroop Date: Thu, 18 Jun 2026 15:08:39 +0530 Subject: [PATCH 6/6] removing the defaults --- static/indesignapi.json | 27 ++++----------------------- 1 file changed, 4 insertions(+), 23 deletions(-) diff --git a/static/indesignapi.json b/static/indesignapi.json index 4cd586a..3504a85 100644 --- a/static/indesignapi.json +++ b/static/indesignapi.json @@ -51,7 +51,7 @@ } ], "paths": { - "/v4/merge-data": { + "/v3/merge-data": { "post": { "summary": "Perform a data merge", "description": "Creates InDesign documents or PDFs by merging CSV data with InDesign templates. Supports multiple output formats: JPEG (`image/jpeg`), PNG (`image/png`), PDF (`application/pdf`), and InDesign (`application/x-indesign`).", @@ -1623,10 +1623,9 @@ } } }, - "recordsPerFile": { - "description": "The maximum number of records per file.", - "type": "integer", - "default": "By default this would not be applicable." + "pagesPerDocument": { + "description": "Defaults are not applicable here. The maximum number of pages per document.", + "type": "integer" }, "removeBlankLines": { "description": "If true, removes blank lines caused by empty fields.", @@ -1647,24 +1646,6 @@ "type": "string", "description": "The path of the output folder.", "default": "A unique temporary folder name would be created." - }, - "outputCompressMediaType": { - "type": "string", - "description": "The media type of the output compression.", - "enum": [ - "application/zip" - ], - "default": "By default this would not be applicable." - }, - "outputCompressName": { - "type": "string", - "description": "The name of the output compression. Works only if outputCompressMediaType is provided", - "default": "Result" - }, - "outputFolderBaseString": { - "type": "string", - "description": "Specifies the merged output folder name. Used for multi-record outputs and when the `~` column value is empty.", - "default": "mergedFiles" } } }