> ## Documentation Index
> Fetch the complete documentation index at: https://lightdash-mintlify-41a20335.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Post apiv1projects announcements



## OpenAPI

````yaml https://raw.githubusercontent.com/lightdash/lightdash/refs/heads/main/packages/backend/src/generated/swagger.json post /api/v1/projects/{projectUuid}/announcements
openapi: 3.0.0
info:
  title: Lightdash API
  version: 1.108.1
  description: >
    Open API documentation for all public Lightdash API endpoints. #
    Authentication Before you get started, you might need to create a Personal
    Access Token to authenticate via the API. You can create a token by
    following this guide: https://docs.lightdash.com/references/personal_tokens
  license:
    name: MIT
  contact:
    name: Lightdash Support
    email: support@lightdash.com
    url: https://docs.lightdash.com/help-and-contact/contact/contact_info/
servers:
  - url: /
security: []
tags:
  - name: My Account
    description: These routes allow users to manage their own user account.
  - name: Organizations
    description: >-
      Each user is a member of a single organization. These routes allow users
      to manage their organization. Most actions are only available to admin
      users.
  - name: Projects
    description: >-
      Projects belong to a single organization. These routes allow users to
      manage their projects, browse content, and execute queries. Users inside
      an organization might have access to a project from an organization-level
      role or they might be granted access to a project directly.
  - name: Spaces
    description: >-
      Spaces allow you to organize charts and dashboards within a project. They
      also allow granular access to content by allowing you to create private
      spaces, which are only accessible to the creator and admins.
  - name: Roles & Permissions
    description: >-
      These routes allow users to manage roles and permissions for their
      organization.
    externalDocs:
      url: https://docs.lightdash.com/references/roles
  - name: Query
    description: >-
      These routes allow users to execute and manage queries against their data
      warehouse. This includes metric queries, SQL queries, and retrieving query
      results.
paths:
  /api/v1/projects/{projectUuid}/announcements:
    post:
      tags:
        - Homepage
      operationId: createProjectAnnouncement
      parameters:
        - in: path
          name: projectUuid
          required: true
          schema:
            $ref: '#/components/schemas/UUID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateAnnouncementRequest'
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiAnnouncementResponse'
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorPayload'
      security: []
components:
  schemas:
    UUID:
      type: string
      format: uuid
      description: |-
        Stringified UUIDv4.
        See [RFC 4112](https://tools.ietf.org/html/rfc4122)
      pattern: >-
        [0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-4[0-9A-Fa-f]{3}-[89ABab][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}
    CreateAnnouncementRequest:
      properties:
        scheduledPublishAt:
          type: string
          format: date-time
          description: >-
            Future UTC instant at which the announcement publishes automatically

            (Slack notification fires then). Mutually exclusive with
            `publishNow`.
        publishNow:
          type: boolean
          description: |-
            When true the announcement goes live immediately and its Slack
            notification (if any) fires now, instead of waiting for the next
            homepage publish. Used when posting from the published homepage.
            Mutually exclusive with `scheduledPublishAt`.
        slackChannelId:
          type: string
          nullable: true
          description: >-
            Transient (not persisted): when set, publishing posts a notification
            to

            this Slack channel. Requires the org to have Slack installed.
        category:
          allOf:
            - $ref: '#/components/schemas/AnnouncementCategory'
          nullable: true
        body:
          type: string
          nullable: true
        title:
          type: string
      required:
        - category
        - body
        - title
      type: object
    ApiAnnouncementResponse:
      $ref: '#/components/schemas/ApiSuccess_ProjectAnnouncement_'
    ApiErrorPayload:
      properties:
        error:
          properties:
            data:
              $ref: '#/components/schemas/AnyType'
              description: Optional data containing details of the error
            message:
              type: string
              description: A friendly message summarising the error
            name:
              type: string
              description: Unique name for the type of error
            statusCode:
              type: number
              format: integer
              description: HTTP status code
          required:
            - name
            - statusCode
          type: object
        status:
          type: string
          enum:
            - error
          nullable: false
      required:
        - error
        - status
      type: object
      description: |-
        The Error object is returned from the api any time there is an error.
        The message contains
    AnnouncementCategory:
      description: >-
        Curated announcement categories a data team uses to signal intent to

        business users. Fixed set (not user-managed) — each maps to a label +
        colour

        in `ANNOUNCEMENT_CATEGORY_META`.
      enum:
        - launch
        - update
        - heads_up
      type: string
    ApiSuccess_ProjectAnnouncement_:
      properties:
        results:
          $ref: '#/components/schemas/ProjectAnnouncement'
        status:
          type: string
          enum:
            - ok
          nullable: false
      required:
        - results
        - status
      type: object
    AnyType:
      description: |-
        This AnyType is an alias for any
        The goal is to make it easier to identify any type in the codebase
        without having to eslint-disable all the time
        These are only used on legacy `any` types, don't use it for new types.
        This is added on a separate file to avoid circular dependencies.
    ProjectAnnouncement:
      properties:
        updatedAt:
          type: string
          format: date-time
        createdAt:
          type: string
          format: date-time
        authorName:
          type: string
          nullable: true
        createdByUserUuid:
          type: string
          nullable: true
        scheduledPublishAt:
          type: string
          format: date-time
          nullable: true
          description: >-
            When set (and unpublished), the announcement publishes automatically
            at

            this UTC instant. Null once published or for plain drafts.
        pendingSlackChannelId:
          type: string
          nullable: true
          description: >-
            Slack channel the announcement will notify when it publishes. Always

            null once published (consumed) — only drafts carry a value, and
            drafts

            are only visible to users who can manage announcements.
        published:
          type: boolean
        pinned:
          type: boolean
        category:
          allOf:
            - $ref: '#/components/schemas/AnnouncementCategory'
          nullable: true
        body:
          type: string
          nullable: true
        title:
          type: string
        projectUuid:
          type: string
        announcementUuid:
          type: string
      required:
        - updatedAt
        - createdAt
        - authorName
        - createdByUserUuid
        - scheduledPublishAt
        - pendingSlackChannelId
        - published
        - pinned
        - category
        - body
        - title
        - projectUuid
        - announcementUuid
      type: object

````