@agility/management-sdk 0.1.36 → 0.1.38

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 (263) hide show
  1. package/README.md +396 -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 +100 -46
  8. package/dist/apiMethods/instanceMethods.d.ts +13 -0
  9. package/dist/apiMethods/instanceMethods.js +48 -0
  10. package/dist/apiMethods/pageMethods.d.ts +12 -0
  11. package/dist/apiMethods/pageMethods.js +88 -34
  12. package/dist/enums/contentViewType.d.ts +6 -0
  13. package/dist/enums/contentViewType.js +10 -0
  14. package/dist/index.d.ts +3 -0
  15. package/dist/index.js +3 -0
  16. package/dist/models/fetchApiStatus.d.ts +38 -0
  17. package/dist/models/fetchApiStatus.js +2 -0
  18. package/dist/models/pagedResult.d.ts +4 -0
  19. package/dist/models/pagedResult.js +2 -0
  20. package/docs/asset-methods.md +381 -381
  21. package/docs/auth-component.md +360 -360
  22. package/docs/auth.md +593 -593
  23. package/docs/batch-methods.md +243 -243
  24. package/docs/cicd.md +606 -606
  25. package/docs/container-methods.md +267 -267
  26. package/docs/content-methods.md +491 -422
  27. package/docs/instance-methods.md +185 -105
  28. package/docs/instance-user-methods.md +230 -230
  29. package/docs/model-methods.md +433 -433
  30. package/docs/multi-instance-operations.md +191 -191
  31. package/docs/page-methods.md +737 -670
  32. package/docs/server-user-methods.md +279 -279
  33. package/docs/webhook-methods.md +451 -451
  34. package/license.txt +20 -20
  35. package/package.json +40 -40
  36. package/tsconfig.json +14 -14
  37. package/.cursor/api-coverage.md +0 -217
  38. package/.cursor/api-documentation-manifest.md +0 -275
  39. package/.cursor/api-functions-analysis.md +0 -111
  40. package/.cursor/breakout-manifest.md +0 -278
  41. package/.cursor/docs-final-check.md +0 -269
  42. package/.cursor/github-actions-improvements.md +0 -76
  43. package/.cursor/hardening.md +0 -271
  44. package/.cursor/linting-fix.md +0 -160
  45. package/.cursor/manifest.md +0 -243
  46. package/.cursor/mocks.md +0 -100
  47. package/.cursor/test-coverage.md +0 -841
  48. package/.env +0 -92
  49. package/coverage/base.css +0 -224
  50. package/coverage/block-navigation.js +0 -87
  51. package/coverage/coverage-summary.json +0 -43
  52. package/coverage/favicon.png +0 -0
  53. package/coverage/index.html +0 -161
  54. package/coverage/lcov-report/base.css +0 -224
  55. package/coverage/lcov-report/block-navigation.js +0 -87
  56. package/coverage/lcov-report/favicon.png +0 -0
  57. package/coverage/lcov-report/index.html +0 -161
  58. package/coverage/lcov-report/prettify.css +0 -1
  59. package/coverage/lcov-report/prettify.js +0 -2
  60. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  61. package/coverage/lcov-report/sorter.js +0 -210
  62. package/coverage/lcov-report/src/apiClient.ts.html +0 -199
  63. package/coverage/lcov-report/src/apiMethods/assetMethods.ts.html +0 -682
  64. package/coverage/lcov-report/src/apiMethods/batchMethods.ts.html +0 -736
  65. package/coverage/lcov-report/src/apiMethods/clientInstance.ts.html +0 -403
  66. package/coverage/lcov-report/src/apiMethods/containerMethods.ts.html +0 -460
  67. package/coverage/lcov-report/src/apiMethods/contentMethods.ts.html +0 -1183
  68. package/coverage/lcov-report/src/apiMethods/index.html +0 -266
  69. package/coverage/lcov-report/src/apiMethods/instanceMethods.ts.html +0 -160
  70. package/coverage/lcov-report/src/apiMethods/instanceUserMethods.ts.html +0 -268
  71. package/coverage/lcov-report/src/apiMethods/modelMethods.ts.html +0 -352
  72. package/coverage/lcov-report/src/apiMethods/pageMethods.ts.html +0 -1276
  73. package/coverage/lcov-report/src/apiMethods/serverUserMethods.ts.html +0 -196
  74. package/coverage/lcov-report/src/apiMethods/webhookMethods.ts.html +0 -271
  75. package/coverage/lcov-report/src/enums/batchItemType.ts.html +0 -106
  76. package/coverage/lcov-report/src/enums/batchOperationType.ts.html +0 -142
  77. package/coverage/lcov-report/src/enums/batchState..ts.html +0 -106
  78. package/coverage/lcov-report/src/enums/index.html +0 -161
  79. package/coverage/lcov-report/src/enums/workflowOperationType.ts.html +0 -175
  80. package/coverage/lcov-report/src/index.html +0 -116
  81. package/coverage/lcov-report/src/models/assetContainer.ts.html +0 -106
  82. package/coverage/lcov-report/src/models/assetGalleries.ts.html +0 -103
  83. package/coverage/lcov-report/src/models/assetMediaGrouping.ts.html +0 -136
  84. package/coverage/lcov-report/src/models/assetMediaGroupingMetaData.ts.html +0 -97
  85. package/coverage/lcov-report/src/models/batch.ts.html +0 -178
  86. package/coverage/lcov-report/src/models/batchItem.ts.html +0 -127
  87. package/coverage/lcov-report/src/models/container.ts.html +0 -232
  88. package/coverage/lcov-report/src/models/contentDefinitionTypeID.ts.html +0 -142
  89. package/coverage/lcov-report/src/models/contentItem.ts.html +0 -202
  90. package/coverage/lcov-report/src/models/contentSectionDefaultModule.ts.html +0 -106
  91. package/coverage/lcov-report/src/models/contentSectionDefinition.ts.html +0 -196
  92. package/coverage/lcov-report/src/models/contentViewColumn.ts.html +0 -109
  93. package/coverage/lcov-report/src/models/exception.ts.html +0 -109
  94. package/coverage/lcov-report/src/models/index.html +0 -476
  95. package/coverage/lcov-report/src/models/instanceRole.ts.html +0 -106
  96. package/coverage/lcov-report/src/models/instanceUser.ts.html +0 -130
  97. package/coverage/lcov-report/src/models/locales.ts.html +0 -100
  98. package/coverage/lcov-report/src/models/media.ts.html +0 -178
  99. package/coverage/lcov-report/src/models/model.ts.html +0 -172
  100. package/coverage/lcov-report/src/models/notification.ts.html +0 -124
  101. package/coverage/lcov-report/src/models/options.ts.html +0 -109
  102. package/coverage/lcov-report/src/models/pageItem.ts.html +0 -268
  103. package/coverage/lcov-report/src/models/pageModel.ts.html +0 -130
  104. package/coverage/lcov-report/src/models/sharedModule.ts.html +0 -106
  105. package/coverage/lcov-report/src/models/sitemap.ts.html +0 -148
  106. package/coverage/lcov-report/src/models/websiteUser.ts.html +0 -157
  107. package/coverage/lcov.info +0 -1459
  108. package/coverage/prettify.css +0 -1
  109. package/coverage/prettify.js +0 -2
  110. package/coverage/sort-arrow-sprite.png +0 -0
  111. package/coverage/sorter.js +0 -210
  112. package/coverage/src/apiClient.ts.html +0 -199
  113. package/coverage/src/apiMethods/assetMethods.ts.html +0 -682
  114. package/coverage/src/apiMethods/batchMethods.ts.html +0 -736
  115. package/coverage/src/apiMethods/clientInstance.ts.html +0 -403
  116. package/coverage/src/apiMethods/containerMethods.ts.html +0 -460
  117. package/coverage/src/apiMethods/contentMethods.ts.html +0 -1183
  118. package/coverage/src/apiMethods/index.html +0 -266
  119. package/coverage/src/apiMethods/instanceMethods.ts.html +0 -160
  120. package/coverage/src/apiMethods/instanceUserMethods.ts.html +0 -268
  121. package/coverage/src/apiMethods/modelMethods.ts.html +0 -352
  122. package/coverage/src/apiMethods/pageMethods.ts.html +0 -1276
  123. package/coverage/src/apiMethods/serverUserMethods.ts.html +0 -196
  124. package/coverage/src/apiMethods/webhookMethods.ts.html +0 -271
  125. package/coverage/src/enums/batchItemType.ts.html +0 -106
  126. package/coverage/src/enums/batchOperationType.ts.html +0 -142
  127. package/coverage/src/enums/batchState..ts.html +0 -106
  128. package/coverage/src/enums/index.html +0 -161
  129. package/coverage/src/enums/workflowOperationType.ts.html +0 -175
  130. package/coverage/src/index.html +0 -116
  131. package/coverage/src/models/assetContainer.ts.html +0 -106
  132. package/coverage/src/models/assetGalleries.ts.html +0 -103
  133. package/coverage/src/models/assetMediaGrouping.ts.html +0 -136
  134. package/coverage/src/models/assetMediaGroupingMetaData.ts.html +0 -97
  135. package/coverage/src/models/batch.ts.html +0 -178
  136. package/coverage/src/models/batchItem.ts.html +0 -127
  137. package/coverage/src/models/container.ts.html +0 -232
  138. package/coverage/src/models/contentDefinitionTypeID.ts.html +0 -142
  139. package/coverage/src/models/contentItem.ts.html +0 -202
  140. package/coverage/src/models/contentSectionDefaultModule.ts.html +0 -106
  141. package/coverage/src/models/contentSectionDefinition.ts.html +0 -196
  142. package/coverage/src/models/contentViewColumn.ts.html +0 -109
  143. package/coverage/src/models/exception.ts.html +0 -109
  144. package/coverage/src/models/index.html +0 -476
  145. package/coverage/src/models/instanceRole.ts.html +0 -106
  146. package/coverage/src/models/instanceUser.ts.html +0 -130
  147. package/coverage/src/models/locales.ts.html +0 -100
  148. package/coverage/src/models/media.ts.html +0 -178
  149. package/coverage/src/models/model.ts.html +0 -172
  150. package/coverage/src/models/notification.ts.html +0 -124
  151. package/coverage/src/models/options.ts.html +0 -109
  152. package/coverage/src/models/pageItem.ts.html +0 -268
  153. package/coverage/src/models/pageModel.ts.html +0 -130
  154. package/coverage/src/models/sharedModule.ts.html +0 -106
  155. package/coverage/src/models/sitemap.ts.html +0 -148
  156. package/coverage/src/models/websiteUser.ts.html +0 -157
  157. package/dist/.tsbuildinfo +0 -1
  158. package/dist/apiClient.d.ts.map +0 -1
  159. package/dist/apiClient.js.map +0 -1
  160. package/dist/apiMethods/assetMethods.d.ts.map +0 -1
  161. package/dist/apiMethods/assetMethods.js.map +0 -1
  162. package/dist/apiMethods/batchMethods.d.ts.map +0 -1
  163. package/dist/apiMethods/batchMethods.js.map +0 -1
  164. package/dist/apiMethods/clientInstance.d.ts.map +0 -1
  165. package/dist/apiMethods/clientInstance.js.map +0 -1
  166. package/dist/apiMethods/containerMethods.d.ts.map +0 -1
  167. package/dist/apiMethods/containerMethods.js.map +0 -1
  168. package/dist/apiMethods/contentMethods.d.ts.map +0 -1
  169. package/dist/apiMethods/contentMethods.js.map +0 -1
  170. package/dist/apiMethods/instanceMethods.d.ts.map +0 -1
  171. package/dist/apiMethods/instanceMethods.js.map +0 -1
  172. package/dist/apiMethods/instanceUserMethods.d.ts.map +0 -1
  173. package/dist/apiMethods/instanceUserMethods.js.map +0 -1
  174. package/dist/apiMethods/modelMethods.d.ts.map +0 -1
  175. package/dist/apiMethods/modelMethods.js.map +0 -1
  176. package/dist/apiMethods/pageMethods.d.ts.map +0 -1
  177. package/dist/apiMethods/pageMethods.js.map +0 -1
  178. package/dist/apiMethods/serverUserMethods.d.ts.map +0 -1
  179. package/dist/apiMethods/serverUserMethods.js.map +0 -1
  180. package/dist/apiMethods/webhookMethods.d.ts.map +0 -1
  181. package/dist/apiMethods/webhookMethods.js.map +0 -1
  182. package/dist/enums/assetGroupingType.d.ts.map +0 -1
  183. package/dist/enums/assetGroupingType.js.map +0 -1
  184. package/dist/enums/batchItemType.d.ts.map +0 -1
  185. package/dist/enums/batchItemType.js.map +0 -1
  186. package/dist/enums/batchOperationType.d.ts.map +0 -1
  187. package/dist/enums/batchOperationType.js.map +0 -1
  188. package/dist/enums/batchState..d.ts.map +0 -1
  189. package/dist/enums/batchState..js.map +0 -1
  190. package/dist/enums/pageItemTemplateType.d.ts.map +0 -1
  191. package/dist/enums/pageItemTemplateType.js.map +0 -1
  192. package/dist/enums/workflowOperationType.d.ts.map +0 -1
  193. package/dist/enums/workflowOperationType.js.map +0 -1
  194. package/dist/index.d.ts.map +0 -1
  195. package/dist/index.js.map +0 -1
  196. package/dist/models/assetContainer.d.ts.map +0 -1
  197. package/dist/models/assetContainer.js.map +0 -1
  198. package/dist/models/assetGalleries.d.ts.map +0 -1
  199. package/dist/models/assetGalleries.js.map +0 -1
  200. package/dist/models/assetMediaGrouping.d.ts.map +0 -1
  201. package/dist/models/assetMediaGrouping.js.map +0 -1
  202. package/dist/models/assetMediaGroupingMetaData.d.ts.map +0 -1
  203. package/dist/models/assetMediaGroupingMetaData.js.map +0 -1
  204. package/dist/models/batch.d.ts.map +0 -1
  205. package/dist/models/batch.js.map +0 -1
  206. package/dist/models/batchItem.d.ts.map +0 -1
  207. package/dist/models/batchItem.js.map +0 -1
  208. package/dist/models/batchTypes.d.ts.map +0 -1
  209. package/dist/models/batchTypes.js.map +0 -1
  210. package/dist/models/container.d.ts.map +0 -1
  211. package/dist/models/container.js.map +0 -1
  212. package/dist/models/contentDefinitionTypeID.d.ts.map +0 -1
  213. package/dist/models/contentDefinitionTypeID.js.map +0 -1
  214. package/dist/models/contentItem.d.ts.map +0 -1
  215. package/dist/models/contentItem.js.map +0 -1
  216. package/dist/models/contentItemHistory.d.ts.map +0 -1
  217. package/dist/models/contentItemHistory.js.map +0 -1
  218. package/dist/models/contentListFilterModel.d.ts.map +0 -1
  219. package/dist/models/contentListFilterModel.js.map +0 -1
  220. package/dist/models/contentSectionDefaultModule.d.ts.map +0 -1
  221. package/dist/models/contentSectionDefaultModule.js.map +0 -1
  222. package/dist/models/contentSectionDefinition.d.ts.map +0 -1
  223. package/dist/models/contentSectionDefinition.js.map +0 -1
  224. package/dist/models/contentViewColumn.d.ts.map +0 -1
  225. package/dist/models/contentViewColumn.js.map +0 -1
  226. package/dist/models/exception.d.ts.map +0 -1
  227. package/dist/models/exception.js.map +0 -1
  228. package/dist/models/instanceRole.d.ts.map +0 -1
  229. package/dist/models/instanceRole.js.map +0 -1
  230. package/dist/models/instanceUser.d.ts.map +0 -1
  231. package/dist/models/instanceUser.js.map +0 -1
  232. package/dist/models/itemComments.d.ts.map +0 -1
  233. package/dist/models/itemComments.js.map +0 -1
  234. package/dist/models/listParams.d.ts.map +0 -1
  235. package/dist/models/listParams.js.map +0 -1
  236. package/dist/models/locales.d.ts.map +0 -1
  237. package/dist/models/locales.js.map +0 -1
  238. package/dist/models/media.d.ts.map +0 -1
  239. package/dist/models/media.js.map +0 -1
  240. package/dist/models/model.d.ts.map +0 -1
  241. package/dist/models/model.js.map +0 -1
  242. package/dist/models/notification.d.ts.map +0 -1
  243. package/dist/models/notification.js.map +0 -1
  244. package/dist/models/options.d.ts.map +0 -1
  245. package/dist/models/options.js.map +0 -1
  246. package/dist/models/pageHistory.d.ts.map +0 -1
  247. package/dist/models/pageHistory.js.map +0 -1
  248. package/dist/models/pageItem.d.ts.map +0 -1
  249. package/dist/models/pageItem.js.map +0 -1
  250. package/dist/models/pageModel.d.ts.map +0 -1
  251. package/dist/models/pageModel.js.map +0 -1
  252. package/dist/models/serverUser.d.ts.map +0 -1
  253. package/dist/models/serverUser.js.map +0 -1
  254. package/dist/models/sharedModule.d.ts.map +0 -1
  255. package/dist/models/sharedModule.js.map +0 -1
  256. package/dist/models/sitemap.d.ts.map +0 -1
  257. package/dist/models/sitemap.js.map +0 -1
  258. package/dist/models/webhook.d.ts.map +0 -1
  259. package/dist/models/webhook.js.map +0 -1
  260. package/dist/models/websiteListing.d.ts.map +0 -1
  261. package/dist/models/websiteListing.js.map +0 -1
  262. package/dist/models/websiteUser.d.ts.map +0 -1
  263. 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)