@agility/management-sdk 0.1.35 → 0.1.37

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 (261) hide show
  1. package/README.md +371 -317
  2. package/dist/apiMethods/clientInstance.d.ts +2 -0
  3. package/dist/apiMethods/clientInstance.js +11 -2
  4. package/dist/apiMethods/containerMethods.d.ts +3 -0
  5. package/dist/apiMethods/containerMethods.js +43 -9
  6. package/dist/apiMethods/contentMethods.d.ts +12 -0
  7. package/dist/apiMethods/contentMethods.js +119 -48
  8. package/dist/apiMethods/pageMethods.d.ts +12 -0
  9. package/dist/apiMethods/pageMethods.js +88 -34
  10. package/dist/enums/contentViewType.d.ts +6 -0
  11. package/dist/enums/contentViewType.js +10 -0
  12. package/dist/index.d.ts +2 -0
  13. package/dist/index.js +2 -0
  14. package/dist/models/pagedResult.d.ts +4 -0
  15. package/dist/models/pagedResult.js +2 -0
  16. package/dist/util/queryString.d.ts +8 -0
  17. package/dist/util/queryString.js +27 -0
  18. package/docs/asset-methods.md +381 -381
  19. package/docs/auth-component.md +360 -360
  20. package/docs/auth.md +593 -593
  21. package/docs/batch-methods.md +243 -243
  22. package/docs/cicd.md +606 -606
  23. package/docs/container-methods.md +267 -267
  24. package/docs/content-methods.md +491 -422
  25. package/docs/instance-methods.md +104 -104
  26. package/docs/instance-user-methods.md +230 -230
  27. package/docs/model-methods.md +433 -433
  28. package/docs/multi-instance-operations.md +191 -191
  29. package/docs/page-methods.md +737 -670
  30. package/docs/server-user-methods.md +279 -279
  31. package/docs/webhook-methods.md +451 -451
  32. package/license.txt +20 -20
  33. package/package.json +40 -40
  34. package/tsconfig.json +14 -14
  35. package/.cursor/api-coverage.md +0 -217
  36. package/.cursor/api-documentation-manifest.md +0 -275
  37. package/.cursor/api-functions-analysis.md +0 -111
  38. package/.cursor/breakout-manifest.md +0 -278
  39. package/.cursor/docs-final-check.md +0 -269
  40. package/.cursor/github-actions-improvements.md +0 -76
  41. package/.cursor/hardening.md +0 -271
  42. package/.cursor/linting-fix.md +0 -160
  43. package/.cursor/manifest.md +0 -243
  44. package/.cursor/mocks.md +0 -100
  45. package/.cursor/test-coverage.md +0 -841
  46. package/.env +0 -92
  47. package/coverage/base.css +0 -224
  48. package/coverage/block-navigation.js +0 -87
  49. package/coverage/coverage-summary.json +0 -43
  50. package/coverage/favicon.png +0 -0
  51. package/coverage/index.html +0 -161
  52. package/coverage/lcov-report/base.css +0 -224
  53. package/coverage/lcov-report/block-navigation.js +0 -87
  54. package/coverage/lcov-report/favicon.png +0 -0
  55. package/coverage/lcov-report/index.html +0 -161
  56. package/coverage/lcov-report/prettify.css +0 -1
  57. package/coverage/lcov-report/prettify.js +0 -2
  58. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  59. package/coverage/lcov-report/sorter.js +0 -210
  60. package/coverage/lcov-report/src/apiClient.ts.html +0 -199
  61. package/coverage/lcov-report/src/apiMethods/assetMethods.ts.html +0 -682
  62. package/coverage/lcov-report/src/apiMethods/batchMethods.ts.html +0 -736
  63. package/coverage/lcov-report/src/apiMethods/clientInstance.ts.html +0 -403
  64. package/coverage/lcov-report/src/apiMethods/containerMethods.ts.html +0 -460
  65. package/coverage/lcov-report/src/apiMethods/contentMethods.ts.html +0 -1183
  66. package/coverage/lcov-report/src/apiMethods/index.html +0 -266
  67. package/coverage/lcov-report/src/apiMethods/instanceMethods.ts.html +0 -160
  68. package/coverage/lcov-report/src/apiMethods/instanceUserMethods.ts.html +0 -268
  69. package/coverage/lcov-report/src/apiMethods/modelMethods.ts.html +0 -352
  70. package/coverage/lcov-report/src/apiMethods/pageMethods.ts.html +0 -1276
  71. package/coverage/lcov-report/src/apiMethods/serverUserMethods.ts.html +0 -196
  72. package/coverage/lcov-report/src/apiMethods/webhookMethods.ts.html +0 -271
  73. package/coverage/lcov-report/src/enums/batchItemType.ts.html +0 -106
  74. package/coverage/lcov-report/src/enums/batchOperationType.ts.html +0 -142
  75. package/coverage/lcov-report/src/enums/batchState..ts.html +0 -106
  76. package/coverage/lcov-report/src/enums/index.html +0 -161
  77. package/coverage/lcov-report/src/enums/workflowOperationType.ts.html +0 -175
  78. package/coverage/lcov-report/src/index.html +0 -116
  79. package/coverage/lcov-report/src/models/assetContainer.ts.html +0 -106
  80. package/coverage/lcov-report/src/models/assetGalleries.ts.html +0 -103
  81. package/coverage/lcov-report/src/models/assetMediaGrouping.ts.html +0 -136
  82. package/coverage/lcov-report/src/models/assetMediaGroupingMetaData.ts.html +0 -97
  83. package/coverage/lcov-report/src/models/batch.ts.html +0 -178
  84. package/coverage/lcov-report/src/models/batchItem.ts.html +0 -127
  85. package/coverage/lcov-report/src/models/container.ts.html +0 -232
  86. package/coverage/lcov-report/src/models/contentDefinitionTypeID.ts.html +0 -142
  87. package/coverage/lcov-report/src/models/contentItem.ts.html +0 -202
  88. package/coverage/lcov-report/src/models/contentSectionDefaultModule.ts.html +0 -106
  89. package/coverage/lcov-report/src/models/contentSectionDefinition.ts.html +0 -196
  90. package/coverage/lcov-report/src/models/contentViewColumn.ts.html +0 -109
  91. package/coverage/lcov-report/src/models/exception.ts.html +0 -109
  92. package/coverage/lcov-report/src/models/index.html +0 -476
  93. package/coverage/lcov-report/src/models/instanceRole.ts.html +0 -106
  94. package/coverage/lcov-report/src/models/instanceUser.ts.html +0 -130
  95. package/coverage/lcov-report/src/models/locales.ts.html +0 -100
  96. package/coverage/lcov-report/src/models/media.ts.html +0 -178
  97. package/coverage/lcov-report/src/models/model.ts.html +0 -172
  98. package/coverage/lcov-report/src/models/notification.ts.html +0 -124
  99. package/coverage/lcov-report/src/models/options.ts.html +0 -109
  100. package/coverage/lcov-report/src/models/pageItem.ts.html +0 -268
  101. package/coverage/lcov-report/src/models/pageModel.ts.html +0 -130
  102. package/coverage/lcov-report/src/models/sharedModule.ts.html +0 -106
  103. package/coverage/lcov-report/src/models/sitemap.ts.html +0 -148
  104. package/coverage/lcov-report/src/models/websiteUser.ts.html +0 -157
  105. package/coverage/lcov.info +0 -1459
  106. package/coverage/prettify.css +0 -1
  107. package/coverage/prettify.js +0 -2
  108. package/coverage/sort-arrow-sprite.png +0 -0
  109. package/coverage/sorter.js +0 -210
  110. package/coverage/src/apiClient.ts.html +0 -199
  111. package/coverage/src/apiMethods/assetMethods.ts.html +0 -682
  112. package/coverage/src/apiMethods/batchMethods.ts.html +0 -736
  113. package/coverage/src/apiMethods/clientInstance.ts.html +0 -403
  114. package/coverage/src/apiMethods/containerMethods.ts.html +0 -460
  115. package/coverage/src/apiMethods/contentMethods.ts.html +0 -1183
  116. package/coverage/src/apiMethods/index.html +0 -266
  117. package/coverage/src/apiMethods/instanceMethods.ts.html +0 -160
  118. package/coverage/src/apiMethods/instanceUserMethods.ts.html +0 -268
  119. package/coverage/src/apiMethods/modelMethods.ts.html +0 -352
  120. package/coverage/src/apiMethods/pageMethods.ts.html +0 -1276
  121. package/coverage/src/apiMethods/serverUserMethods.ts.html +0 -196
  122. package/coverage/src/apiMethods/webhookMethods.ts.html +0 -271
  123. package/coverage/src/enums/batchItemType.ts.html +0 -106
  124. package/coverage/src/enums/batchOperationType.ts.html +0 -142
  125. package/coverage/src/enums/batchState..ts.html +0 -106
  126. package/coverage/src/enums/index.html +0 -161
  127. package/coverage/src/enums/workflowOperationType.ts.html +0 -175
  128. package/coverage/src/index.html +0 -116
  129. package/coverage/src/models/assetContainer.ts.html +0 -106
  130. package/coverage/src/models/assetGalleries.ts.html +0 -103
  131. package/coverage/src/models/assetMediaGrouping.ts.html +0 -136
  132. package/coverage/src/models/assetMediaGroupingMetaData.ts.html +0 -97
  133. package/coverage/src/models/batch.ts.html +0 -178
  134. package/coverage/src/models/batchItem.ts.html +0 -127
  135. package/coverage/src/models/container.ts.html +0 -232
  136. package/coverage/src/models/contentDefinitionTypeID.ts.html +0 -142
  137. package/coverage/src/models/contentItem.ts.html +0 -202
  138. package/coverage/src/models/contentSectionDefaultModule.ts.html +0 -106
  139. package/coverage/src/models/contentSectionDefinition.ts.html +0 -196
  140. package/coverage/src/models/contentViewColumn.ts.html +0 -109
  141. package/coverage/src/models/exception.ts.html +0 -109
  142. package/coverage/src/models/index.html +0 -476
  143. package/coverage/src/models/instanceRole.ts.html +0 -106
  144. package/coverage/src/models/instanceUser.ts.html +0 -130
  145. package/coverage/src/models/locales.ts.html +0 -100
  146. package/coverage/src/models/media.ts.html +0 -178
  147. package/coverage/src/models/model.ts.html +0 -172
  148. package/coverage/src/models/notification.ts.html +0 -124
  149. package/coverage/src/models/options.ts.html +0 -109
  150. package/coverage/src/models/pageItem.ts.html +0 -268
  151. package/coverage/src/models/pageModel.ts.html +0 -130
  152. package/coverage/src/models/sharedModule.ts.html +0 -106
  153. package/coverage/src/models/sitemap.ts.html +0 -148
  154. package/coverage/src/models/websiteUser.ts.html +0 -157
  155. package/dist/.tsbuildinfo +0 -1
  156. package/dist/apiClient.d.ts.map +0 -1
  157. package/dist/apiClient.js.map +0 -1
  158. package/dist/apiMethods/assetMethods.d.ts.map +0 -1
  159. package/dist/apiMethods/assetMethods.js.map +0 -1
  160. package/dist/apiMethods/batchMethods.d.ts.map +0 -1
  161. package/dist/apiMethods/batchMethods.js.map +0 -1
  162. package/dist/apiMethods/clientInstance.d.ts.map +0 -1
  163. package/dist/apiMethods/clientInstance.js.map +0 -1
  164. package/dist/apiMethods/containerMethods.d.ts.map +0 -1
  165. package/dist/apiMethods/containerMethods.js.map +0 -1
  166. package/dist/apiMethods/contentMethods.d.ts.map +0 -1
  167. package/dist/apiMethods/contentMethods.js.map +0 -1
  168. package/dist/apiMethods/instanceMethods.d.ts.map +0 -1
  169. package/dist/apiMethods/instanceMethods.js.map +0 -1
  170. package/dist/apiMethods/instanceUserMethods.d.ts.map +0 -1
  171. package/dist/apiMethods/instanceUserMethods.js.map +0 -1
  172. package/dist/apiMethods/modelMethods.d.ts.map +0 -1
  173. package/dist/apiMethods/modelMethods.js.map +0 -1
  174. package/dist/apiMethods/pageMethods.d.ts.map +0 -1
  175. package/dist/apiMethods/pageMethods.js.map +0 -1
  176. package/dist/apiMethods/serverUserMethods.d.ts.map +0 -1
  177. package/dist/apiMethods/serverUserMethods.js.map +0 -1
  178. package/dist/apiMethods/webhookMethods.d.ts.map +0 -1
  179. package/dist/apiMethods/webhookMethods.js.map +0 -1
  180. package/dist/enums/assetGroupingType.d.ts.map +0 -1
  181. package/dist/enums/assetGroupingType.js.map +0 -1
  182. package/dist/enums/batchItemType.d.ts.map +0 -1
  183. package/dist/enums/batchItemType.js.map +0 -1
  184. package/dist/enums/batchOperationType.d.ts.map +0 -1
  185. package/dist/enums/batchOperationType.js.map +0 -1
  186. package/dist/enums/batchState..d.ts.map +0 -1
  187. package/dist/enums/batchState..js.map +0 -1
  188. package/dist/enums/pageItemTemplateType.d.ts.map +0 -1
  189. package/dist/enums/pageItemTemplateType.js.map +0 -1
  190. package/dist/enums/workflowOperationType.d.ts.map +0 -1
  191. package/dist/enums/workflowOperationType.js.map +0 -1
  192. package/dist/index.d.ts.map +0 -1
  193. package/dist/index.js.map +0 -1
  194. package/dist/models/assetContainer.d.ts.map +0 -1
  195. package/dist/models/assetContainer.js.map +0 -1
  196. package/dist/models/assetGalleries.d.ts.map +0 -1
  197. package/dist/models/assetGalleries.js.map +0 -1
  198. package/dist/models/assetMediaGrouping.d.ts.map +0 -1
  199. package/dist/models/assetMediaGrouping.js.map +0 -1
  200. package/dist/models/assetMediaGroupingMetaData.d.ts.map +0 -1
  201. package/dist/models/assetMediaGroupingMetaData.js.map +0 -1
  202. package/dist/models/batch.d.ts.map +0 -1
  203. package/dist/models/batch.js.map +0 -1
  204. package/dist/models/batchItem.d.ts.map +0 -1
  205. package/dist/models/batchItem.js.map +0 -1
  206. package/dist/models/batchTypes.d.ts.map +0 -1
  207. package/dist/models/batchTypes.js.map +0 -1
  208. package/dist/models/container.d.ts.map +0 -1
  209. package/dist/models/container.js.map +0 -1
  210. package/dist/models/contentDefinitionTypeID.d.ts.map +0 -1
  211. package/dist/models/contentDefinitionTypeID.js.map +0 -1
  212. package/dist/models/contentItem.d.ts.map +0 -1
  213. package/dist/models/contentItem.js.map +0 -1
  214. package/dist/models/contentItemHistory.d.ts.map +0 -1
  215. package/dist/models/contentItemHistory.js.map +0 -1
  216. package/dist/models/contentListFilterModel.d.ts.map +0 -1
  217. package/dist/models/contentListFilterModel.js.map +0 -1
  218. package/dist/models/contentSectionDefaultModule.d.ts.map +0 -1
  219. package/dist/models/contentSectionDefaultModule.js.map +0 -1
  220. package/dist/models/contentSectionDefinition.d.ts.map +0 -1
  221. package/dist/models/contentSectionDefinition.js.map +0 -1
  222. package/dist/models/contentViewColumn.d.ts.map +0 -1
  223. package/dist/models/contentViewColumn.js.map +0 -1
  224. package/dist/models/exception.d.ts.map +0 -1
  225. package/dist/models/exception.js.map +0 -1
  226. package/dist/models/instanceRole.d.ts.map +0 -1
  227. package/dist/models/instanceRole.js.map +0 -1
  228. package/dist/models/instanceUser.d.ts.map +0 -1
  229. package/dist/models/instanceUser.js.map +0 -1
  230. package/dist/models/itemComments.d.ts.map +0 -1
  231. package/dist/models/itemComments.js.map +0 -1
  232. package/dist/models/listParams.d.ts.map +0 -1
  233. package/dist/models/listParams.js.map +0 -1
  234. package/dist/models/locales.d.ts.map +0 -1
  235. package/dist/models/locales.js.map +0 -1
  236. package/dist/models/media.d.ts.map +0 -1
  237. package/dist/models/media.js.map +0 -1
  238. package/dist/models/model.d.ts.map +0 -1
  239. package/dist/models/model.js.map +0 -1
  240. package/dist/models/notification.d.ts.map +0 -1
  241. package/dist/models/notification.js.map +0 -1
  242. package/dist/models/options.d.ts.map +0 -1
  243. package/dist/models/options.js.map +0 -1
  244. package/dist/models/pageHistory.d.ts.map +0 -1
  245. package/dist/models/pageHistory.js.map +0 -1
  246. package/dist/models/pageItem.d.ts.map +0 -1
  247. package/dist/models/pageItem.js.map +0 -1
  248. package/dist/models/pageModel.d.ts.map +0 -1
  249. package/dist/models/pageModel.js.map +0 -1
  250. package/dist/models/serverUser.d.ts.map +0 -1
  251. package/dist/models/serverUser.js.map +0 -1
  252. package/dist/models/sharedModule.d.ts.map +0 -1
  253. package/dist/models/sharedModule.js.map +0 -1
  254. package/dist/models/sitemap.d.ts.map +0 -1
  255. package/dist/models/sitemap.js.map +0 -1
  256. package/dist/models/webhook.d.ts.map +0 -1
  257. package/dist/models/webhook.js.map +0 -1
  258. package/dist/models/websiteListing.d.ts.map +0 -1
  259. package/dist/models/websiteListing.js.map +0 -1
  260. package/dist/models/websiteUser.d.ts.map +0 -1
  261. package/dist/models/websiteUser.js.map +0 -1
@@ -1,671 +1,738 @@
1
- # Agility CMS & Management API TypeScript SDK
2
-
3
- ## PageMethods
4
-
5
- This class provides comprehensive page management operations for Agility CMS. Pages are the structural foundation of your website, defining the navigation hierarchy and content organization.
6
-
7
- **Important Notes:**
8
- - Pages define the structure and navigation of your website
9
- - Each page has a unique path and can contain multiple content zones
10
- - Pages support workflow states (published, unpublished, approved, etc.)
11
- - Page operations support both immediate return and batch processing
12
- - Page templates define the layout and content zones available
13
- - Pages can be organized in a hierarchical structure with parent-child relationships
14
-
15
- ### Function List
16
- - [getPage](#getpage) - Retrieves a specific page by ID
17
- - [getPageByPath](#getpagebypath) - Retrieves a page by its URL path
18
- - [getPageHistory](#getpagehistory) - Retrieves version history for a page
19
- - [getPageComments](#getpagecomments) - Retrieves comments for a page
20
- - [getPageList](#getpagelist) - Retrieves list of pages with filtering
21
- - [getPageListByPageTemplateID](#getpagelistbypagetemplateid) - Retrieves pages using specific template
22
- - [getPageListByPage](#getpagelistbypage) - Retrieves pages with pagination
23
- - [getPageListByPageAndPageTemplateID](#getpagelistbypageandpagetemplateid) - Retrieves paginated pages by template
24
- - [getPageTree](#getpagetree) - Retrieves complete page hierarchy
25
- - [getPageTemplateList](#getpagetemplatelist) - Retrieves available page templates
26
- - [getPageSecurity](#getpagesecurity) - Retrieves security settings for a page
27
- - [getPageItemTemplateList](#getpageitemtemplatelist) - Retrieves page item templates
28
- - [getPageContentZones](#getpagecontentzones) - Retrieves content zones for a page
29
- - [savePage](#savepage) - Creates or updates a page
30
- - [savePageSecurity](#savepagesecurity) - Updates page security settings
31
- - [movePageItem](#movepageitem) - Moves a page item within the hierarchy
32
- - [deletePage](#deletepage) - Deletes a page by ID
33
-
34
- ---
35
-
36
- ### getPage
37
-
38
- Retrieves a specific page by its unique ID.
39
-
40
- | Parameter | Type | Required | Description |
41
- |-----------|------|----------|-------------|
42
- | `pageID` | `number` | Yes | The page ID to retrieve |
43
- | `guid` | `string` | Yes | Current website GUID |
44
-
45
- **Returns:** `PageItem` - Complete page object with content zones and metadata
46
-
47
- **Usage Example:**
48
- ```typescript
49
- const page = await apiClient.pageMethods.getPage(123, guid);
50
- console.log('Page title:', page.title);
51
- console.log('Page path:', page.path);
52
- console.log('Page template:', page.templateName);
53
- console.log('Last modified:', page.modifiedDate);
54
- console.log('Content zones:', page.contentZones.length);
55
-
56
- // Display content zones
57
- page.contentZones.forEach(zone => {
58
- console.log(`Zone: ${zone.name}`);
59
- console.log(` Items: ${zone.items.length}`);
60
- });
61
- ```
62
-
63
- **Error Handling:**
64
- - Throws `Exception` when page not found
65
-
66
- ### getPageByPath
67
-
68
- Retrieves a page by its URL path.
69
-
70
- | Parameter | Type | Required | Description |
71
- |-----------|------|----------|-------------|
72
- | `path` | `string` | Yes | The URL path of the page (e.g., '/about-us') |
73
- | `guid` | `string` | Yes | Current website GUID |
74
-
75
- **Returns:** `PageItem` - Page object matching the path
76
-
77
- **Usage Example:**
78
- ```typescript
79
- const page = await apiClient.pageMethods.getPageByPath('/about-us', guid);
80
- if (page) {
81
- console.log('Page found:', page.title);
82
- console.log('Page ID:', page.pageID);
83
- console.log('Template:', page.templateName);
84
- } else {
85
- console.log('Page not found at path');
86
- }
87
-
88
- // Validate page paths
89
- const validatePath = async (path) => {
90
- try {
91
- const page = await apiClient.pageMethods.getPageByPath(path, guid);
92
- return page !== null;
93
- } catch (error) {
94
- return false;
95
- }
96
- };
97
-
98
- if (await validatePath('/blog')) {
99
- console.log('Blog page exists');
100
- }
101
- ```
102
-
103
- **Error Handling:**
104
- - Throws `Exception` when page not found or path invalid
105
-
106
- ### getPageHistory
107
-
108
- Retrieves the version history for a specific page.
109
-
110
- | Parameter | Type | Required | Description |
111
- |-----------|------|----------|-------------|
112
- | `pageID` | `number` | Yes | The page ID |
113
- | `guid` | `string` | Yes | Current website GUID |
114
-
115
- **Returns:** `PageHistory[]` - Array of historical versions
116
-
117
- **Usage Example:**
118
- ```typescript
119
- const history = await apiClient.pageMethods.getPageHistory(123, guid);
120
- console.log(`Found ${history.length} historical versions`);
121
-
122
- // Display version details
123
- history.forEach((version, index) => {
124
- console.log(`Version ${index + 1}:`);
125
- console.log(` Date: ${version.modifiedDate}`);
126
- console.log(` User: ${version.modifiedByUser}`);
127
- console.log(` Action: ${version.action}`);
128
- console.log(` Notes: ${version.notes}`);
129
- });
130
-
131
- // Get latest version
132
- const latestVersion = history[0];
133
- console.log('Latest change:', latestVersion.action);
134
- ```
135
-
136
- **Error Handling:**
137
- - Throws `Exception` when page not found
138
-
139
- ### getPageComments
140
-
141
- Retrieves all comments for a specific page.
142
-
143
- | Parameter | Type | Required | Description |
144
- |-----------|------|----------|-------------|
145
- | `pageID` | `number` | Yes | The page ID |
146
- | `guid` | `string` | Yes | Current website GUID |
147
-
148
- **Returns:** `ItemComments[]` - Array of page comments
149
-
150
- **Usage Example:**
151
- ```typescript
152
- const comments = await apiClient.pageMethods.getPageComments(123, guid);
153
- console.log(`Found ${comments.length} comments`);
154
-
155
- // Display comments
156
- comments.forEach(comment => {
157
- console.log(`${comment.userName} (${comment.date}):`);
158
- console.log(` ${comment.comment}`);
159
- console.log(` Status: ${comment.status}`);
160
- });
161
- ```
162
-
163
- **Error Handling:**
164
- - Throws `Exception` when page not found
165
-
166
- ### getPageList
167
-
168
- Retrieves a list of pages with optional filtering and sorting.
169
-
170
- | Parameter | Type | Required | Description |
171
- |-----------|------|----------|-------------|
172
- | `listParams` | `ListParams` | Yes | Filtering and sorting parameters |
173
- | `guid` | `string` | Yes | Current website GUID |
174
-
175
- **Returns:** `PageItem[]` - Array of page items
176
-
177
- **Usage Example:**
178
- ```typescript
179
- // Get all pages
180
- const allPages = await apiClient.pageMethods.getPageList({}, guid);
181
-
182
- // Get pages with filtering
183
- const params = {
184
- filter: 'title contains "blog"',
185
- sort: 'modifiedDate desc',
186
- take: 10,
187
- skip: 0
188
- };
189
- const filteredPages = await apiClient.pageMethods.getPageList(params, guid);
190
-
191
- // Get recently modified pages
192
- const recentPages = await apiClient.pageMethods.getPageList({
193
- sort: 'modifiedDate desc',
194
- take: 5
195
- }, guid);
196
- ```
197
-
198
- **Error Handling:**
199
- - Throws `Exception` when retrieval fails
200
-
201
- ### getPageListByPageTemplateID
202
-
203
- Retrieves pages that use a specific page template.
204
-
205
- | Parameter | Type | Required | Description |
206
- |-----------|------|----------|-------------|
207
- | `pageTemplateID` | `number` | Yes | The page template ID |
208
- | `guid` | `string` | Yes | Current website GUID |
209
-
210
- **Returns:** `PageItem[]` - Array of pages using the template
211
-
212
- **Usage Example:**
213
- ```typescript
214
- const pages = await apiClient.pageMethods.getPageListByPageTemplateID(456, guid);
215
- console.log(`Found ${pages.length} pages using this template`);
216
-
217
- // Group by status
218
- const pagesByStatus = pages.reduce((acc, page) => {
219
- const status = page.state || 'draft';
220
- if (!acc[status]) acc[status] = [];
221
- acc[status].push(page);
222
- return acc;
223
- }, {});
224
-
225
- console.log('Pages by status:', pagesByStatus);
226
- ```
227
-
228
- **Error Handling:**
229
- - Throws `Exception` when template not found
230
-
231
- ### getPageListByPage
232
-
233
- Retrieves pages with pagination support.
234
-
235
- | Parameter | Type | Required | Description |
236
- |-----------|------|----------|-------------|
237
- | `pageSize` | `number` | Yes | Number of pages per page |
238
- | `pageNumber` | `number` | Yes | Page number (1-based) |
239
- | `guid` | `string` | Yes | Current website GUID |
240
-
241
- **Returns:** `PageItem[]` - Array of pages for the specified page
242
-
243
- **Usage Example:**
244
- ```typescript
245
- const pageSize = 20;
246
- const pageNumber = 1;
247
-
248
- const firstPage = await apiClient.pageMethods.getPageListByPage(
249
- pageSize,
250
- pageNumber,
251
- guid
252
- );
253
- console.log(`Page ${pageNumber}: ${firstPage.length} pages`);
254
-
255
- // Paginated processing
256
- let currentPage = 1;
257
- let hasMore = true;
258
- while (hasMore) {
259
- const pageItems = await apiClient.pageMethods.getPageListByPage(
260
- pageSize,
261
- currentPage,
262
- guid
263
- );
264
-
265
- if (pageItems.length === 0) {
266
- hasMore = false;
267
- } else {
268
- console.log(`Processing page ${currentPage} with ${pageItems.length} pages`);
269
- // Process pages...
270
- currentPage++;
271
- }
272
- }
273
- ```
274
-
275
- **Error Handling:**
276
- - Throws `Exception` when retrieval fails
277
-
278
- ### getPageListByPageAndPageTemplateID
279
-
280
- Retrieves paginated pages filtered by template.
281
-
282
- | Parameter | Type | Required | Description |
283
- |-----------|------|----------|-------------|
284
- | `pageTemplateID` | `number` | Yes | The page template ID |
285
- | `pageSize` | `number` | Yes | Number of pages per page |
286
- | `pageNumber` | `number` | Yes | Page number (1-based) |
287
- | `guid` | `string` | Yes | Current website GUID |
288
-
289
- **Returns:** `PageItem[]` - Array of pages for the specified page and template
290
-
291
- **Usage Example:**
292
- ```typescript
293
- const templatePages = await apiClient.pageMethods.getPageListByPageAndPageTemplateID(
294
- 456,
295
- 10,
296
- 1,
297
- guid
298
- );
299
- console.log(`Template pages: ${templatePages.length}`);
300
- ```
301
-
302
- **Error Handling:**
303
- - Throws `Exception` when template not found
304
-
305
- ### getPageTree
306
-
307
- Retrieves the complete page hierarchy as a tree structure.
308
-
309
- | Parameter | Type | Required | Description |
310
- |-----------|------|----------|-------------|
311
- | `guid` | `string` | Yes | Current website GUID |
312
-
313
- **Returns:** `PageItem[]` - Hierarchical array of pages with parent-child relationships
314
-
315
- **Usage Example:**
316
- ```typescript
317
- const pageTree = await apiClient.pageMethods.getPageTree(guid);
318
- console.log(`Root pages: ${pageTree.length}`);
319
-
320
- // Display page hierarchy
321
- const displayPageTree = (pages, level = 0) => {
322
- pages.forEach(page => {
323
- const indent = ' '.repeat(level);
324
- console.log(`${indent}${page.title} (${page.path})`);
325
-
326
- if (page.children && page.children.length > 0) {
327
- displayPageTree(page.children, level + 1);
328
- }
329
- });
330
- };
331
-
332
- displayPageTree(pageTree);
333
-
334
- // Find page by path in tree
335
- const findPageInTree = (pages, targetPath) => {
336
- for (const page of pages) {
337
- if (page.path === targetPath) {
338
- return page;
339
- }
340
- if (page.children) {
341
- const found = findPageInTree(page.children, targetPath);
342
- if (found) return found;
343
- }
344
- }
345
- return null;
346
- };
347
-
348
- const aboutPage = findPageInTree(pageTree, '/about-us');
349
- ```
350
-
351
- **Error Handling:**
352
- - Throws `Exception` when retrieval fails
353
-
354
- ### getPageTemplateList
355
-
356
- Retrieves all available page templates.
357
-
358
- | Parameter | Type | Required | Description |
359
- |-----------|------|----------|-------------|
360
- | `guid` | `string` | Yes | Current website GUID |
361
-
362
- **Returns:** `PageTemplate[]` - Array of available page templates
363
-
364
- **Usage Example:**
365
- ```typescript
366
- const templates = await apiClient.pageMethods.getPageTemplateList(guid);
367
- console.log(`Available templates: ${templates.length}`);
368
-
369
- // Display template information
370
- templates.forEach(template => {
371
- console.log(`Template: ${template.name}`);
372
- console.log(` Description: ${template.description}`);
373
- console.log(` Content Zones: ${template.contentZones.length}`);
374
- console.log(` Template File: ${template.templateFile}`);
375
- });
376
-
377
- // Create template dropdown options
378
- const templateOptions = templates.map(template => ({
379
- value: template.id,
380
- label: template.name,
381
- description: template.description
382
- }));
383
- ```
384
-
385
- **Error Handling:**
386
- - Throws `Exception` when retrieval fails
387
-
388
- ### getPageSecurity
389
-
390
- Retrieves security settings for a specific page.
391
-
392
- | Parameter | Type | Required | Description |
393
- |-----------|------|----------|-------------|
394
- | `pageID` | `number` | Yes | The page ID |
395
- | `guid` | `string` | Yes | Current website GUID |
396
-
397
- **Returns:** `PageSecurity` - Page security configuration
398
-
399
- **Usage Example:**
400
- ```typescript
401
- const security = await apiClient.pageMethods.getPageSecurity(123, guid);
402
- console.log('Page security settings:', security);
403
-
404
- // Check if page is public
405
- if (security.isPublic) {
406
- console.log('Page is publicly accessible');
407
- } else {
408
- console.log('Page has restricted access');
409
- console.log('Allowed roles:', security.allowedRoles);
410
- }
411
- ```
412
-
413
- **Error Handling:**
414
- - Throws `Exception` when page not found
415
-
416
- ### getPageItemTemplateList
417
-
418
- Retrieves available page item templates.
419
-
420
- | Parameter | Type | Required | Description |
421
- |-----------|------|----------|-------------|
422
- | `guid` | `string` | Yes | Current website GUID |
423
-
424
- **Returns:** `PageItemTemplate[]` - Array of page item templates
425
-
426
- **Usage Example:**
427
- ```typescript
428
- const itemTemplates = await apiClient.pageMethods.getPageItemTemplateList(guid);
429
- console.log(`Available item templates: ${itemTemplates.length}`);
430
-
431
- // Display template types
432
- itemTemplates.forEach(template => {
433
- console.log(`Template: ${template.name}`);
434
- console.log(` Type: ${template.type}`);
435
- console.log(` Description: ${template.description}`);
436
- });
437
- ```
438
-
439
- **Error Handling:**
440
- - Throws `Exception` when retrieval fails
441
-
442
- ### getPageContentZones
443
-
444
- Retrieves content zones for a specific page.
445
-
446
- | Parameter | Type | Required | Description |
447
- |-----------|------|----------|-------------|
448
- | `pageID` | `number` | Yes | The page ID |
449
- | `guid` | `string` | Yes | Current website GUID |
450
-
451
- **Returns:** `ContentZone[]` - Array of content zones
452
-
453
- **Usage Example:**
454
- ```typescript
455
- const zones = await apiClient.pageMethods.getPageContentZones(123, guid);
456
- console.log(`Page has ${zones.length} content zones`);
457
-
458
- // Display zone information
459
- zones.forEach(zone => {
460
- console.log(`Zone: ${zone.name}`);
461
- console.log(` Items: ${zone.items.length}`);
462
- console.log(` Template: ${zone.templateName}`);
463
-
464
- // Display zone items
465
- zone.items.forEach(item => {
466
- console.log(` Item: ${item.title} (${item.type})`);
467
- });
468
- });
469
- ```
470
-
471
- **Error Handling:**
472
- - Throws `Exception` when page not found
473
-
474
- ### savePage
475
-
476
- Creates a new page or updates an existing one.
477
-
478
- | Parameter | Type | Required | Description |
479
- |-----------|------|----------|-------------|
480
- | `page` | `PageItem` | Yes | Page object to save |
481
- | `guid` | `string` | Yes | Current website GUID |
482
- | `returnBatchId` | `boolean` | No | If `true`, returns batch ID immediately. If `false` (default), waits for completion |
483
-
484
- **Returns:** `PageItem | number` - Saved page (if `returnBatchId` is false) or batch ID (if true)
485
-
486
- **Usage Example:**
487
- ```typescript
488
- // Create a new page
489
- const newPage = {
490
- title: 'New About Page',
491
- path: '/about-us',
492
- templateName: 'About Template',
493
- parentPageID: null, // Root level page
494
- menuText: 'About Us',
495
- isVisible: true,
496
- contentZones: [
497
- {
498
- name: 'MainContent',
499
- items: [
500
- {
501
- type: 'content',
502
- contentID: 456,
503
- title: 'About Us Content'
504
- }
505
- ]
506
- }
507
- ]
508
- };
509
-
510
- const savedPage = await apiClient.pageMethods.savePage(newPage, guid);
511
- console.log('Page created with ID:', savedPage.pageID);
512
-
513
- // Update existing page
514
- const existingPage = await apiClient.pageMethods.getPage(123, guid);
515
- existingPage.title = 'Updated Page Title';
516
- existingPage.menuText = 'Updated Menu';
517
- const updatedPage = await apiClient.pageMethods.savePage(existingPage, guid);
518
-
519
- // Save with batch processing
520
- const batchId = await apiClient.pageMethods.savePage(newPage, guid, true);
521
- console.log('Batch created with ID:', batchId);
522
- ```
523
-
524
- **Error Handling:**
525
- - Throws `Exception` when validation fails or save operation fails
526
-
527
- ### savePageSecurity
528
-
529
- Updates security settings for a specific page.
530
-
531
- | Parameter | Type | Required | Description |
532
- |-----------|------|----------|-------------|
533
- | `pageID` | `number` | Yes | The page ID |
534
- | `security` | `PageSecurity` | Yes | Security configuration to apply |
535
- | `guid` | `string` | Yes | Current website GUID |
536
-
537
- **Returns:** `PageSecurity` - Updated security configuration
538
-
539
- **Usage Example:**
540
- ```typescript
541
- // Make page public
542
- const publicSecurity = {
543
- isPublic: true,
544
- allowedRoles: [],
545
- requiresAuthentication: false
546
- };
547
-
548
- const updatedSecurity = await apiClient.pageMethods.savePageSecurity(
549
- 123,
550
- publicSecurity,
551
- guid
552
- );
553
-
554
- // Restrict page to specific roles
555
- const restrictedSecurity = {
556
- isPublic: false,
557
- allowedRoles: ['Administrator', 'Editor'],
558
- requiresAuthentication: true
559
- };
560
-
561
- await apiClient.pageMethods.savePageSecurity(123, restrictedSecurity, guid);
562
- ```
563
-
564
- **Error Handling:**
565
- - Throws `Exception` when page not found or security update fails
566
-
567
- ### movePageItem
568
-
569
- Moves a page item within the page hierarchy.
570
-
571
- | Parameter | Type | Required | Description |
572
- |-----------|------|----------|-------------|
573
- | `pageID` | `number` | Yes | The page ID to move |
574
- | `parentPageID` | `number` | Yes | The new parent page ID (0 for root level) |
575
- | `sortOrder` | `number` | Yes | The sort order within the parent |
576
- | `guid` | `string` | Yes | Current website GUID |
577
-
578
- **Returns:** `PageItem` - Updated page object
579
-
580
- **Usage Example:**
581
- ```typescript
582
- // Move page to root level
583
- const movedPage = await apiClient.pageMethods.movePageItem(123, 0, 1, guid);
584
-
585
- // Move page under another page
586
- const childPage = await apiClient.pageMethods.movePageItem(123, 456, 2, guid);
587
-
588
- // Reorder pages
589
- const reorderPages = async (parentID, pageIDs) => {
590
- for (let i = 0; i < pageIDs.length; i++) {
591
- await apiClient.pageMethods.movePageItem(
592
- pageIDs[i],
593
- parentID,
594
- i + 1,
595
- guid
596
- );
597
- }
598
- };
599
- ```
600
-
601
- **Error Handling:**
602
- - Throws `Exception` when page not found or move operation fails
603
-
604
- ### deletePage
605
-
606
- Deletes a page by its ID.
607
-
608
- | Parameter | Type | Required | Description |
609
- |-----------|------|----------|-------------|
610
- | `pageID` | `number` | Yes | The page ID to delete |
611
- | `guid` | `string` | Yes | Current website GUID |
612
-
613
- **Returns:** `string` - Confirmation message of successful deletion
614
-
615
- **Usage Example:**
616
- ```typescript
617
- try {
618
- const result = await apiClient.pageMethods.deletePage(123, guid);
619
- console.log(result); // "Page deleted successfully"
620
- } catch (error) {
621
- if (error.message.includes('has children')) {
622
- console.log('Cannot delete page: has child pages');
623
- } else if (error.message.includes('referenced')) {
624
- console.log('Cannot delete page: referenced by other content');
625
- } else {
626
- console.error('Failed to delete page:', error.message);
627
- }
628
- }
629
-
630
- // Safe page deletion with checks
631
- const safeDeletePage = async (pageID) => {
632
- try {
633
- const page = await apiClient.pageMethods.getPage(pageID, guid);
634
-
635
- // Check if page has children
636
- if (page.children && page.children.length > 0) {
637
- console.log(`Cannot delete page "${page.title}": has child pages`);
638
- return false;
639
- }
640
-
641
- // Perform deletion
642
- await apiClient.pageMethods.deletePage(pageID, guid);
643
- console.log('Page deleted successfully');
644
- return true;
645
- } catch (error) {
646
- console.error('Failed to delete page:', error.message);
647
- return false;
648
- }
649
- };
650
- ```
651
-
652
- **Error Handling:**
653
- - Throws `Exception` when page not found, has children, or deletion fails
654
-
655
- **Note:** Pages cannot be deleted if they have child pages or are referenced by other content.
656
-
657
- ---
658
-
659
- ## Navigation
660
- - [← Back to Main Documentation](../README.md)
661
- - [Authentication & Setup](./auth.md)
662
- - [AssetMethods](./asset-methods.md)
663
- - [BatchMethods](./batch-methods.md)
664
- - [ContainerMethods](./container-methods.md)
665
- - [ContentMethods](./content-methods.md)
666
- - [InstanceMethods](./instance-methods.md)
667
- - [InstanceUserMethods](./instance-user-methods.md)
668
- - [ModelMethods](./model-methods.md)
669
- - [ServerUserMethods](./server-user-methods.md)
670
- - [WebhookMethods](./webhook-methods.md)
1
+ # Agility CMS & Management API TypeScript SDK
2
+
3
+ ## PageMethods
4
+
5
+ This class provides comprehensive page management operations for Agility CMS. Pages are the structural foundation of your website, defining the navigation hierarchy and content organization.
6
+
7
+ **Important Notes:**
8
+ - Pages define the structure and navigation of your website
9
+ - Each page has a unique path and can contain multiple content zones
10
+ - Pages support workflow states (published, unpublished, approved, etc.)
11
+ - Page operations support both immediate return and batch processing
12
+ - Page templates define the layout and content zones available
13
+ - Pages can be organized in a hierarchical structure with parent-child relationships
14
+
15
+ ### Function List
16
+ - [getPage](#getpage) - Retrieves a specific page by ID
17
+ - [getPageByPath](#getpagebypath) - Retrieves a page by its URL path
18
+ - [getPageHistory](#getpagehistory) - Retrieves version history for a page
19
+ - [getPageComments](#getpagecomments) - Retrieves comments for a page
20
+ - [getPageList](#getpagelist) - Retrieves list of pages with filtering
21
+ - [getPageListByPageTemplateID](#getpagelistbypagetemplateid) - Retrieves pages using specific template
22
+ - [getPageListByPage](#getpagelistbypage) - Retrieves pages with pagination
23
+ - [getPageListByPageAndPageTemplateID](#getpagelistbypageandpagetemplateid) - Retrieves paginated pages by template
24
+ - [getPageTree](#getpagetree) - Retrieves complete page hierarchy
25
+ - [getPageTemplateList](#getpagetemplatelist) - Retrieves available page templates
26
+ - [getPageSecurity](#getpagesecurity) - Retrieves security settings for a page
27
+ - [getPageItemTemplateList](#getpageitemtemplatelist) - Retrieves page item templates
28
+ - [getPageContentZones](#getpagecontentzones) - Retrieves content zones for a page
29
+ - [savePage](#savepage) - Creates or updates a page
30
+ - [savePageSecurity](#savepagesecurity) - Updates page security settings
31
+ - [movePageItem](#movepageitem) - Moves a page item within the hierarchy
32
+ - [deletePage](#deletepage) - Deletes a page by ID
33
+ - [batchWorkflowPages](#batchworkflowpages) - Batch workflow operation on multiple pages
34
+
35
+ ---
36
+
37
+ ### getPage
38
+
39
+ Retrieves a specific page by its unique ID.
40
+
41
+ | Parameter | Type | Required | Description |
42
+ |-----------|------|----------|-------------|
43
+ | `pageID` | `number` | Yes | The page ID to retrieve |
44
+ | `guid` | `string` | Yes | Current website GUID |
45
+
46
+ **Returns:** `PageItem` - Complete page object with content zones and metadata
47
+
48
+ **Usage Example:**
49
+ ```typescript
50
+ const page = await apiClient.pageMethods.getPage(123, guid);
51
+ console.log('Page title:', page.title);
52
+ console.log('Page path:', page.path);
53
+ console.log('Page template:', page.templateName);
54
+ console.log('Last modified:', page.modifiedDate);
55
+ console.log('Content zones:', page.contentZones.length);
56
+
57
+ // Display content zones
58
+ page.contentZones.forEach(zone => {
59
+ console.log(`Zone: ${zone.name}`);
60
+ console.log(` Items: ${zone.items.length}`);
61
+ });
62
+ ```
63
+
64
+ **Error Handling:**
65
+ - Throws `Exception` when page not found
66
+
67
+ ### getPageByPath
68
+
69
+ Retrieves a page by its URL path.
70
+
71
+ | Parameter | Type | Required | Description |
72
+ |-----------|------|----------|-------------|
73
+ | `path` | `string` | Yes | The URL path of the page (e.g., '/about-us') |
74
+ | `guid` | `string` | Yes | Current website GUID |
75
+
76
+ **Returns:** `PageItem` - Page object matching the path
77
+
78
+ **Usage Example:**
79
+ ```typescript
80
+ const page = await apiClient.pageMethods.getPageByPath('/about-us', guid);
81
+ if (page) {
82
+ console.log('Page found:', page.title);
83
+ console.log('Page ID:', page.pageID);
84
+ console.log('Template:', page.templateName);
85
+ } else {
86
+ console.log('Page not found at path');
87
+ }
88
+
89
+ // Validate page paths
90
+ const validatePath = async (path) => {
91
+ try {
92
+ const page = await apiClient.pageMethods.getPageByPath(path, guid);
93
+ return page !== null;
94
+ } catch (error) {
95
+ return false;
96
+ }
97
+ };
98
+
99
+ if (await validatePath('/blog')) {
100
+ console.log('Blog page exists');
101
+ }
102
+ ```
103
+
104
+ **Error Handling:**
105
+ - Throws `Exception` when page not found or path invalid
106
+
107
+ ### getPageHistory
108
+
109
+ Retrieves the version history for a specific page.
110
+
111
+ | Parameter | Type | Required | Description |
112
+ |-----------|------|----------|-------------|
113
+ | `pageID` | `number` | Yes | The page ID |
114
+ | `guid` | `string` | Yes | Current website GUID |
115
+
116
+ **Returns:** `PageHistory[]` - Array of historical versions
117
+
118
+ **Usage Example:**
119
+ ```typescript
120
+ const history = await apiClient.pageMethods.getPageHistory(123, guid);
121
+ console.log(`Found ${history.length} historical versions`);
122
+
123
+ // Display version details
124
+ history.forEach((version, index) => {
125
+ console.log(`Version ${index + 1}:`);
126
+ console.log(` Date: ${version.modifiedDate}`);
127
+ console.log(` User: ${version.modifiedByUser}`);
128
+ console.log(` Action: ${version.action}`);
129
+ console.log(` Notes: ${version.notes}`);
130
+ });
131
+
132
+ // Get latest version
133
+ const latestVersion = history[0];
134
+ console.log('Latest change:', latestVersion.action);
135
+ ```
136
+
137
+ **Error Handling:**
138
+ - Throws `Exception` when page not found
139
+
140
+ ### getPageComments
141
+
142
+ Retrieves all comments for a specific page.
143
+
144
+ | Parameter | Type | Required | Description |
145
+ |-----------|------|----------|-------------|
146
+ | `pageID` | `number` | Yes | The page ID |
147
+ | `guid` | `string` | Yes | Current website GUID |
148
+
149
+ **Returns:** `ItemComments[]` - Array of page comments
150
+
151
+ **Usage Example:**
152
+ ```typescript
153
+ const comments = await apiClient.pageMethods.getPageComments(123, guid);
154
+ console.log(`Found ${comments.length} comments`);
155
+
156
+ // Display comments
157
+ comments.forEach(comment => {
158
+ console.log(`${comment.userName} (${comment.date}):`);
159
+ console.log(` ${comment.comment}`);
160
+ console.log(` Status: ${comment.status}`);
161
+ });
162
+ ```
163
+
164
+ **Error Handling:**
165
+ - Throws `Exception` when page not found
166
+
167
+ ### getPageList
168
+
169
+ Retrieves a list of pages with optional filtering and sorting.
170
+
171
+ | Parameter | Type | Required | Description |
172
+ |-----------|------|----------|-------------|
173
+ | `listParams` | `ListParams` | Yes | Filtering and sorting parameters |
174
+ | `guid` | `string` | Yes | Current website GUID |
175
+
176
+ **Returns:** `PageItem[]` - Array of page items
177
+
178
+ **Usage Example:**
179
+ ```typescript
180
+ // Get all pages
181
+ const allPages = await apiClient.pageMethods.getPageList({}, guid);
182
+
183
+ // Get pages with filtering
184
+ const params = {
185
+ filter: 'title contains "blog"',
186
+ sort: 'modifiedDate desc',
187
+ take: 10,
188
+ skip: 0
189
+ };
190
+ const filteredPages = await apiClient.pageMethods.getPageList(params, guid);
191
+
192
+ // Get recently modified pages
193
+ const recentPages = await apiClient.pageMethods.getPageList({
194
+ sort: 'modifiedDate desc',
195
+ take: 5
196
+ }, guid);
197
+ ```
198
+
199
+ **Error Handling:**
200
+ - Throws `Exception` when retrieval fails
201
+
202
+ ### getPageListByPageTemplateID
203
+
204
+ Retrieves pages that use a specific page template.
205
+
206
+ | Parameter | Type | Required | Description |
207
+ |-----------|------|----------|-------------|
208
+ | `pageTemplateID` | `number` | Yes | The page template ID |
209
+ | `guid` | `string` | Yes | Current website GUID |
210
+
211
+ **Returns:** `PageItem[]` - Array of pages using the template
212
+
213
+ **Usage Example:**
214
+ ```typescript
215
+ const pages = await apiClient.pageMethods.getPageListByPageTemplateID(456, guid);
216
+ console.log(`Found ${pages.length} pages using this template`);
217
+
218
+ // Group by status
219
+ const pagesByStatus = pages.reduce((acc, page) => {
220
+ const status = page.state || 'draft';
221
+ if (!acc[status]) acc[status] = [];
222
+ acc[status].push(page);
223
+ return acc;
224
+ }, {});
225
+
226
+ console.log('Pages by status:', pagesByStatus);
227
+ ```
228
+
229
+ **Error Handling:**
230
+ - Throws `Exception` when template not found
231
+
232
+ ### getPageListByPage
233
+
234
+ Retrieves pages with pagination support.
235
+
236
+ | Parameter | Type | Required | Description |
237
+ |-----------|------|----------|-------------|
238
+ | `pageSize` | `number` | Yes | Number of pages per page |
239
+ | `pageNumber` | `number` | Yes | Page number (1-based) |
240
+ | `guid` | `string` | Yes | Current website GUID |
241
+
242
+ **Returns:** `PageItem[]` - Array of pages for the specified page
243
+
244
+ **Usage Example:**
245
+ ```typescript
246
+ const pageSize = 20;
247
+ const pageNumber = 1;
248
+
249
+ const firstPage = await apiClient.pageMethods.getPageListByPage(
250
+ pageSize,
251
+ pageNumber,
252
+ guid
253
+ );
254
+ console.log(`Page ${pageNumber}: ${firstPage.length} pages`);
255
+
256
+ // Paginated processing
257
+ let currentPage = 1;
258
+ let hasMore = true;
259
+ while (hasMore) {
260
+ const pageItems = await apiClient.pageMethods.getPageListByPage(
261
+ pageSize,
262
+ currentPage,
263
+ guid
264
+ );
265
+
266
+ if (pageItems.length === 0) {
267
+ hasMore = false;
268
+ } else {
269
+ console.log(`Processing page ${currentPage} with ${pageItems.length} pages`);
270
+ // Process pages...
271
+ currentPage++;
272
+ }
273
+ }
274
+ ```
275
+
276
+ **Error Handling:**
277
+ - Throws `Exception` when retrieval fails
278
+
279
+ ### getPageListByPageAndPageTemplateID
280
+
281
+ Retrieves paginated pages filtered by template.
282
+
283
+ | Parameter | Type | Required | Description |
284
+ |-----------|------|----------|-------------|
285
+ | `pageTemplateID` | `number` | Yes | The page template ID |
286
+ | `pageSize` | `number` | Yes | Number of pages per page |
287
+ | `pageNumber` | `number` | Yes | Page number (1-based) |
288
+ | `guid` | `string` | Yes | Current website GUID |
289
+
290
+ **Returns:** `PageItem[]` - Array of pages for the specified page and template
291
+
292
+ **Usage Example:**
293
+ ```typescript
294
+ const templatePages = await apiClient.pageMethods.getPageListByPageAndPageTemplateID(
295
+ 456,
296
+ 10,
297
+ 1,
298
+ guid
299
+ );
300
+ console.log(`Template pages: ${templatePages.length}`);
301
+ ```
302
+
303
+ **Error Handling:**
304
+ - Throws `Exception` when template not found
305
+
306
+ ### getPageTree
307
+
308
+ Retrieves the complete page hierarchy as a tree structure.
309
+
310
+ | Parameter | Type | Required | Description |
311
+ |-----------|------|----------|-------------|
312
+ | `guid` | `string` | Yes | Current website GUID |
313
+
314
+ **Returns:** `PageItem[]` - Hierarchical array of pages with parent-child relationships
315
+
316
+ **Usage Example:**
317
+ ```typescript
318
+ const pageTree = await apiClient.pageMethods.getPageTree(guid);
319
+ console.log(`Root pages: ${pageTree.length}`);
320
+
321
+ // Display page hierarchy
322
+ const displayPageTree = (pages, level = 0) => {
323
+ pages.forEach(page => {
324
+ const indent = ' '.repeat(level);
325
+ console.log(`${indent}${page.title} (${page.path})`);
326
+
327
+ if (page.children && page.children.length > 0) {
328
+ displayPageTree(page.children, level + 1);
329
+ }
330
+ });
331
+ };
332
+
333
+ displayPageTree(pageTree);
334
+
335
+ // Find page by path in tree
336
+ const findPageInTree = (pages, targetPath) => {
337
+ for (const page of pages) {
338
+ if (page.path === targetPath) {
339
+ return page;
340
+ }
341
+ if (page.children) {
342
+ const found = findPageInTree(page.children, targetPath);
343
+ if (found) return found;
344
+ }
345
+ }
346
+ return null;
347
+ };
348
+
349
+ const aboutPage = findPageInTree(pageTree, '/about-us');
350
+ ```
351
+
352
+ **Error Handling:**
353
+ - Throws `Exception` when retrieval fails
354
+
355
+ ### getPageTemplateList
356
+
357
+ Retrieves all available page templates.
358
+
359
+ | Parameter | Type | Required | Description |
360
+ |-----------|------|----------|-------------|
361
+ | `guid` | `string` | Yes | Current website GUID |
362
+
363
+ **Returns:** `PageTemplate[]` - Array of available page templates
364
+
365
+ **Usage Example:**
366
+ ```typescript
367
+ const templates = await apiClient.pageMethods.getPageTemplateList(guid);
368
+ console.log(`Available templates: ${templates.length}`);
369
+
370
+ // Display template information
371
+ templates.forEach(template => {
372
+ console.log(`Template: ${template.name}`);
373
+ console.log(` Description: ${template.description}`);
374
+ console.log(` Content Zones: ${template.contentZones.length}`);
375
+ console.log(` Template File: ${template.templateFile}`);
376
+ });
377
+
378
+ // Create template dropdown options
379
+ const templateOptions = templates.map(template => ({
380
+ value: template.id,
381
+ label: template.name,
382
+ description: template.description
383
+ }));
384
+ ```
385
+
386
+ **Error Handling:**
387
+ - Throws `Exception` when retrieval fails
388
+
389
+ ### getPageSecurity
390
+
391
+ Retrieves security settings for a specific page.
392
+
393
+ | Parameter | Type | Required | Description |
394
+ |-----------|------|----------|-------------|
395
+ | `pageID` | `number` | Yes | The page ID |
396
+ | `guid` | `string` | Yes | Current website GUID |
397
+
398
+ **Returns:** `PageSecurity` - Page security configuration
399
+
400
+ **Usage Example:**
401
+ ```typescript
402
+ const security = await apiClient.pageMethods.getPageSecurity(123, guid);
403
+ console.log('Page security settings:', security);
404
+
405
+ // Check if page is public
406
+ if (security.isPublic) {
407
+ console.log('Page is publicly accessible');
408
+ } else {
409
+ console.log('Page has restricted access');
410
+ console.log('Allowed roles:', security.allowedRoles);
411
+ }
412
+ ```
413
+
414
+ **Error Handling:**
415
+ - Throws `Exception` when page not found
416
+
417
+ ### getPageItemTemplateList
418
+
419
+ Retrieves available page item templates.
420
+
421
+ | Parameter | Type | Required | Description |
422
+ |-----------|------|----------|-------------|
423
+ | `guid` | `string` | Yes | Current website GUID |
424
+
425
+ **Returns:** `PageItemTemplate[]` - Array of page item templates
426
+
427
+ **Usage Example:**
428
+ ```typescript
429
+ const itemTemplates = await apiClient.pageMethods.getPageItemTemplateList(guid);
430
+ console.log(`Available item templates: ${itemTemplates.length}`);
431
+
432
+ // Display template types
433
+ itemTemplates.forEach(template => {
434
+ console.log(`Template: ${template.name}`);
435
+ console.log(` Type: ${template.type}`);
436
+ console.log(` Description: ${template.description}`);
437
+ });
438
+ ```
439
+
440
+ **Error Handling:**
441
+ - Throws `Exception` when retrieval fails
442
+
443
+ ### getPageContentZones
444
+
445
+ Retrieves content zones for a specific page.
446
+
447
+ | Parameter | Type | Required | Description |
448
+ |-----------|------|----------|-------------|
449
+ | `pageID` | `number` | Yes | The page ID |
450
+ | `guid` | `string` | Yes | Current website GUID |
451
+
452
+ **Returns:** `ContentZone[]` - Array of content zones
453
+
454
+ **Usage Example:**
455
+ ```typescript
456
+ const zones = await apiClient.pageMethods.getPageContentZones(123, guid);
457
+ console.log(`Page has ${zones.length} content zones`);
458
+
459
+ // Display zone information
460
+ zones.forEach(zone => {
461
+ console.log(`Zone: ${zone.name}`);
462
+ console.log(` Items: ${zone.items.length}`);
463
+ console.log(` Template: ${zone.templateName}`);
464
+
465
+ // Display zone items
466
+ zone.items.forEach(item => {
467
+ console.log(` Item: ${item.title} (${item.type})`);
468
+ });
469
+ });
470
+ ```
471
+
472
+ **Error Handling:**
473
+ - Throws `Exception` when page not found
474
+
475
+ ### savePage
476
+
477
+ Creates a new page or updates an existing one.
478
+
479
+ | Parameter | Type | Required | Description |
480
+ |-----------|------|----------|-------------|
481
+ | `page` | `PageItem` | Yes | Page object to save |
482
+ | `guid` | `string` | Yes | Current website GUID |
483
+ | `returnBatchId` | `boolean` | No | If `true`, returns batch ID immediately. If `false` (default), waits for completion |
484
+
485
+ **Returns:** `PageItem | number` - Saved page (if `returnBatchId` is false) or batch ID (if true)
486
+
487
+ **Usage Example:**
488
+ ```typescript
489
+ // Create a new page
490
+ const newPage = {
491
+ title: 'New About Page',
492
+ path: '/about-us',
493
+ templateName: 'About Template',
494
+ parentPageID: null, // Root level page
495
+ menuText: 'About Us',
496
+ isVisible: true,
497
+ contentZones: [
498
+ {
499
+ name: 'MainContent',
500
+ items: [
501
+ {
502
+ type: 'content',
503
+ contentID: 456,
504
+ title: 'About Us Content'
505
+ }
506
+ ]
507
+ }
508
+ ]
509
+ };
510
+
511
+ const savedPage = await apiClient.pageMethods.savePage(newPage, guid);
512
+ console.log('Page created with ID:', savedPage.pageID);
513
+
514
+ // Update existing page
515
+ const existingPage = await apiClient.pageMethods.getPage(123, guid);
516
+ existingPage.title = 'Updated Page Title';
517
+ existingPage.menuText = 'Updated Menu';
518
+ const updatedPage = await apiClient.pageMethods.savePage(existingPage, guid);
519
+
520
+ // Save with batch processing
521
+ const batchId = await apiClient.pageMethods.savePage(newPage, guid, true);
522
+ console.log('Batch created with ID:', batchId);
523
+ ```
524
+
525
+ **Error Handling:**
526
+ - Throws `Exception` when validation fails or save operation fails
527
+
528
+ ### savePageSecurity
529
+
530
+ Updates security settings for a specific page.
531
+
532
+ | Parameter | Type | Required | Description |
533
+ |-----------|------|----------|-------------|
534
+ | `pageID` | `number` | Yes | The page ID |
535
+ | `security` | `PageSecurity` | Yes | Security configuration to apply |
536
+ | `guid` | `string` | Yes | Current website GUID |
537
+
538
+ **Returns:** `PageSecurity` - Updated security configuration
539
+
540
+ **Usage Example:**
541
+ ```typescript
542
+ // Make page public
543
+ const publicSecurity = {
544
+ isPublic: true,
545
+ allowedRoles: [],
546
+ requiresAuthentication: false
547
+ };
548
+
549
+ const updatedSecurity = await apiClient.pageMethods.savePageSecurity(
550
+ 123,
551
+ publicSecurity,
552
+ guid
553
+ );
554
+
555
+ // Restrict page to specific roles
556
+ const restrictedSecurity = {
557
+ isPublic: false,
558
+ allowedRoles: ['Administrator', 'Editor'],
559
+ requiresAuthentication: true
560
+ };
561
+
562
+ await apiClient.pageMethods.savePageSecurity(123, restrictedSecurity, guid);
563
+ ```
564
+
565
+ **Error Handling:**
566
+ - Throws `Exception` when page not found or security update fails
567
+
568
+ ### movePageItem
569
+
570
+ Moves a page item within the page hierarchy.
571
+
572
+ | Parameter | Type | Required | Description |
573
+ |-----------|------|----------|-------------|
574
+ | `pageID` | `number` | Yes | The page ID to move |
575
+ | `parentPageID` | `number` | Yes | The new parent page ID (0 for root level) |
576
+ | `sortOrder` | `number` | Yes | The sort order within the parent |
577
+ | `guid` | `string` | Yes | Current website GUID |
578
+
579
+ **Returns:** `PageItem` - Updated page object
580
+
581
+ **Usage Example:**
582
+ ```typescript
583
+ // Move page to root level
584
+ const movedPage = await apiClient.pageMethods.movePageItem(123, 0, 1, guid);
585
+
586
+ // Move page under another page
587
+ const childPage = await apiClient.pageMethods.movePageItem(123, 456, 2, guid);
588
+
589
+ // Reorder pages
590
+ const reorderPages = async (parentID, pageIDs) => {
591
+ for (let i = 0; i < pageIDs.length; i++) {
592
+ await apiClient.pageMethods.movePageItem(
593
+ pageIDs[i],
594
+ parentID,
595
+ i + 1,
596
+ guid
597
+ );
598
+ }
599
+ };
600
+ ```
601
+
602
+ **Error Handling:**
603
+ - Throws `Exception` when page not found or move operation fails
604
+
605
+ ### deletePage
606
+
607
+ Deletes a page by its ID.
608
+
609
+ | Parameter | Type | Required | Description |
610
+ |-----------|------|----------|-------------|
611
+ | `pageID` | `number` | Yes | The page ID to delete |
612
+ | `guid` | `string` | Yes | Current website GUID |
613
+
614
+ **Returns:** `string` - Confirmation message of successful deletion
615
+
616
+ **Usage Example:**
617
+ ```typescript
618
+ try {
619
+ const result = await apiClient.pageMethods.deletePage(123, guid);
620
+ console.log(result); // "Page deleted successfully"
621
+ } catch (error) {
622
+ if (error.message.includes('has children')) {
623
+ console.log('Cannot delete page: has child pages');
624
+ } else if (error.message.includes('referenced')) {
625
+ console.log('Cannot delete page: referenced by other content');
626
+ } else {
627
+ console.error('Failed to delete page:', error.message);
628
+ }
629
+ }
630
+
631
+ // Safe page deletion with checks
632
+ const safeDeletePage = async (pageID) => {
633
+ try {
634
+ const page = await apiClient.pageMethods.getPage(pageID, guid);
635
+
636
+ // Check if page has children
637
+ if (page.children && page.children.length > 0) {
638
+ console.log(`Cannot delete page "${page.title}": has child pages`);
639
+ return false;
640
+ }
641
+
642
+ // Perform deletion
643
+ await apiClient.pageMethods.deletePage(pageID, guid);
644
+ console.log('Page deleted successfully');
645
+ return true;
646
+ } catch (error) {
647
+ console.error('Failed to delete page:', error.message);
648
+ return false;
649
+ }
650
+ };
651
+ ```
652
+
653
+ **Error Handling:**
654
+ - Throws `Exception` when page not found, has children, or deletion fails
655
+
656
+ **Note:** Pages cannot be deleted if they have child pages or are referenced by other content.
657
+
658
+ ---
659
+
660
+ ### batchWorkflowPages
661
+
662
+ Performs a batch workflow operation on multiple pages. Supports Publish, Unpublish, Approve, Decline, and RequestApproval operations.
663
+
664
+ | Parameter | Type | Required | Description |
665
+ |-----------|------|----------|-------------|
666
+ | `pageIDs` | `number[]` | Yes | Array of page IDs to process |
667
+ | `guid` | `string` | Yes | Current website GUID |
668
+ | `locale` | `string` | Yes | The locale code |
669
+ | `operation` | `WorkflowOperationType` | Yes | The workflow operation (Publish, Unpublish, Approve, Decline, RequestApproval) |
670
+ | `returnBatchId` | `boolean` | No | If `true`, returns batch ID immediately without waiting |
671
+
672
+ **Returns:** `Promise<number[]>` - Array of page IDs that were processed
673
+
674
+ **Usage Example:**
675
+ ```typescript
676
+ import { WorkflowOperationType } from '@agility/management-sdk';
677
+
678
+ // Publish multiple pages
679
+ const pageIDs = [201, 202, 203];
680
+ const publishedPageIDs = await client.pageMethods.batchWorkflowPages(
681
+ pageIDs,
682
+ 'your-guid',
683
+ 'en-us',
684
+ WorkflowOperationType.Publish
685
+ );
686
+ console.log('Published page IDs:', publishedPageIDs);
687
+
688
+ // Unpublish multiple pages
689
+ const unpublishedPageIDs = await client.pageMethods.batchWorkflowPages(
690
+ pageIDs,
691
+ 'your-guid',
692
+ 'en-us',
693
+ WorkflowOperationType.Unpublish
694
+ );
695
+
696
+ // Request approval for multiple pages
697
+ const approvalRequestedPageIDs = await client.pageMethods.batchWorkflowPages(
698
+ pageIDs,
699
+ 'your-guid',
700
+ 'en-us',
701
+ WorkflowOperationType.RequestApproval
702
+ );
703
+
704
+ // Approve multiple pages
705
+ const approvedPageIDs = await client.pageMethods.batchWorkflowPages(
706
+ pageIDs,
707
+ 'your-guid',
708
+ 'en-us',
709
+ WorkflowOperationType.Approve
710
+ );
711
+
712
+ // Decline multiple pages
713
+ const declinedPageIDs = await client.pageMethods.batchWorkflowPages(
714
+ pageIDs,
715
+ 'your-guid',
716
+ 'en-us',
717
+ WorkflowOperationType.Decline
718
+ );
719
+ ```
720
+
721
+ **Error Handling:**
722
+ - Throws `Exception` when batch operation fails
723
+
724
+ ---
725
+
726
+ ## Navigation
727
+ - [← Back to Main Documentation](../README.md)
728
+ - [Authentication & Setup](./auth.md)
729
+ - [AssetMethods](./asset-methods.md)
730
+ - [BatchMethods](./batch-methods.md)
731
+ - [ContainerMethods](./container-methods.md)
732
+ - [ContentMethods](./content-methods.md)
733
+ - [InstanceMethods](./instance-methods.md)
734
+ - [InstanceUserMethods](./instance-user-methods.md)
735
+ - [ModelMethods](./model-methods.md)
736
+ - [ServerUserMethods](./server-user-methods.md)
737
+ - [WebhookMethods](./webhook-methods.md)
671
738
  - [Multi-Instance Operations](./multi-instance-operations.md)