> 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 # UpdateProgram # Package: programs # Namespace: ProgramsService # Method link: https://dev.wix.com/docs/api-reference/business-management/online-programs/programs/program/update-program.md ## Permission Scopes: Manage Challenges: SCOPE.CHALLENGES.MANAGE ## Introduction Updates selected fields of a program. Each time the program is updated, `revision` increments by 1. The current `revision` must be passed when updating the program. This ensures you're working with the latest program and prevents unintended overwrites. Ended and archived programs can't be updated. Timeline changes are blocked when the program has active participants. --- ## REST API ### Schema ``` Method: updateProgram Description: Updates selected fields of a program. Each time the program is updated, `revision` increments by 1. The current `revision` must be passed when updating the program. This ensures you're working with the latest program and prevents unintended overwrites. Ended and archived programs can't be updated. Timeline changes are blocked when the program has active participants. URL: https://www.wixapis.com/online-programs/v3/programs/{program.id} Method: PATCH # Note: If the parameter `a.b` is listed under required parameters, `b` is only required if `a` is also present. Required parameters: program, program.id, program.revision Method parameters: param name: program | type: Program | description: A program is an Online Programs course, challenge, or structured journey. Programs contain lifecycle state, public description, timeline, access rules, pricing, SEO, rewards, and summary information for their content. | required: true - name: id | type: string | description: Program GUID. | required: true | 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. | 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. Return type: UpdateProgramResponse - name: program | type: Program | description: Updated program. - 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 Possible Errors: HTTP Code: 400 | Status Code: INVALID_ARGUMENT | Application Code: WRONG_PARTICIPANTS_NUMBER | Description: The participant limit is lower than the number of active participants. HTTP Code: 400 | Status Code: INVALID_ARGUMENT | Application Code: WRONG_START_DATE | Description: The program start date is in the past for the site's timezone. HTTP Code: 428 | Status Code: FAILED_PRECONDITION | Application Code: TIMELINE_SWITCH_FORBIDDEN | Description: Timeline settings can't be changed while the program has active participants. HTTP Code: 428 | Status Code: FAILED_PRECONDITION | Application Code: DUPLICATED_SLUG | Description: There is already a program with this SEO slug or a program GUID that matches this SEO slug. HTTP Code: 428 | Status Code: FAILED_PRECONDITION | Application Code: WRONG_STATE | Description: The program is ended or archived and can't be updated. ``` ### Examples ### Update program details Updates selected program fields using the current revision. ```curl curl -X PATCH \ 'https://www.wixapis.com/online-programs/v3/programs/8f6f3f3d-2c3b-4f8c-9e4a-1a5d2e0f7c11' \ -H 'Authorization: ' \ -H 'Content-Type: application/json' \ -d '{ "program": { "id": "8f6f3f3d-2c3b-4f8c-9e4a-1a5d2e0f7c11", "revision": 3, "description": { "title": "30-Day Wellness Challenge: Spring Edition" }, "seo": { "slug": "30-day-wellness-spring" } } }' ``` --- ## JavaScript SDK ### Schema ``` Method: wixClientAdmin.programs.ProgramsService.updateProgram(_id, program) Description: Updates selected fields of a program. Each time the program is updated, `revision` increments by 1. The current `revision` must be passed when updating the program. This ensures you're working with the latest program and prevents unintended overwrites. Ended and archived programs can't be updated. Timeline changes are blocked when the program has active participants. # Note: If the parameter `a.b` is listed under required parameters, `b` is only required if `a` is also present. Required parameters: program, _id, program.revision Method parameters: param name: _id | type: string | description: Program GUID. | required: true | validation: format GUID param name: program | type: UpdateProgram | description: A program is an Online Programs course, challenge, or structured journey. Programs contain lifecycle state, public description, timeline, access rules, pricing, SEO, rewards, and summary information for their content. | required: true - 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. Return type: PROMISE - 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 Possible Errors: HTTP Code: 400 | Status Code: INVALID_ARGUMENT | Application Code: WRONG_PARTICIPANTS_NUMBER | Description: The participant limit is lower than the number of active participants. HTTP Code: 400 | Status Code: INVALID_ARGUMENT | Application Code: WRONG_START_DATE | Description: The program start date is in the past for the site's timezone. HTTP Code: 428 | Status Code: FAILED_PRECONDITION | Application Code: TIMELINE_SWITCH_FORBIDDEN | Description: Timeline settings can't be changed while the program has active participants. HTTP Code: 428 | Status Code: FAILED_PRECONDITION | Application Code: DUPLICATED_SLUG | Description: There is already a program with this SEO slug or a program GUID that matches this SEO slug. HTTP Code: 428 | Status Code: FAILED_PRECONDITION | Application Code: WRONG_STATE | Description: The program is ended or archived and can't be updated. ``` ### Examples ### updateProgram ```javascript import { programs } from '@wix/online-programs'; async function updateProgram(_id,program) { const response = await programs.updateProgram(_id,program); }; ``` ### updateProgram (with elevated permissions) ```javascript import { programs } from '@wix/online-programs'; import { auth } from '@wix/essentials'; async function myUpdateProgramMethod(_id,program) { const elevatedUpdateProgram = auth.elevate(programs.updateProgram); const response = await elevatedUpdateProgram(_id,program); } ``` ### updateProgram (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 updateProgram(_id,program) { const response = await myWixClient.programs.updateProgram(_id,program); }; ``` ---