# UpdateAnnouncementDtoMergePatch

A model the API reference uses in a request or a response. The operation pages link every field typed as this model here.

A merge patch over UpdateAnnouncementDto. Every property is optional: include only what you are changing, and omit what should stay as it is. Sending null clears a property that accepts null. title, body, targetAudience and concurrencyStamp reject null, so a patch that sends null for one of them fails validation instead of clearing anything.

## Fields
- `title` (string): The announcement title. (min length 3, max length 256)
- `body` (string): The announcement body content (supports Markdown). (min length 10, max length 8192)
- `scope` ([AnnouncementScope](https://devportal.demo.winkpg.io/docs/api/models/AnnouncementScope.md)): The organizational scope of the announcement.
  Values:
  - `Host`: Host-level (system-wide) announcement visible to all users across all tenants. Only host admins can create. TenantId will be null.
  - `Tenant`: Tenant-scoped announcement visible to all users within a specific tenant. Tenant admins can create for their own tenant.
  - `Reseller`: Reseller-scoped announcement visible to users at or below the specified reseller in the hierarchy (including sub-resellers and merchants under them). Uses ResellerPathPrefix with StartsWith matching.
  - `Merchant`: Merchant-scoped announcement visible to users associated with a specific merchant.
- `priority` ([AnnouncementPriority](https://devportal.demo.winkpg.io/docs/api/models/AnnouncementPriority.md)): The priority level of the announcement.
  Values:
  - `Normal`: Normal priority. Standard styling in the notification dropdown.
  - `Important`: Important priority. Highlighted styling (e.g., orange badge).
  - `Critical`: Critical priority. Emphasized styling (e.g., red badge). When combined with PopupOnLogin display option, shows as a blocking modal.
- `displayOptions` ([AnnouncementDisplayOptions](https://devportal.demo.winkpg.io/docs/api/models/AnnouncementDisplayOptions.md)): How the announcement should be displayed to users.
  Values:
  - `DropdownOnly`: Announcement appears only in the notification dropdown in the header toolbar.
  - `PopupOnLogin`: Announcement appears as a popup modal on user login/page load. The popup is shown once and tracked via UserAnnouncementState.PopupShownAt.
  - `Both`: Announcement appears in both the dropdown and as a popup on login.
- `resellerId` (string(uuid)): The reseller ID for reseller-scoped announcements.  Required when Scope is Reseller. Required: When Scope == Reseller. (nullable)
- `merchantId` (string(uuid)): The merchant ID for merchant-scoped announcements.  Required when Scope is Merchant. Required: When Scope == Merchant. (nullable)
- `startDateUtc` (string(date-time)): When the announcement becomes active. Null means immediately active. (nullable)
- `endDateUtc` (string(date-time)): When the announcement expires. Null means no expiration. Conditional: When StartDateUtc is not null and EndDateUtc is not null. Must be > . (nullable)
- `isEnabled` (boolean): Whether the announcement is enabled. Defaults to true.
- `externalLinkUrl` (string): Optional external link URL (e.g., "Learn more" link).  Must be a valid HTTPS URL. Conditional: When ExternalLinkUrl is not empty. Conditional: When ExternalLinkUrl is not null. Max length: 2048. (nullable)
- `externalLinkText` (string): Optional external link display text. Conditional: When ExternalLinkText is not null. Max length: 256. Conditional: When ExternalLinkUrl is not empty. (nullable)
- `targetAudience` ([AnnouncementTargetAudienceCreateOrUpdateDtoMergePatch](https://devportal.demo.winkpg.io/docs/api/models/AnnouncementTargetAudienceCreateOrUpdateDtoMergePatch.md)): The target audience configuration for narrowing within scope.
  Fields:
  - `type` ([AudienceType](https://devportal.demo.winkpg.io/docs/api/models/AudienceType.md)): The type of audience targeting.
    Values:
    - `All`: All users within the announcement's scope receive the announcement.
    - `Roles`: Only users with specific roles within the scope receive the announcement. The RoleNames property specifies which roles.
    - `Users`: Only specific users within the scope receive the announcement. The UserIds property specifies which users.
  - `roleNames` (array<string>): Role names when targeting by roles. Required: When Type == Roles. Max length: 256. Conditional: When Type == All. (nullable)
  - `userIds` (array<string(uuid)>): User IDs when targeting specific users. Required: When Type == Users. Conditional: When Type == All. (nullable)
- `concurrencyStamp` (string): Concurrency stamp for optimistic locking.

## See also

- [All documentation](https://devportal.demo.winkpg.io/llms.txt): the machine-readable index of every public page on this site.
