---
id: RESP-WEB
title: Websites Responsibilities
product_area: websites
revision: 1
status: draft
design_intent: proposed
source_sha:
  services-websites: 5fc6823c69d5e6f208c21dba8c0eb3132f8bdc4c
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
  rhythm-web: 38aef7d26f1ab85b5c2a5be27e4b29df3698f193
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
modules:
  - module: MOD-WEB-WEB
    owns:
      - DOM-WEB-WEB-001
      - DOM-WEB-WEB-002
      - DOM-WEB-WEB-004
      - DOM-WEB-WEB-005
      - DOM-WEB-WEB-006
    exposes:
      operations:
        - createWebsiteChange
        - listWebsiteChanges
        - getWebsiteChange
        - listWebsiteChangeEvents
        - persistWebsiteChangeRevision
        - getWebsiteChangeDiff
        - getWebsiteChangeProgress
        - getWebsiteChangeProgressForStaff
        - requestWebsiteChangePreview
        - getWebsiteChangePreviewLink
        - publishWebsiteChange
        - retryWebsiteChange
        - retryWebsiteChangeForStaff
        - reviewWebsiteChange
        - getWebsiteChangePublishPreview
        - listWebsiteSiteReleases
        - getWebsiteSiteRollbackPreview
        - rollbackWebsiteSite
        - listWebsiteSites
        - listWebTemplates
        - getWebTemplate
        - createWebTemplate
        - duplicateWebTemplate
        - convertWebTemplateToCode
        - archiveWebTemplate
        - restoreWebTemplate
        - openWebTemplateChange
        - listTemplateChangeFiles
        - readTemplateChangeFile
        - uploadTemplateAssets
        - receiveWebsiteStudioCallback
        - receiveWebsiteStudioGithubWebhook
        - openWebsiteChangePreview
        - serveWebsiteStudioMcp
        - getWebsiteStudioMcpResourceMetadata
        - openContentEditorSession
        - getSitePageTree
        - listSitePages
        - createSitePage
        - moveSitePage
        - openSitePagePreview
        - listSitePageTemplates
        - listSiteMenus
        - createSiteMenu
        - getSiteMenu
        - saveSiteMenu
        - deleteSiteMenu
        - publishSiteMenu
        - getSiteSettings
        - saveSiteSettings
        - contentSystem.runSiteOperation
        - contentSystem.seedSite
        - contentSystem.upsertContentReader
        - contentSystem.openEditorHandoff
        - contentSystem.readPublishedContent
        - contentSystem.readDraftContent
        - createSite
        - listSites
        - getSite
        - updateSite
        - createSiteFromTemplate
        - getSiteHostnameAvailability
        - setSiteStatus
        - listSiteDomains
        - attachSiteDomain
        - setCanonicalSiteDomain
        - detachSiteDomain
        - resolveSiteHost
        - listSitesForStaff
        - getSiteForStaff
        - listSiteDomainsForStaff
        - createSiteForStaff
        - attachSiteDomainForStaff
        - detachSiteDomainForStaff
        - setSiteStatusForStaff
        - enableWebsites
        - createWebDeployment
        - listWebDeployments
        - getWebDeployment
        - updateWebDeployment
        - setDeploymentReleases
        - setDeploymentPin
        - getCurrentWebRelease
        - recordWebRelease
        - listWebReleases
        - getWebRelease
        - updateReleaseProgress
        - recordWebRollout
        - listWebRollouts
        - getWebRollout
        - setRolloutState
        - lookupWebDeploymentForCms
        - proxy.routeRequest
        - rw.revalidate
        - rw.health
        - rw.previewSite
        - rw.pageData
        - account.signUp
        - account.signIn
        - account.signOut
        - account.verifyEmail
        - account.resendVerification
        - account.requestPasswordReset
        - account.resetPassword
        - account.changePassword
        - account.contactMatch
        - contacts.loadMyProfile
        - contacts.saveProfile
        - contacts.saveCommunicationPreferences
        - contacts.loadMyContactInformation
        - contacts.saveAddress
        - contacts.removeAddress
        - contacts.savePhoneNumber
        - contacts.removePhoneNumber
        - contacts.saveEmailAddress
        - contacts.removeEmailAddress
        - contacts.loadMyOrganization
        - contacts.saveOrganization
        - contacts.loadOrganizationContacts
        - contacts.saveOrganizationContact
        - contacts.removeOrganizationContact
        - contacts.searchContactDirectory
        - contacts.searchOrganizationDirectory
        - contacts.loadDirectoryEntry
      events:
        - 'content refresh request (produced, to the customer''s deployment)'
        - repository workflow callback (consumed)
        - repository app delivery (consumed)
        - reconciler schedule (consumed)
        - refresh drain schedule (consumed)
    delegates:
      - concern: custom-field designation
        to: 'none: no Websites entity has them (R2-ARCH-001)'
      - concern: site authorization and role administration
        to: MOD-PFM-SEC
      - concern: 'member accounts, pool preparation and contact association'
        to: MOD-PFM-SEC
      - concern: Websites application entitlement
        to: MOD-PFM-OPS
      - concern: visitor audience-policy decisions
        to: MOD-PFM-ELG
      - concern: workspace lifecycle and export ownership
        to: MOD-PFM-TNL
      - concern: administration shell and navigation
        to: MOD-PFM-CSH
      - concern: CRM record ownership and member authorization
        to: MOD-CRM-ENT
      - concern: member-pool onboarding execution
        to: MOD-PFM-SEC
      - concern: general field-change history
        to: 'none: change transition logs and content versions (ADR-WEB-WEB-023)'
      - concern: outbound user notification
        to: 'none: Websites sends no notifications'
      - concern: application execution and release-tooling ledger updates
        to: release tooling outside the examined repositories
      - concern: publication of submission intake contracts
        to: 'none: no operation is published (ADR-WEB-WEB-002)'
    guarantees:
      - INV-DOM-WEB-WEB-001-01
      - INV-DOM-WEB-WEB-001-02
      - INV-DOM-WEB-WEB-001-03
      - INV-DOM-WEB-WEB-001-04
      - INV-DOM-WEB-WEB-001-05
      - INV-DOM-WEB-WEB-001-06
      - INV-DOM-WEB-WEB-001-07
      - INV-DOM-WEB-WEB-001-08
      - INV-DOM-WEB-WEB-001-09
      - INV-DOM-WEB-WEB-001-10
      - INV-DOM-WEB-WEB-002-01
      - INV-DOM-WEB-WEB-002-02
      - INV-DOM-WEB-WEB-002-03
      - INV-DOM-WEB-WEB-002-04
      - INV-DOM-WEB-WEB-002-05
      - INV-DOM-WEB-WEB-002-06
      - INV-DOM-WEB-WEB-002-07
      - INV-DOM-WEB-WEB-002-08
      - INV-DOM-WEB-WEB-002-09
      - INV-DOM-WEB-WEB-002-10
      - INV-DOM-WEB-WEB-002-11
      - INV-DOM-WEB-WEB-002-12
      - INV-DOM-WEB-WEB-004-01
      - INV-DOM-WEB-WEB-004-02
      - INV-DOM-WEB-WEB-004-03
      - INV-DOM-WEB-WEB-004-04
      - INV-DOM-WEB-WEB-004-05
      - INV-DOM-WEB-WEB-004-06
      - INV-DOM-WEB-WEB-004-07
      - INV-DOM-WEB-WEB-005-01
      - INV-DOM-WEB-WEB-005-02
      - INV-DOM-WEB-WEB-005-03
      - INV-DOM-WEB-WEB-005-04
      - INV-DOM-WEB-WEB-005-05
      - INV-DOM-WEB-WEB-005-06
      - INV-DOM-WEB-WEB-005-07
      - INV-DOM-WEB-WEB-005-08
      - INV-DOM-WEB-WEB-005-09
      - INV-DOM-WEB-WEB-005-10
      - INV-DOM-WEB-WEB-005-11
      - INV-DOM-WEB-WEB-005-12
      - INV-DOM-WEB-WEB-006-01
      - INV-DOM-WEB-WEB-006-02
      - INV-DOM-WEB-WEB-006-03
      - INV-DOM-WEB-WEB-006-04
      - INV-DOM-WEB-WEB-006-05
      - INV-DOM-WEB-WEB-006-06
      - INV-DOM-WEB-WEB-006-07
evidence:
  - >-
    services-websites at 5fc6823c: modules/changes, modules/content,
    docs/changes.md, docs/content.md.
  - 'services-platform at ad3f6a65: modules/sites, aws/platform.service.ts.'
  - >-
    rhythm-web at 38aef7d2: packages/web-runtime, web-account, web-contacts,
    cms-config.
  - 'react-console at baf6dae3: the Websites screens.'
---
# Websites Responsibilities

## How the Product Area Is Divided

One module covers site administration, editorial content, application changes and portal runtime adapters. Platform stores authoritative sites, hostnames and delivery records. Websites stores templates, changes and content. Customer application packages handle request routing and member-facing adapters, while the console hosts administration.

## Websites, Content and the Portal Runtime

The module owns the five Domain Objects listed in its responsibility declaration. The Service Contracts assign each object to its actual owner and identify the business operations, integration adapters and runtime entry points exposed by that owner. The invariant references provide the guarantees and their enforcement evidence; this overview adds no stronger promise about provider execution or concurrency.

Refresh work connects editorial publication to customer cache invalidation. Repository callbacks and app deliveries supply application-change outcomes, with separate schedules for delivery reconciliation and content refresh. Some local operation names describe package handlers rather than declared service routes.

## What Is Delegated to Platform and Other Areas

Platform supplies security, application licensing, eligibility policy, workspace lifecycle and console framing. CRM retains member and organization records and decides their permitted changes. External delivery tooling executes builds and deployments and writes serving pointers. Custom-field designation and submission publication remain explicit product decisions; the examined module has neither custom-field registration nor a published submission intake operation. It retains change history and content versions without generalized field-history integration.
