> ## Documentation Index
> Fetch the complete documentation index at: https://docs.capedigital.co.ke/llms.txt
> Use this file to discover all available pages before exploring further.

# Patch bulletin

> Base model view set providing standardized CRUD operations and error handling.

This view set enforces consistent response formats, error handling patterns,
and logging across all API endpoints. Subclasses must override the class
variables below.



## OpenAPI

````yaml /openapi/content.yaml patch /api/v1/bulletins/{id}
openapi: 3.0.3
info:
  title: Content Service API
  version: 1.0.0
  description: |2-

        **Content Service API** - Comprehensive content(story) and management system.
        
servers:
  - url: https://api.capedigital.co.ke/content
    description: Production
  - url: http://localhost:8000
    description: Local
security: []
paths:
  /api/v1/bulletins/{id}:
    patch:
      tags:
        - Bulletins
      summary: Patch bulletin
      description: >-
        Base model view set providing standardized CRUD operations and error
        handling.


        This view set enforces consistent response formats, error handling
        patterns,

        and logging across all API endpoints. Subclasses must override the class

        variables below.
      operationId: bulletins_partial_update
      parameters:
        - in: path
          name: id
          schema:
            type: string
            format: uuid
          description: A UUID string identifying this Bulletin.
          required: true
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedBulletinRequest'
            examples:
              CreateBulletin:
                value:
                  platform: television
                  slot: evening
                  scheduled_at: '2026-05-27T19:00:00Z'
                  studio: Studio A
                  slot_duration: '00:30:00'
                  editor_on_duty: 3fa85f64-5717-4562-b3fc-2c963f66afa6
                  presenters:
                    - 5fa85f64-5717-4562-b3fc-2c963f66afa8
                summary: Create bulletin
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedBulletinRequest'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedBulletinRequest'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Bulletin'
              examples:
                BulletinResponse:
                  value:
                    id: 1fa85f64-5717-4562-b3fc-2c963f66afa1
                    platform: television
                    slot: evening
                    scheduled_at: '2026-05-27T19:00:00Z'
                    studio: Studio A
                    slot_duration: '00:30:00'
                    editor_on_duty:
                      id: 3c90c3cc-0d44-4b50-8888-8dd25736052a
                      name: John Doe
                      employee_number: EMP-001
                    head_of_news:
                      id: 4fa85f64-5717-4562-b3fc-2c963f66afa7
                      name: Jane Smith
                      employee_number: EMP-002
                    presenters:
                      - id: 5fa85f64-5717-4562-b3fc-2c963f66afa8
                        name: Peter Kamau
                        employee_number: EMP-003
                    report_status: draft
                    slots: []
                    created_at: '2026-05-27T10:00:00Z'
                    updated_at: '2026-05-27T10:00:00Z'
                  summary: Bulletin response
          description: ''
      security:
        - bearerAuth: []
components:
  schemas:
    PatchedBulletinRequest:
      type: object
      description: Mixin for serializers that need to resolve user IDs to user objects.
      properties:
        platform:
          enum:
            - television
            - radio
          type: string
          x-spec-enum-id: 562fafbd4b066458
          description: |-
            Broadcast platform

            * `television` - Television
            * `radio` - Radio
        slot:
          enum:
            - morning
            - midday
            - afternoon
            - evening
            - late_night
            - breaking
          type: string
          x-spec-enum-id: c946736aa899c338
          description: |-
            Scheduled broadcast window

            * `morning` - Morning
            * `midday` - Midday
            * `afternoon` - Afternoon
            * `evening` - Evening
            * `late_night` - Late Night
            * `breaking` - Breaking
        category:
          enum:
            - news
            - sports
            - business
          type: string
          x-spec-enum-id: 66ae5be8ea000669
          default: news
          description: >-
            Editorial subject of this bulletin (distinct from slot, which is
            time-of-day)


            * `news` - News

            * `sports` - Sports

            * `business` - Business
        scheduled_at:
          type: string
          format: date-time
          description: Date and time the bulletin is scheduled to air
        studio:
          type: string
          description: Studio or broadcast location
          maxLength: 100
        slot_duration:
          type: string
          nullable: true
          description: >-
            Total editorial time allocated for this bulletin slot (e.g. 30
            minutes)
        editor_on_duty:
          type: string
          format: uuid
          nullable: true
          description: User ID of the editor managing this bulletin
        presenters:
          type: array
          items:
            type: string
            format: uuid
          description: User IDs of the news presenters/anchors for this bulletin
        headlines:
          type: string
          description: >-
            Top-of-bulletin headlines read by the presenter, as contenteditable
            HTML
        intro:
          type: string
          description: >-
            Bulletin-wide opening copy read by the presenter, as contenteditable
            HTML
        outro:
          type: string
          description: >-
            Bulletin-wide closing copy read by the presenter, as contenteditable
            HTML
    Bulletin:
      type: object
      description: Mixin for serializers that need to resolve user IDs to user objects.
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
        platform:
          enum:
            - television
            - radio
          type: string
          x-spec-enum-id: 562fafbd4b066458
          description: |-
            Broadcast platform

            * `television` - Television
            * `radio` - Radio
        slot:
          enum:
            - morning
            - midday
            - afternoon
            - evening
            - late_night
            - breaking
          type: string
          x-spec-enum-id: c946736aa899c338
          description: |-
            Scheduled broadcast window

            * `morning` - Morning
            * `midday` - Midday
            * `afternoon` - Afternoon
            * `evening` - Evening
            * `late_night` - Late Night
            * `breaking` - Breaking
        category:
          enum:
            - news
            - sports
            - business
          type: string
          x-spec-enum-id: 66ae5be8ea000669
          default: news
          description: >-
            Editorial subject of this bulletin (distinct from slot, which is
            time-of-day)


            * `news` - News

            * `sports` - Sports

            * `business` - Business
        scheduled_at:
          type: string
          format: date-time
          description: Date and time the bulletin is scheduled to air
        studio:
          type: string
          description: Studio or broadcast location
          maxLength: 100
        slot_duration:
          type: string
          nullable: true
          description: >-
            Total editorial time allocated for this bulletin slot (e.g. 30
            minutes)
        editor_on_duty:
          type: string
          format: uuid
          nullable: true
          description: User ID of the editor managing this bulletin
        head_of_news:
          type: string
          format: uuid
          readOnly: true
          nullable: true
          description: User ID of the head of news who reviews the bulletin report
        presenters:
          type: array
          items:
            type: string
            format: uuid
          description: User IDs of the news presenters/anchors for this bulletin
        report_status:
          enum:
            - draft
            - signed_off
            - awaiting_review
            - reviewed
          type: string
          x-spec-enum-id: b4fb3143817d8e95
          readOnly: true
          description: |-
            Current state of the post-bulletin report

            * `draft` - Draft
            * `signed_off` - Signed Off
            * `awaiting_review` - Awaiting Review
            * `reviewed` - Reviewed
        headlines:
          type: string
          description: >-
            Top-of-bulletin headlines read by the presenter, as contenteditable
            HTML
        intro:
          type: string
          description: >-
            Bulletin-wide opening copy read by the presenter, as contenteditable
            HTML
        outro:
          type: string
          description: >-
            Bulletin-wide closing copy read by the presenter, as contenteditable
            HTML
        slots:
          type: array
          items:
            $ref: '#/components/schemas/BulletinSlot'
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
        updated_at:
          type: string
          format: date-time
          readOnly: true
      required:
        - created_at
        - head_of_news
        - id
        - platform
        - report_status
        - scheduled_at
        - slot
        - slots
        - updated_at
    BulletinSlot:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
        story_id:
          type: string
          format: uuid
          readOnly: true
        order:
          type: integer
          maximum: 32767
          minimum: 0
          description: Position of this story within the bulletin rundown
      required:
        - id
        - order
        - story_id
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: 'Enter your JWT token in the format: Bearer <token>'

````