> Portal Navigation: > > - Append `.md` to any URL under `https://dev.wix.com/docs/` to get its markdown version. > - Pages are either content pages (article or reference text) or menu pages (a list of links to child pages). > - To get a menu page, truncate any URL to a parent path and append `.md` (e.g. `https://dev.wix.com/docs/sdk.md`, `https://dev.wix.com/docs/sdk/core-modules.md`). > - Top-level index of all portals: https://dev.wix.com/docs/llms.txt > - Full concatenated docs: https://dev.wix.com/docs/llms-full.txt # BulkUpdatePrograms # Package: programsOld # Namespace: ProgramsService # Method link: https://dev.wix.com/docs/api-reference/business-management/online-programs/programs-old/program/bulk-update-programs.md ## Permission Scopes: Manage Online Programs (Challenges): SCOPE.CHALLENGES.MANAGE ## Introduction Updates multiple programs in a single synchronous request. Each item includes its own program data and revision. Set `returnEntity` to return updated programs in the response. --- ## REST API ### Schema ``` Method: bulkUpdatePrograms Description: Updates multiple programs in a single synchronous request. Each item includes its own program data and revision. Set `returnEntity` to return updated programs in the response. URL: https://www.wixapis.com/online-programs/v3/bulk/programs/update Method: POST # Note: If the parameter `a.b` is listed under required parameters, `b` is only required if `a` is also present. Required parameters: programs, programs.program.revision Method parameters: param name: programs | type: array | description: Programs to update. Each item contains partial program data. | required: true | validation: minItems 1, maxItems 100 - name: program | type: Program | description: Partial program to update. Include `id` and the latest `revision`. - name: revision | type: string | description: Revision number, which increments by 1 each time the program is updated. To prevent conflicting changes, the current revision must be specified when updating a program. | required: true | validation: format int64 - name: description | type: Description | description: Public-facing program title, details, and media. - ONE-OF: - name: image | type: Image | description: Program image. - name: id | type: string | description: WixMedia image GUID. - name: url | type: string | description: Image URL. - name: altText | type: string | description: Image alt text. - name: video | type: VideoV2 | description: Program video. - name: id | type: string | description: WixMedia GUID. - name: title | type: string | description: Program title. | validation: maxLength 150 - name: details | type: string | description: Detailed program description. | validation: maxLength 8000 - name: timeline | type: Timeline | description: Program timeline settings. Use this to configure self-paced or scheduled programs. - name: selfPaced | type: boolean | description: Whether participants can progress at their own pace. - name: startDate | type: string | description: Local date when the scheduled program starts. | validation: format LOCAL_DATE - name: durationInDays | type: integer | description: Scheduled program duration in days. | validation: format int32 - name: restrictions | type: Restrictions | description: Program access, participation, and progression rules. - name: maxParticipants | type: integer | description: Maximum number of active participants allowed in the program. | validation: minimum 1, format int32 - name: hideFutureSteps | type: boolean | description: Whether future steps are hidden from participants until they become available. - name: resolveStepsInOrder | type: boolean | description: Whether participants must complete steps in order. - name: shareProgress | type: boolean | description: Whether participants can share progress in the connected group. - name: accessType | type: AccessType | description: Program discovery and join access. - enum: - PUBLIC: Anyone who can access the site can discover the program and start the join flow. - PRIVATE: The program can be discovered, but joining requires owner approval. - SECRET: The program is hidden from public discovery and visible only to participants, owners, and trusted apps. - name: price | type: Money | description: Optional one-time payment price for joining the program. - name: value | type: string | description: Monetary amount. Decimal string with a period as a decimal separator (e.g., 3.99). | validation: decimalValue {"gt":"0.00","maxScale":3} - name: seo | type: Seo | description: SEO settings used for the program page. - name: slug | type: string | description: Unique URL slug for the program page. | validation: format URL_SLUG - name: seoData | type: SeoSchema | description: Advanced SEO schema data. - name: tags | type: array | description: SEO tag information. - name: type | type: string | description: SEO tag type. Supported values: `title`, `meta`, `script`, `link`. - name: props | type: object | description: A `{"key": "value"}` pair object where each SEO tag property (`"name"`, `"content"`, `"rel"`, `"href"`) contains a value. For example: `{"name": "description", "content": "the description itself"}`. - name: meta | type: object | description: SEO tag metadata. For example, `{"height": 300, "width": 240}`. - name: children | type: string | description: SEO tag inner content. For example, ` inner content `. - name: custom | type: boolean | description: Whether the tag is a [custom tag](https://support.wix.com/en/article/adding-additional-meta-tags-to-your-sites-pages). - name: disabled | type: boolean | description: Whether the tag is disabled. If the tag is disabled, people can't find your page when searching for this phrase in search engines. - name: settings | type: Settings | description: SEO general settings. - name: preventAutoRedirect | type: boolean | description: Whether the [automatical redirect visits](https://support.wix.com/en/article/customizing-your-pages-seo-settings-in-the-seo-panel) from the old URL to the new one is enabled. Default: `false` (automatical redirect is enabled). - name: keywords | type: array | description: User-selected keyword terms for a specific page. | validation: maxItems 5 - name: term | type: string | description: Keyword value. - name: isMain | type: boolean | description: Whether the keyword is the main focus keyword. - name: origin | type: string | description: The source that added the keyword terms to the SEO settings. | validation: maxLength 1000 - name: imageUrl | type: string | description: Image URL derived from the program description media. | validation: format WEB_URL - name: imageAlt | type: string | description: Alternative text for the SEO image. | validation: maxLength 1000 - name: rewards | type: array | description: Rewards assigned to participants when they reach configured milestones. | validation: maxItems 10 - name: trigger | type: Trigger | description: Program milestone that grants the reward. If omitted, the trigger defaults to `JOINED_TO_PROGRAM` for compatibility with existing rewards. - enum: - JOINED_TO_PROGRAM: Default trigger for existing rewards. The reward is granted when a member joins the program. - STEP_COMPLETED: The reward is granted when at least one step is completed. - ALL_STEPS_COMPLETED: The reward is granted when all required steps are completed. - name: badgeIds | type: array | description: Badge GUIDs to assign when the reward is granted. | validation: maxItems 50, format GUID - name: certificate | type: Certificate | description: Certificate assigned when the reward is granted. - name: id | type: string | description: Certificate GUID. Currently this is the program GUID. | validation: format GUID - name: connectedDate | type: string | description: Date and time the certificate was connected to the program. | validation: format date-time - name: socialGroupId | type: string | description: GUID of the social group connected to the program, if one exists. | validation: format GUID - name: extendedFields | type: ExtendedFields | description: Custom fields for apps that extend the Program entity. - name: namespaces | type: object | description: Extended field data. Each key corresponds to the namespace of the app that created the extended fields. The value of each key is structured according to the schema defined when the extended fields were configured. You can only access fields for which you have the appropriate permissions. Learn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields.md). | validation: format map - name: shouldSendInvoice | type: boolean | description: Whether to send an invoice after a single-payment purchase. When false, the buyer receives a payment confirmation email instead. - name: videoStepsSettings | type: VideoStepsSettings | description: Settings that control how video steps behave in this program. - name: autoNavigate | type: boolean | description: Whether the participant is automatically moved to the next video step after finishing the current one. - name: requiredCompletionPercentage | type: number | description: Percentage of a video that must be watched to complete a video step. - name: fieldMask | type: | description: The list of fields to update for this program. For REST requests, this list is inferred from the request body. param name: returnEntity | type: returnEntity | description: Whether to return updated programs in the response. Return type: BulkUpdateProgramsResponse - name: results | type: array | description: Per-item update results. | validation: minItems 1, maxItems 100 - name: itemMetadata | type: ItemMetadata | description: Result metadata for this item. - name: id | type: string | description: Item GUID. Should always be available, unless it's impossible (for example, when failing to create an item). - name: originalIndex | type: integer | description: Index of the item within the request array. Allows for correlation between request and response items. - name: success | type: boolean | description: Whether the requested action was successful for this item. When `false`, the `error` field is populated. - name: error | type: ApplicationError | description: Details about the error in case of failure. - name: code | type: string | description: Error code. - name: description | type: string | description: Description of the error. - name: data | type: object | description: Data related to the error. - name: item | type: Program | description: Updated program. This is returned only when `return_entity` is true. - name: id | type: string | description: Program GUID. | validation: format GUID - name: revision | type: string | description: Revision number, which increments by 1 each time the program is updated. To prevent conflicting changes, the current revision must be specified when updating a program. | validation: format int64 - name: createdDate | type: string | description: Date and time the program was created. | validation: format date-time - name: updatedDate | type: string | description: Date and time the program was last updated. | validation: format date-time - name: status | type: Status | description: Current program lifecycle status. - enum: - DRAFT: The program is editable and visible only in management contexts. - PUBLISHED: The program is available according to its access restrictions. - ENDED: The program is no longer available for new participation. - ARCHIVED: The program is closed and removed from normal public discovery. - name: statusUpdatedDate | type: string | description: Date and time when `status` last changed. | validation: format date-time - name: categoryIds | type: array | description: Category GUIDs assigned to the program. This field is read-only; use the Program Categories API to assign categories. | validation: maxItems 10, format GUID - name: description | type: Description | description: Public-facing program title, details, and media. - ONE-OF: - name: image | type: Image | description: Program image. - name: id | type: string | description: WixMedia image GUID. - name: url | type: string | description: Image URL. - name: height | type: integer | description: Original image height. - name: width | type: integer | description: Original image width. - name: altText | type: string | description: Image alt text. - name: filename | type: string | description: Image filename. - name: video | type: VideoV2 | description: Program video. - name: id | type: string | description: WixMedia GUID. - name: resolutions | type: array | description: Available resolutions for the video, starting with the optimal resolution. | validation: maxItems 100 - name: url | type: string | description: Video URL. - name: height | type: integer | description: Video height. - name: width | type: integer | description: Video width. - name: format | type: string | description: Video format for example, mp4, hls. - name: filename | type: string | description: Video filename. - name: title | type: string | description: Program title. | validation: maxLength 150 - name: details | type: string | description: Detailed program description. | validation: maxLength 8000 - name: timeline | type: Timeline | description: Program timeline settings. Use this to configure self-paced or scheduled programs. - name: selfPaced | type: boolean | description: Whether participants can progress at their own pace. - name: startDate | type: string | description: Local date when the scheduled program starts. | validation: format LOCAL_DATE - name: durationInDays | type: integer | description: Scheduled program duration in days. | validation: format int32 - name: restrictions | type: Restrictions | description: Program access, participation, and progression rules. - name: maxParticipants | type: integer | description: Maximum number of active participants allowed in the program. | validation: minimum 1, format int32 - name: hideFutureSteps | type: boolean | description: Whether future steps are hidden from participants until they become available. - name: resolveStepsInOrder | type: boolean | description: Whether participants must complete steps in order. - name: shareProgress | type: boolean | description: Whether participants can share progress in the connected group. - name: accessType | type: AccessType | description: Program discovery and join access. - enum: - PUBLIC: Anyone who can access the site can discover the program and start the join flow. - PRIVATE: The program can be discovered, but joining requires owner approval. - SECRET: The program is hidden from public discovery and visible only to participants, owners, and trusted apps. - name: price | type: Money | description: Optional one-time payment price for joining the program. - name: value | type: string | description: Monetary amount. Decimal string with a period as a decimal separator (e.g., 3.99). | validation: decimalValue {"gt":"0.00","maxScale":3} - name: currency | type: string | description: Currency code. Must be valid ISO 4217 currency code (e.g., USD). | validation: format CURRENCY - name: seo | type: Seo | description: SEO settings used for the program page. - name: slug | type: string | description: Unique URL slug for the program page. | validation: format URL_SLUG - name: seoData | type: SeoSchema | description: Advanced SEO schema data. - name: tags | type: array | description: SEO tag information. - name: type | type: string | description: SEO tag type. Supported values: `title`, `meta`, `script`, `link`. - name: props | type: object | description: A `{"key": "value"}` pair object where each SEO tag property (`"name"`, `"content"`, `"rel"`, `"href"`) contains a value. For example: `{"name": "description", "content": "the description itself"}`. - name: meta | type: object | description: SEO tag metadata. For example, `{"height": 300, "width": 240}`. - name: children | type: string | description: SEO tag inner content. For example, ` inner content `. - name: custom | type: boolean | description: Whether the tag is a [custom tag](https://support.wix.com/en/article/adding-additional-meta-tags-to-your-sites-pages). - name: disabled | type: boolean | description: Whether the tag is disabled. If the tag is disabled, people can't find your page when searching for this phrase in search engines. - name: settings | type: Settings | description: SEO general settings. - name: preventAutoRedirect | type: boolean | description: Whether the [automatical redirect visits](https://support.wix.com/en/article/customizing-your-pages-seo-settings-in-the-seo-panel) from the old URL to the new one is enabled. Default: `false` (automatical redirect is enabled). - name: keywords | type: array | description: User-selected keyword terms for a specific page. | validation: maxItems 5 - name: term | type: string | description: Keyword value. - name: isMain | type: boolean | description: Whether the keyword is the main focus keyword. - name: origin | type: string | description: The source that added the keyword terms to the SEO settings. | validation: maxLength 1000 - name: url | type: PageUrl | description: Program page URL. - name: base | type: string | description: The base URL. For premium sites, this is the domain. For free sites, this is the site URL. For example, `mysite.wixsite.com/mysite`. - name: path | type: string | description: The relative path for the page within the site. For example, `/product-page/a-product`. - name: imageUrl | type: string | description: Image URL derived from the program description media. | validation: format WEB_URL - name: imageAlt | type: string | description: Alternative text for the SEO image. | validation: maxLength 1000 - name: courseWorkload | type: string | description: Approximate SEO program duration in ISO 8601 duration format. | validation: maxLength 100 - name: rewards | type: array | description: Rewards assigned to participants when they reach configured milestones. | validation: maxItems 10 - name: trigger | type: Trigger | description: Program milestone that grants the reward. If omitted, the trigger defaults to `JOINED_TO_PROGRAM` for compatibility with existing rewards. - enum: - JOINED_TO_PROGRAM: Default trigger for existing rewards. The reward is granted when a member joins the program. - STEP_COMPLETED: The reward is granted when at least one step is completed. - ALL_STEPS_COMPLETED: The reward is granted when all required steps are completed. - name: badgeIds | type: array | description: Badge GUIDs to assign when the reward is granted. | validation: maxItems 50, format GUID - name: certificate | type: Certificate | description: Certificate assigned when the reward is granted. - name: id | type: string | description: Certificate GUID. Currently this is the program GUID. | validation: format GUID - name: connectedDate | type: string | description: Date and time the certificate was connected to the program. | validation: format date-time - name: socialGroupId | type: string | description: GUID of the social group connected to the program, if one exists. | validation: format GUID - name: extendedFields | type: ExtendedFields | description: Custom fields for apps that extend the Program entity. - name: namespaces | type: object | description: Extended field data. Each key corresponds to the namespace of the app that created the extended fields. The value of each key is structured according to the schema defined when the extended fields were configured. You can only access fields for which you have the appropriate permissions. Learn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields.md). | validation: format map - name: shouldSendInvoice | type: boolean | description: Whether to send an invoice after a single-payment purchase. When false, the buyer receives a payment confirmation email instead. - name: videoStepsSettings | type: VideoStepsSettings | description: Settings that control how video steps behave in this program. - name: autoNavigate | type: boolean | description: Whether the participant is automatically moved to the next video step after finishing the current one. - name: requiredCompletionPercentage | type: number | description: Percentage of a video that must be watched to complete a video step. - name: contentSummary | type: ContentSummary | description: Read-only counts of content entities in the program. - name: stepCount | type: integer | description: Number of steps in the program. | validation: maximum 3000 - name: sectionCount | type: integer | description: Number of sections in the program. | validation: maximum 1000 - name: ownerUserId | type: string | description: GUID of the site user who created the program. | validation: format GUID - name: bulkActionMetadata | type: BulkActionMetadata | description: Summary metadata for the bulk update. - name: totalSuccesses | type: integer | description: Number of items that were successfully processed. - name: totalFailures | type: integer | description: Number of items that couldn't be processed. - name: undetailedFailures | type: integer | description: Number of failures without details because detailed failure threshold was exceeded. ``` ### Examples ### Bulk update programs Updates selected fields for multiple programs and returns the updated programs. ```curl curl -X POST \ 'https://www.wixapis.com/online-programs/v3/bulk/programs/update' \ -H 'Authorization: ' \ -H 'Content-Type: application/json' \ -d '{ "programs": [ { "program": { "id": "8f6f3f3d-2c3b-4f8c-9e4a-1a5d2e0f7c11", "revision": 3, "description": { "title": "30-Day Wellness Challenge: Spring Edition" } } }, { "program": { "id": "6d8b2f7a-4c62-4a8e-b6d2-2f6f4c1a2b33", "revision": 5, "restrictions": { "accessType": "PRIVATE", "maxParticipants": 150 } } } ], "returnEntity": true }' ``` --- ## JavaScript SDK ### Schema ``` Method: wixClientAdmin.programsOld.ProgramsService.bulkUpdatePrograms(programs, options) Description: Updates multiple programs in a single synchronous request. Each item includes its own program data and revision. Set `returnEntity` to return updated programs in the response. # Note: If the parameter `a.b` is listed under required parameters, `b` is only required if `a` is also present. Required parameters: programs, programs.program.revision Method parameters: param name: options | type: BulkUpdateProgramsOptions none - name: returnEntity | type: boolean | description: Whether to return updated programs in the response. param name: programs | type: array | description: Programs to update. Each item contains partial program data. | required: true | validation: minItems 1, maxItems 100 - name: program | type: Program | description: Partial program to update. Include `id` and the latest `revision`. - name: revision | type: string | description: Revision number, which increments by 1 each time the program is updated. To prevent conflicting changes, the current revision must be specified when updating a program. | required: true | validation: format int64 - name: description | type: Description | description: Public-facing program title, details, and media. - ONE-OF: - name: image | type: string | description: Program image. - name: video | type: string | description: Program video. - name: title | type: string | description: Program title. | validation: maxLength 150 - name: details | type: string | description: Detailed program description. | validation: maxLength 8000 - name: timeline | type: Timeline | description: Program timeline settings. Use this to configure self-paced or scheduled programs. - name: selfPaced | type: boolean | description: Whether participants can progress at their own pace. - name: startDate | type: string | description: Local date when the scheduled program starts. | validation: format LOCAL_DATE - name: durationInDays | type: integer | description: Scheduled program duration in days. | validation: format int32 - name: restrictions | type: Restrictions | description: Program access, participation, and progression rules. - name: maxParticipants | type: integer | description: Maximum number of active participants allowed in the program. | validation: minimum 1, format int32 - name: hideFutureSteps | type: boolean | description: Whether future steps are hidden from participants until they become available. - name: resolveStepsInOrder | type: boolean | description: Whether participants must complete steps in order. - name: shareProgress | type: boolean | description: Whether participants can share progress in the connected group. - name: accessType | type: AccessType | description: Program discovery and join access. - enum: - PUBLIC: Anyone who can access the site can discover the program and start the join flow. - PRIVATE: The program can be discovered, but joining requires owner approval. - SECRET: The program is hidden from public discovery and visible only to participants, owners, and trusted apps. - name: price | type: Money | description: Optional one-time payment price for joining the program. - name: value | type: string | description: Monetary amount. Decimal string with a period as a decimal separator (e.g., 3.99). | validation: decimalValue {"gt":"0.00","maxScale":3} - name: seo | type: Seo | description: SEO settings used for the program page. - name: slug | type: string | description: Unique URL slug for the program page. | validation: format URL_SLUG - name: seoData | type: SeoSchema | description: Advanced SEO schema data. - name: tags | type: array | description: SEO tag information. - name: type | type: string | description: SEO tag type. Supported values: `title`, `meta`, `script`, `link`. - name: props | type: object | description: A `{"key": "value"}` pair object where each SEO tag property (`"name"`, `"content"`, `"rel"`, `"href"`) contains a value. For example: `{"name": "description", "content": "the description itself"}`. - name: meta | type: object | description: SEO tag metadata. For example, `{"height": 300, "width": 240}`. - name: children | type: string | description: SEO tag inner content. For example, ` inner content `. - name: custom | type: boolean | description: Whether the tag is a [custom tag](https://support.wix.com/en/article/adding-additional-meta-tags-to-your-sites-pages). - name: disabled | type: boolean | description: Whether the tag is disabled. If the tag is disabled, people can't find your page when searching for this phrase in search engines. - name: settings | type: Settings | description: SEO general settings. - name: preventAutoRedirect | type: boolean | description: Whether the [automatical redirect visits](https://support.wix.com/en/article/customizing-your-pages-seo-settings-in-the-seo-panel) from the old URL to the new one is enabled. Default: `false` (automatical redirect is enabled). - name: keywords | type: array | description: User-selected keyword terms for a specific page. | validation: maxItems 5 - name: term | type: string | description: Keyword value. - name: isMain | type: boolean | description: Whether the keyword is the main focus keyword. - name: origin | type: string | description: The source that added the keyword terms to the SEO settings. | validation: maxLength 1000 - name: imageUrl | type: string | description: Image URL derived from the program description media. | validation: format WEB_URL - name: imageAlt | type: string | description: Alternative text for the SEO image. | validation: maxLength 1000 - name: rewards | type: array | description: Rewards assigned to participants when they reach configured milestones. | validation: maxItems 10 - name: trigger | type: Trigger | description: Program milestone that grants the reward. If omitted, the trigger defaults to `JOINED_TO_PROGRAM` for compatibility with existing rewards. - enum: - JOINED_TO_PROGRAM: Default trigger for existing rewards. The reward is granted when a member joins the program. - STEP_COMPLETED: The reward is granted when at least one step is completed. - ALL_STEPS_COMPLETED: The reward is granted when all required steps are completed. - name: badgeIds | type: array | description: Badge GUIDs to assign when the reward is granted. | validation: maxItems 50, format GUID - name: certificate | type: Certificate | description: Certificate assigned when the reward is granted. - name: _id | type: string | description: Certificate GUID. Currently this is the program GUID. | validation: format GUID - name: connectedDate | type: Date | description: Date and time the certificate was connected to the program. - name: socialGroupId | type: string | description: GUID of the social group connected to the program, if one exists. | validation: format GUID - name: extendedFields | type: ExtendedFields | description: Custom fields for apps that extend the Program entity. - name: namespaces | type: object | description: Extended field data. Each key corresponds to the namespace of the app that created the extended fields. The value of each key is structured according to the schema defined when the extended fields were configured. You can only access fields for which you have the appropriate permissions. Learn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields.md). | validation: format map - name: shouldSendInvoice | type: boolean | description: Whether to send an invoice after a single-payment purchase. When false, the buyer receives a payment confirmation email instead. - name: videoStepsSettings | type: VideoStepsSettings | description: Settings that control how video steps behave in this program. - name: autoNavigate | type: boolean | description: Whether the participant is automatically moved to the next video step after finishing the current one. - name: requiredCompletionPercentage | type: number | description: Percentage of a video that must be watched to complete a video step. - name: fieldMask | type: array | description: The list of fields to update for this program. For REST requests, this list is inferred from the request body. Return type: PROMISE - name: results | type: array | description: Per-item update results. | validation: minItems 1, maxItems 100 - name: itemMetadata | type: ItemMetadata | description: Result metadata for this item. - name: _id | type: string | description: Item GUID. Should always be available, unless it's impossible (for example, when failing to create an item). - name: originalIndex | type: integer | description: Index of the item within the request array. Allows for correlation between request and response items. - name: success | type: boolean | description: Whether the requested action was successful for this item. When `false`, the `error` field is populated. - name: error | type: ApplicationError | description: Details about the error in case of failure. - name: code | type: string | description: Error code. - name: description | type: string | description: Description of the error. - name: data | type: object | description: Data related to the error. - name: item | type: Program | description: Updated program. This is returned only when `return_entity` is true. - name: _id | type: string | description: Program GUID. | validation: format GUID - name: revision | type: string | description: Revision number, which increments by 1 each time the program is updated. To prevent conflicting changes, the current revision must be specified when updating a program. | validation: format int64 - name: _createdDate | type: Date | description: Date and time the program was created. - name: _updatedDate | type: Date | description: Date and time the program was last updated. - name: status | type: Status | description: Current program lifecycle status. - enum: - DRAFT: The program is editable and visible only in management contexts. - PUBLISHED: The program is available according to its access restrictions. - ENDED: The program is no longer available for new participation. - ARCHIVED: The program is closed and removed from normal public discovery. - name: statusUpdatedDate | type: Date | description: Date and time when `status` last changed. - name: categoryIds | type: array | description: Category GUIDs assigned to the program. This field is read-only; use the Program Categories API to assign categories. | validation: maxItems 10, format GUID - name: description | type: Description | description: Public-facing program title, details, and media. - ONE-OF: - name: image | type: string | description: Program image. - name: video | type: string | description: Program video. - name: title | type: string | description: Program title. | validation: maxLength 150 - name: details | type: string | description: Detailed program description. | validation: maxLength 8000 - name: timeline | type: Timeline | description: Program timeline settings. Use this to configure self-paced or scheduled programs. - name: selfPaced | type: boolean | description: Whether participants can progress at their own pace. - name: startDate | type: string | description: Local date when the scheduled program starts. | validation: format LOCAL_DATE - name: durationInDays | type: integer | description: Scheduled program duration in days. | validation: format int32 - name: restrictions | type: Restrictions | description: Program access, participation, and progression rules. - name: maxParticipants | type: integer | description: Maximum number of active participants allowed in the program. | validation: minimum 1, format int32 - name: hideFutureSteps | type: boolean | description: Whether future steps are hidden from participants until they become available. - name: resolveStepsInOrder | type: boolean | description: Whether participants must complete steps in order. - name: shareProgress | type: boolean | description: Whether participants can share progress in the connected group. - name: accessType | type: AccessType | description: Program discovery and join access. - enum: - PUBLIC: Anyone who can access the site can discover the program and start the join flow. - PRIVATE: The program can be discovered, but joining requires owner approval. - SECRET: The program is hidden from public discovery and visible only to participants, owners, and trusted apps. - name: price | type: Money | description: Optional one-time payment price for joining the program. - name: value | type: string | description: Monetary amount. Decimal string with a period as a decimal separator (e.g., 3.99). | validation: decimalValue {"gt":"0.00","maxScale":3} - name: currency | type: string | description: Currency code. Must be valid ISO 4217 currency code (e.g., USD). | validation: format CURRENCY - name: seo | type: Seo | description: SEO settings used for the program page. - name: slug | type: string | description: Unique URL slug for the program page. | validation: format URL_SLUG - name: seoData | type: SeoSchema | description: Advanced SEO schema data. - name: tags | type: array | description: SEO tag information. - name: type | type: string | description: SEO tag type. Supported values: `title`, `meta`, `script`, `link`. - name: props | type: object | description: A `{"key": "value"}` pair object where each SEO tag property (`"name"`, `"content"`, `"rel"`, `"href"`) contains a value. For example: `{"name": "description", "content": "the description itself"}`. - name: meta | type: object | description: SEO tag metadata. For example, `{"height": 300, "width": 240}`. - name: children | type: string | description: SEO tag inner content. For example, ` inner content `. - name: custom | type: boolean | description: Whether the tag is a [custom tag](https://support.wix.com/en/article/adding-additional-meta-tags-to-your-sites-pages). - name: disabled | type: boolean | description: Whether the tag is disabled. If the tag is disabled, people can't find your page when searching for this phrase in search engines. - name: settings | type: Settings | description: SEO general settings. - name: preventAutoRedirect | type: boolean | description: Whether the [automatical redirect visits](https://support.wix.com/en/article/customizing-your-pages-seo-settings-in-the-seo-panel) from the old URL to the new one is enabled. Default: `false` (automatical redirect is enabled). - name: keywords | type: array | description: User-selected keyword terms for a specific page. | validation: maxItems 5 - name: term | type: string | description: Keyword value. - name: isMain | type: boolean | description: Whether the keyword is the main focus keyword. - name: origin | type: string | description: The source that added the keyword terms to the SEO settings. | validation: maxLength 1000 - name: url | type: string | description: Program page URL. - name: imageUrl | type: string | description: Image URL derived from the program description media. | validation: format WEB_URL - name: imageAlt | type: string | description: Alternative text for the SEO image. | validation: maxLength 1000 - name: courseWorkload | type: string | description: Approximate SEO program duration in ISO 8601 duration format. | validation: maxLength 100 - name: rewards | type: array | description: Rewards assigned to participants when they reach configured milestones. | validation: maxItems 10 - name: trigger | type: Trigger | description: Program milestone that grants the reward. If omitted, the trigger defaults to `JOINED_TO_PROGRAM` for compatibility with existing rewards. - enum: - JOINED_TO_PROGRAM: Default trigger for existing rewards. The reward is granted when a member joins the program. - STEP_COMPLETED: The reward is granted when at least one step is completed. - ALL_STEPS_COMPLETED: The reward is granted when all required steps are completed. - name: badgeIds | type: array | description: Badge GUIDs to assign when the reward is granted. | validation: maxItems 50, format GUID - name: certificate | type: Certificate | description: Certificate assigned when the reward is granted. - name: _id | type: string | description: Certificate GUID. Currently this is the program GUID. | validation: format GUID - name: connectedDate | type: Date | description: Date and time the certificate was connected to the program. - name: socialGroupId | type: string | description: GUID of the social group connected to the program, if one exists. | validation: format GUID - name: extendedFields | type: ExtendedFields | description: Custom fields for apps that extend the Program entity. - name: namespaces | type: object | description: Extended field data. Each key corresponds to the namespace of the app that created the extended fields. The value of each key is structured according to the schema defined when the extended fields were configured. You can only access fields for which you have the appropriate permissions. Learn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields.md). | validation: format map - name: shouldSendInvoice | type: boolean | description: Whether to send an invoice after a single-payment purchase. When false, the buyer receives a payment confirmation email instead. - name: videoStepsSettings | type: VideoStepsSettings | description: Settings that control how video steps behave in this program. - name: autoNavigate | type: boolean | description: Whether the participant is automatically moved to the next video step after finishing the current one. - name: requiredCompletionPercentage | type: number | description: Percentage of a video that must be watched to complete a video step. - name: contentSummary | type: ContentSummary | description: Read-only counts of content entities in the program. - name: stepCount | type: integer | description: Number of steps in the program. | validation: maximum 3000 - name: sectionCount | type: integer | description: Number of sections in the program. | validation: maximum 1000 - name: ownerUserId | type: string | description: GUID of the site user who created the program. | validation: format GUID - name: bulkActionMetadata | type: BulkActionMetadata | description: Summary metadata for the bulk update. - name: totalSuccesses | type: integer | description: Number of items that were successfully processed. - name: totalFailures | type: integer | description: Number of items that couldn't be processed. - name: undetailedFailures | type: integer | description: Number of failures without details because detailed failure threshold was exceeded. ``` ### Examples ### bulkUpdatePrograms ```javascript import { programs } from '@wix/online-programs'; async function bulkUpdatePrograms(programs,options) { const response = await programs.bulkUpdatePrograms(programs,options); }; ``` ### bulkUpdatePrograms (with elevated permissions) ```javascript import { programs } from '@wix/online-programs'; import { auth } from '@wix/essentials'; async function myBulkUpdateProgramsMethod(programs,options) { const elevatedBulkUpdatePrograms = auth.elevate(programs.bulkUpdatePrograms); const response = await elevatedBulkUpdatePrograms(programs,options); } ``` ### bulkUpdatePrograms (self-hosted) Self-hosted SDK calls require you to [create a client](https://dev.wix.com/docs/sdk/articles/work-with-the-sdk/about-the-wix-client.md). ```javascript import { createClient } from '@wix/sdk'; import { programs } from '@wix/online-programs'; // Import the auth strategy for the relevant access type // Import the relevant host module if needed const myWixClient = createClient ({ modules: { programs }, // Include the auth strategy and host as relevant }); async function bulkUpdatePrograms(programs,options) { const response = await myWixClient.programs.bulkUpdatePrograms(programs,options); }; ``` ---