@agility/management-sdk 0.1.3 → 0.1.4-beta.1

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 (238) hide show
  1. package/.cursor/api-documentation-manifest.md +275 -0
  2. package/.cursor/api-functions-analysis.md +111 -0
  3. package/.cursor/docs-final-check.md +269 -0
  4. package/.cursor/manifest.md +153 -0
  5. package/.env +92 -0
  6. package/README.md +219 -352
  7. package/dist/apiClient.d.ts +86 -0
  8. package/dist/apiClient.js +229 -0
  9. package/dist/apiClient.js.map +1 -0
  10. package/dist/apiMethods/assetMethods.d.ts +28 -6
  11. package/dist/apiMethods/assetMethods.js +224 -29
  12. package/dist/apiMethods/assetMethods.js.map +1 -0
  13. package/dist/apiMethods/authMethods.d.ts +239 -0
  14. package/dist/apiMethods/authMethods.js +604 -0
  15. package/dist/apiMethods/batchMethods.d.ts +32 -1
  16. package/dist/apiMethods/batchMethods.js +241 -11
  17. package/dist/apiMethods/batchMethods.js.map +1 -0
  18. package/dist/apiMethods/clientInstance.d.ts +58 -4
  19. package/dist/apiMethods/clientInstance.js +311 -44
  20. package/dist/apiMethods/clientInstance.js.map +1 -0
  21. package/dist/apiMethods/containerMethods.d.ts +15 -7
  22. package/dist/apiMethods/containerMethods.js +70 -38
  23. package/dist/apiMethods/containerMethods.js.map +1 -0
  24. package/dist/apiMethods/contentMethods.d.ts +17 -10
  25. package/dist/apiMethods/contentMethods.js +169 -70
  26. package/dist/apiMethods/contentMethods.js.map +1 -0
  27. package/dist/apiMethods/instanceMethods.d.ts +9 -0
  28. package/dist/apiMethods/instanceMethods.js +69 -0
  29. package/dist/apiMethods/instanceMethods.js.map +1 -0
  30. package/dist/apiMethods/instanceUserMethods.d.ts +3 -3
  31. package/dist/apiMethods/instanceUserMethods.js +18 -18
  32. package/dist/apiMethods/instanceUserMethods.js.map +1 -0
  33. package/dist/apiMethods/modelMethods.d.ts +6 -5
  34. package/dist/apiMethods/modelMethods.js +46 -26
  35. package/dist/apiMethods/modelMethods.js.map +1 -0
  36. package/dist/apiMethods/pageMethods.d.ts +21 -9
  37. package/dist/apiMethods/pageMethods.js +278 -76
  38. package/dist/apiMethods/pageMethods.js.map +1 -0
  39. package/dist/apiMethods/serverUserMethods.d.ts +10 -0
  40. package/dist/apiMethods/serverUserMethods.js +89 -0
  41. package/dist/apiMethods/serverUserMethods.js.map +1 -0
  42. package/dist/apiMethods/webhookMethods.d.ts +12 -0
  43. package/dist/apiMethods/webhookMethods.js +131 -0
  44. package/dist/apiMethods/webhookMethods.js.map +1 -0
  45. package/dist/enums/assetGroupingType.d.ts +3 -0
  46. package/dist/enums/assetGroupingType.js +7 -0
  47. package/dist/enums/assetGroupingType.js.map +1 -0
  48. package/dist/enums/batchItemType.d.ts +7 -0
  49. package/dist/enums/batchItemType.js +11 -0
  50. package/dist/enums/batchOperationType.js +1 -1
  51. package/dist/enums/batchOperationType.js.map +1 -0
  52. package/dist/enums/batchState..js +1 -1
  53. package/dist/enums/batchState.d.ts +7 -0
  54. package/dist/enums/batchState.js +12 -0
  55. package/dist/enums/batchState.js.map +1 -0
  56. package/dist/enums/pageItemTemplateType.d.ts +4 -0
  57. package/dist/enums/pageItemTemplateType.js +8 -0
  58. package/dist/enums/pageItemTemplateType.js.map +1 -0
  59. package/dist/enums/workflowOperationType.d.ts +26 -0
  60. package/dist/enums/workflowOperationType.js +30 -0
  61. package/dist/errors/exception.d.ts +4 -0
  62. package/dist/errors/exception.js +11 -0
  63. package/dist/errors/exception.js.map +1 -0
  64. package/dist/index.d.ts +41 -9
  65. package/dist/index.js +48 -10
  66. package/dist/index.js.map +1 -0
  67. package/dist/models/assetContainer.d.ts +7 -0
  68. package/dist/models/assetContainer.js +9 -0
  69. package/dist/models/assetGalleries.d.ts +5 -0
  70. package/dist/models/assetGalleries.js +9 -0
  71. package/dist/models/assetMediaGrouping.d.ts +17 -0
  72. package/dist/models/assetMediaGrouping.js +9 -0
  73. package/dist/models/assetMediaGroupingMetaData.d.ts +4 -0
  74. package/dist/models/assetMediaGroupingMetaData.js +9 -0
  75. package/dist/models/authTokens.d.ts +73 -0
  76. package/dist/models/authTokens.js +2 -0
  77. package/dist/models/batchItem.d.ts +1 -0
  78. package/dist/models/batchRequests.d.ts +67 -0
  79. package/dist/models/batchRequests.js +2 -0
  80. package/dist/models/batchTypes.d.ts +34 -0
  81. package/dist/models/batchTypes.js +2 -0
  82. package/dist/models/container.d.ts +2 -1
  83. package/dist/models/contentDefinitionTypeID.d.ts +17 -0
  84. package/dist/models/contentDefinitionTypeID.js +21 -0
  85. package/dist/models/contentItemHistory.d.ts +20 -0
  86. package/dist/models/contentItemHistory.js +15 -0
  87. package/dist/models/contentListFilterModel.d.ts +26 -0
  88. package/dist/models/contentListFilterModel.js +33 -0
  89. package/dist/models/contentSectionDefaultModule.d.ts +7 -0
  90. package/dist/models/contentSectionDefaultModule.js +9 -0
  91. package/dist/models/contentSectionDefinition.d.ts +35 -0
  92. package/dist/models/contentSectionDefinition.js +9 -0
  93. package/dist/models/exception.js +2 -0
  94. package/dist/models/itemComments.d.ts +14 -0
  95. package/dist/models/itemComments.js +15 -0
  96. package/dist/models/listParams.d.ts +9 -0
  97. package/dist/models/listParams.js +16 -0
  98. package/dist/models/locales.d.ts +3 -0
  99. package/dist/models/locales.js +30 -0
  100. package/dist/models/options.d.ts +2 -5
  101. package/dist/models/options.js +0 -19
  102. package/dist/models/pageHistory.d.ts +21 -0
  103. package/dist/models/pageHistory.js +15 -0
  104. package/dist/models/pageModel.d.ts +14 -0
  105. package/dist/models/pageModel.js +9 -0
  106. package/dist/models/serverUser.d.ts +21 -0
  107. package/dist/models/serverUser.js +9 -0
  108. package/dist/models/sharedModule.d.ts +7 -0
  109. package/dist/models/sharedModule.js +9 -0
  110. package/dist/models/webhook.d.ts +9 -0
  111. package/dist/models/webhook.js +9 -0
  112. package/dist/models/websiteListing.d.ts +16 -0
  113. package/dist/models/websiteListing.js +9 -0
  114. package/dist/tests/authHelper.d.ts +2 -0
  115. package/dist/tests/authHelper.js +14 -0
  116. package/dist/tests/authHelper.js.map +1 -0
  117. package/dist/tests/config/apiClient.config.d.ts +16 -0
  118. package/dist/tests/config/apiClient.config.js +84 -0
  119. package/dist/tests/config/apiClient.config.js.map +1 -0
  120. package/dist/tests/config/test.config.d.ts +24 -0
  121. package/dist/tests/config/test.config.js +47 -0
  122. package/dist/tests/config/test.config.js.map +1 -0
  123. package/dist/tokenStorage.d.ts +72 -0
  124. package/dist/tokenStorage.js +366 -0
  125. package/dist/types/apiResponse.d.ts +13 -0
  126. package/dist/types/apiResponse.js +3 -0
  127. package/dist/types/apiResponse.js.map +1 -0
  128. package/dist/types/assetContainer.d.ts +7 -0
  129. package/dist/types/assetContainer.js +3 -0
  130. package/dist/types/assetContainer.js.map +1 -0
  131. package/dist/types/assetGalleries.d.ts +5 -0
  132. package/dist/types/assetGalleries.js +3 -0
  133. package/dist/types/assetGalleries.js.map +1 -0
  134. package/dist/types/assetMediaGrouping.d.ts +17 -0
  135. package/dist/types/assetMediaGrouping.js +3 -0
  136. package/dist/types/assetMediaGrouping.js.map +1 -0
  137. package/dist/types/assetMediaGroupingMetaData.d.ts +4 -0
  138. package/dist/types/assetMediaGroupingMetaData.js +3 -0
  139. package/dist/types/assetMediaGroupingMetaData.js.map +1 -0
  140. package/dist/types/batch.d.ts +29 -0
  141. package/dist/types/batch.js +3 -0
  142. package/dist/types/batch.js.map +1 -0
  143. package/dist/types/batchItem.d.ts +13 -0
  144. package/dist/types/batchItem.js +3 -0
  145. package/dist/types/batchItem.js.map +1 -0
  146. package/dist/types/container.d.ts +47 -0
  147. package/dist/types/container.js +3 -0
  148. package/dist/types/container.js.map +1 -0
  149. package/dist/types/contentItem.d.ts +37 -0
  150. package/dist/types/contentItem.js +3 -0
  151. package/dist/types/contentItem.js.map +1 -0
  152. package/dist/types/contentItemHistory.d.ts +20 -0
  153. package/dist/types/contentItemHistory.js +3 -0
  154. package/dist/types/contentItemHistory.js.map +1 -0
  155. package/dist/types/contentListFilterModel.d.ts +26 -0
  156. package/dist/types/contentListFilterModel.js +3 -0
  157. package/dist/types/contentListFilterModel.js.map +1 -0
  158. package/dist/types/contentSectionDefaultModule.d.ts +7 -0
  159. package/dist/types/contentSectionDefaultModule.js +3 -0
  160. package/dist/types/contentSectionDefaultModule.js.map +1 -0
  161. package/dist/types/contentSectionDefinition.d.ts +35 -0
  162. package/dist/types/contentSectionDefinition.js +3 -0
  163. package/dist/types/contentSectionDefinition.js.map +1 -0
  164. package/dist/types/contentViewColumn.d.ts +8 -0
  165. package/dist/types/contentViewColumn.js +3 -0
  166. package/dist/types/contentViewColumn.js.map +1 -0
  167. package/dist/types/instanceRole.d.ts +7 -0
  168. package/dist/types/instanceRole.js +3 -0
  169. package/dist/types/instanceRole.js.map +1 -0
  170. package/dist/types/instanceUser.d.ts +14 -0
  171. package/dist/types/instanceUser.js +3 -0
  172. package/dist/types/instanceUser.js.map +1 -0
  173. package/dist/types/itemComments.d.ts +14 -0
  174. package/dist/types/itemComments.js +3 -0
  175. package/dist/types/itemComments.js.map +1 -0
  176. package/dist/types/listParams.d.ts +9 -0
  177. package/dist/types/listParams.js +3 -0
  178. package/dist/types/listParams.js.map +1 -0
  179. package/dist/types/locales.d.ts +1 -0
  180. package/dist/types/locales.js +3 -0
  181. package/dist/types/locales.js.map +1 -0
  182. package/dist/types/media.d.ts +30 -0
  183. package/dist/types/media.js +3 -0
  184. package/dist/types/media.js.map +1 -0
  185. package/dist/types/model.d.ts +30 -0
  186. package/dist/types/model.js +3 -0
  187. package/dist/types/model.js.map +1 -0
  188. package/dist/types/notification.d.ts +13 -0
  189. package/dist/types/notification.js +3 -0
  190. package/dist/types/notification.js.map +1 -0
  191. package/dist/types/options.d.ts +7 -0
  192. package/dist/types/options.js +3 -0
  193. package/dist/types/options.js.map +1 -0
  194. package/dist/types/pageHistory.d.ts +21 -0
  195. package/dist/types/pageHistory.js +3 -0
  196. package/dist/types/pageHistory.js.map +1 -0
  197. package/dist/types/pageItem.d.ts +56 -0
  198. package/dist/types/pageItem.js +3 -0
  199. package/dist/types/pageItem.js.map +1 -0
  200. package/dist/types/pageModel.d.ts +14 -0
  201. package/dist/types/pageModel.js +3 -0
  202. package/dist/types/pageModel.js.map +1 -0
  203. package/dist/types/serverUser.d.ts +21 -0
  204. package/dist/types/serverUser.js +3 -0
  205. package/dist/types/serverUser.js.map +1 -0
  206. package/dist/types/sharedModule.d.ts +7 -0
  207. package/dist/types/sharedModule.js +3 -0
  208. package/dist/types/sharedModule.js.map +1 -0
  209. package/dist/types/sitemap.d.ts +20 -0
  210. package/dist/types/sitemap.js +3 -0
  211. package/dist/types/sitemap.js.map +1 -0
  212. package/dist/types/tokenResponseData.d.ts +10 -0
  213. package/dist/types/tokenResponseData.js +3 -0
  214. package/dist/types/tokenResponseData.js.map +1 -0
  215. package/dist/types/webhook.d.ts +9 -0
  216. package/dist/types/webhook.js +3 -0
  217. package/dist/types/webhook.js.map +1 -0
  218. package/dist/types/websiteListing.d.ts +16 -0
  219. package/dist/types/websiteListing.js +3 -0
  220. package/dist/types/websiteListing.js.map +1 -0
  221. package/dist/types/websiteUser.d.ts +22 -0
  222. package/dist/types/websiteUser.js +3 -0
  223. package/dist/types/websiteUser.js.map +1 -0
  224. package/docs/asset-methods.md +382 -0
  225. package/docs/auth.md +594 -0
  226. package/docs/batch-methods.md +244 -0
  227. package/docs/cicd.md +607 -0
  228. package/docs/container-methods.md +268 -0
  229. package/docs/content-methods.md +423 -0
  230. package/docs/instance-methods.md +105 -0
  231. package/docs/instance-user-methods.md +231 -0
  232. package/docs/model-methods.md +434 -0
  233. package/docs/multi-instance-operations.md +192 -0
  234. package/docs/page-methods.md +671 -0
  235. package/docs/server-user-methods.md +280 -0
  236. package/docs/webhook-methods.md +452 -0
  237. package/package.json +14 -10
  238. package/tsconfig.json +1 -1
@@ -0,0 +1,671 @@
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)
671
+ - [Multi-Instance Operations](./multi-instance-operations.md)