Jupyter Notebook · AsyncAPI Specification

Jupyter Kernel Messaging Protocol

Version 5.4.0

The Jupyter Kernel Messaging Protocol defines the WebSocket-based communication between Jupyter clients (notebooks, consoles) and computational kernels. Messages are exchanged over WebSocket channels for shell requests/replies, IOPub broadcasts, stdin input requests, and control channel operations. This protocol is documented in the Jupyter Client messaging specification.

View Spec View on GitHub Data ScienceInteractive ComputingJupyterMachine LearningNotebooksPythonAsyncAPIWebhooksEvents

Channels

/api/kernels/{kernel_id}/channels
publish sendKernelMessage
Send a message to the kernel

Messages

ExecuteRequest
Execute Request
Request to execute code in the kernel.
ExecuteReply
Execute Reply
Reply to an execute request with status and execution count.
InspectRequest
Inspect Request
Request to inspect an object at cursor position.
InspectReply
Inspect Reply
Reply with object inspection results.
CompleteRequest
Complete Request
Request code completion suggestions.
CompleteReply
Complete Reply
Reply with code completion matches.
HistoryRequest
History Request
Request execution history from the kernel.
HistoryReply
History Reply
Reply with execution history entries.
IsCompleteRequest
Is Complete Request
Check if code is complete and ready to execute.
IsCompleteReply
Is Complete Reply
Reply indicating whether code is complete.
KernelInfoRequest
Kernel Info Request
Request information about the kernel.
KernelInfoReply
Kernel Info Reply
Reply with kernel implementation and language information.
ShutdownRequest
Shutdown Request
Request the kernel to shut down.
ShutdownReply
Shutdown Reply
Reply confirming kernel shutdown.
InterruptRequest
Interrupt Request
Request to interrupt the kernel.
InputRequest
Input Request
Kernel requests input from the frontend (e.g., for Python's input() function).
InputReply
Input Reply
Frontend sends user input to the kernel.
ExecuteInput
Execute Input Broadcast
Broadcast of code being executed (for all connected clients).
ExecuteResult
Execute Result
Result of an execution, equivalent to the Out[] prompt in IPython. Contains rich display data.
StreamOutput
Stream Output
Standard output or standard error stream data from code execution.
DisplayData
Display Data
Rich display data output from code execution, supporting multiple MIME types.
UpdateDisplayData
Update Display Data
Update a previous display_data output.
ErrorOutput
Error Output
Error output from failed code execution.
StatusBroadcast
Kernel Status
Kernel execution state broadcast. Published on every state change (busy, idle, starting).
ClearOutput
Clear Output
Request to clear output area in the frontend.
CommOpen
Comm Open
Open a comm channel for custom messaging (e.g., widgets).
CommMsg
Comm Message
Send a message on an open comm channel.
CommClose
Comm Close
Close a comm channel.
CommOpenReply
Comm Open (from kernel)
Kernel opens a comm channel to the frontend.
CommMsgReply
Comm Message (from kernel)
Kernel sends a message on an open comm channel.
CommCloseReply
Comm Close (from kernel)
Kernel closes a comm channel.
DebugReply
Debug Reply
Reply to a debug request.
DebugEvent
Debug Event
Debug event broadcast from the kernel.

Servers

ws
local ws://localhost:8888/api/kernels/{kernel_id}/channels
WebSocket endpoint for communicating with a running Jupyter kernel. All messaging channels (shell, iopub, stdin, control) are multiplexed over this single WebSocket connection.

AsyncAPI Specification

Raw ↑
asyncapi: 2.6.0
info:
  title: Jupyter Kernel Messaging Protocol
  version: 5.4.0
  description: >-
    The Jupyter Kernel Messaging Protocol defines the WebSocket-based
    communication between Jupyter clients (notebooks, consoles) and
    computational kernels. Messages are exchanged over WebSocket
    channels for shell requests/replies, IOPub broadcasts, stdin
    input requests, and control channel operations. This protocol
    is documented in the Jupyter Client messaging specification.
  license:
    name: BSD-3-Clause
    url: https://opensource.org/licenses/BSD-3-Clause
  contact:
    name: Jupyter Project
    url: https://jupyter-client.readthedocs.io/en/stable/messaging.html
    email: [email protected]
servers:
  local:
    url: ws://localhost:8888/api/kernels/{kernel_id}/channels
    protocol: ws
    description: >-
      WebSocket endpoint for communicating with a running Jupyter
      kernel. All messaging channels (shell, iopub, stdin, control)
      are multiplexed over this single WebSocket connection.
channels:
  /api/kernels/{kernel_id}/channels:
    parameters:
      kernel_id:
        description: The unique identifier of the kernel.
        schema:
          type: string
          format: uuid
    publish:
      operationId: sendKernelMessage
      summary: Send a message to the kernel
      description: >-
        Send a message to the kernel on the shell, stdin, or control
        channel. The channel is indicated by the channel field in the
        message wrapper.
      message:
        oneOf:
          - $ref: '#/components/messages/ExecuteRequest'
          - $ref: '#/components/messages/InspectRequest'
          - $ref: '#/components/messages/CompleteRequest'
          - $ref: '#/components/messages/HistoryRequest'
          - $ref: '#/components/messages/IsCompleteRequest'
          - $ref: '#/components/messages/KernelInfoRequest'
          - $ref: '#/components/messages/ShutdownRequest'
          - $ref: '#/components/messages/InterruptRequest'
          - $ref: '#/components/messages/InputReply'
          - $ref: '#/components/messages/CommOpen'
          - $ref: '#/components/messages/CommMsg'
          - $ref: '#/components/messages/CommClose'
    subscribe:
      operationId: receiveKernelMessage
      summary: Receive a message from the kernel
      description: >-
        Receive messages from the kernel on the shell (reply), iopub
        (broadcast), or stdin channel.
      message:
        oneOf:
          - $ref: '#/components/messages/ExecuteReply'
          - $ref: '#/components/messages/InspectReply'
          - $ref: '#/components/messages/CompleteReply'
          - $ref: '#/components/messages/HistoryReply'
          - $ref: '#/components/messages/IsCompleteReply'
          - $ref: '#/components/messages/KernelInfoReply'
          - $ref: '#/components/messages/ShutdownReply'
          - $ref: '#/components/messages/ExecuteInput'
          - $ref: '#/components/messages/ExecuteResult'
          - $ref: '#/components/messages/StreamOutput'
          - $ref: '#/components/messages/DisplayData'
          - $ref: '#/components/messages/UpdateDisplayData'
          - $ref: '#/components/messages/ErrorOutput'
          - $ref: '#/components/messages/StatusBroadcast'
          - $ref: '#/components/messages/ClearOutput'
          - $ref: '#/components/messages/InputRequest'
          - $ref: '#/components/messages/CommOpenReply'
          - $ref: '#/components/messages/CommMsgReply'
          - $ref: '#/components/messages/CommCloseReply'
          - $ref: '#/components/messages/DebugReply'
          - $ref: '#/components/messages/DebugEvent'
components:
  messages:
    ExecuteRequest:
      name: execute_request
      title: Execute Request
      summary: Request to execute code in the kernel.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/KernelMessage'
      x-channel: shell
      headers:
        type: object
        properties:
          msg_type:
            type: string
            const: execute_request
    ExecuteReply:
      name: execute_reply
      title: Execute Reply
      summary: Reply to an execute request with status and execution count.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/KernelMessage'
      x-channel: shell
    InspectRequest:
      name: inspect_request
      title: Inspect Request
      summary: Request to inspect an object at cursor position.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/KernelMessage'
      x-channel: shell
    InspectReply:
      name: inspect_reply
      title: Inspect Reply
      summary: Reply with object inspection results.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/KernelMessage'
      x-channel: shell
    CompleteRequest:
      name: complete_request
      title: Complete Request
      summary: Request code completion suggestions.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/KernelMessage'
      x-channel: shell
    CompleteReply:
      name: complete_reply
      title: Complete Reply
      summary: Reply with code completion matches.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/KernelMessage'
      x-channel: shell
    HistoryRequest:
      name: history_request
      title: History Request
      summary: Request execution history from the kernel.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/KernelMessage'
      x-channel: shell
    HistoryReply:
      name: history_reply
      title: History Reply
      summary: Reply with execution history entries.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/KernelMessage'
      x-channel: shell
    IsCompleteRequest:
      name: is_complete_request
      title: Is Complete Request
      summary: Check if code is complete and ready to execute.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/KernelMessage'
      x-channel: shell
    IsCompleteReply:
      name: is_complete_reply
      title: Is Complete Reply
      summary: Reply indicating whether code is complete.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/KernelMessage'
      x-channel: shell
    KernelInfoRequest:
      name: kernel_info_request
      title: Kernel Info Request
      summary: Request information about the kernel.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/KernelMessage'
      x-channel: shell
    KernelInfoReply:
      name: kernel_info_reply
      title: Kernel Info Reply
      summary: Reply with kernel implementation and language information.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/KernelMessage'
      x-channel: shell
    ShutdownRequest:
      name: shutdown_request
      title: Shutdown Request
      summary: Request the kernel to shut down.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/KernelMessage'
      x-channel: control
    ShutdownReply:
      name: shutdown_reply
      title: Shutdown Reply
      summary: Reply confirming kernel shutdown.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/KernelMessage'
      x-channel: control
    InterruptRequest:
      name: interrupt_request
      title: Interrupt Request
      summary: Request to interrupt the kernel.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/KernelMessage'
      x-channel: control
    InputRequest:
      name: input_request
      title: Input Request
      summary: >-
        Kernel requests input from the frontend (e.g., for Python's
        input() function).
      contentType: application/json
      payload:
        $ref: '#/components/schemas/KernelMessage'
      x-channel: stdin
    InputReply:
      name: input_reply
      title: Input Reply
      summary: Frontend sends user input to the kernel.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/KernelMessage'
      x-channel: stdin
    ExecuteInput:
      name: execute_input
      title: Execute Input Broadcast
      summary: Broadcast of code being executed (for all connected clients).
      contentType: application/json
      payload:
        $ref: '#/components/schemas/KernelMessage'
      x-channel: iopub
    ExecuteResult:
      name: execute_result
      title: Execute Result
      summary: >-
        Result of an execution, equivalent to the Out[] prompt in
        IPython. Contains rich display data.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/KernelMessage'
      x-channel: iopub
    StreamOutput:
      name: stream
      title: Stream Output
      summary: >-
        Standard output or standard error stream data from
        code execution.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/KernelMessage'
      x-channel: iopub
    DisplayData:
      name: display_data
      title: Display Data
      summary: >-
        Rich display data output from code execution, supporting
        multiple MIME types.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/KernelMessage'
      x-channel: iopub
    UpdateDisplayData:
      name: update_display_data
      title: Update Display Data
      summary: Update a previous display_data output.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/KernelMessage'
      x-channel: iopub
    ErrorOutput:
      name: error
      title: Error Output
      summary: Error output from failed code execution.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/KernelMessage'
      x-channel: iopub
    StatusBroadcast:
      name: status
      title: Kernel Status
      summary: >-
        Kernel execution state broadcast. Published on every state
        change (busy, idle, starting).
      contentType: application/json
      payload:
        $ref: '#/components/schemas/KernelMessage'
      x-channel: iopub
    ClearOutput:
      name: clear_output
      title: Clear Output
      summary: Request to clear output area in the frontend.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/KernelMessage'
      x-channel: iopub
    CommOpen:
      name: comm_open
      title: Comm Open
      summary: Open a comm channel for custom messaging (e.g., widgets).
      contentType: application/json
      payload:
        $ref: '#/components/schemas/KernelMessage'
      x-channel: shell
    CommMsg:
      name: comm_msg
      title: Comm Message
      summary: Send a message on an open comm channel.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/KernelMessage'
      x-channel: shell
    CommClose:
      name: comm_close
      title: Comm Close
      summary: Close a comm channel.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/KernelMessage'
      x-channel: shell
    CommOpenReply:
      name: comm_open
      title: Comm Open (from kernel)
      summary: Kernel opens a comm channel to the frontend.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/KernelMessage'
      x-channel: iopub
    CommMsgReply:
      name: comm_msg
      title: Comm Message (from kernel)
      summary: Kernel sends a message on an open comm channel.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/KernelMessage'
      x-channel: iopub
    CommCloseReply:
      name: comm_close
      title: Comm Close (from kernel)
      summary: Kernel closes a comm channel.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/KernelMessage'
      x-channel: iopub
    DebugReply:
      name: debug_reply
      title: Debug Reply
      summary: Reply to a debug request.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/KernelMessage'
      x-channel: control
    DebugEvent:
      name: debug_event
      title: Debug Event
      summary: Debug event broadcast from the kernel.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/KernelMessage'
      x-channel: iopub
  schemas:
    KernelMessage:
      type: object
      description: >-
        A Jupyter kernel message envelope. All messages follow this
        structure with a header, parent_header, metadata, content,
        and optional buffers.
      properties:
        header:
          $ref: '#/components/schemas/MessageHeader'
        parent_header:
          description: >-
            Header of the message this is a reply to. Empty object
            for initial requests.
          oneOf:
            - $ref: '#/components/schemas/MessageHeader'
            - type: object
        metadata:
          type: object
          description: Message metadata.
          additionalProperties: true
        content:
          description: >-
            The message content. Structure depends on the msg_type.
          oneOf:
            - $ref: '#/components/schemas/ExecuteRequestContent'
            - $ref: '#/components/schemas/ExecuteReplyContent'
            - $ref: '#/components/schemas/InspectRequestContent'
            - $ref: '#/components/schemas/InspectReplyContent'
            - $ref: '#/components/schemas/CompleteRequestContent'
            - $ref: '#/components/schemas/CompleteReplyContent'
            - $ref: '#/components/schemas/HistoryRequestContent'
            - $ref: '#/components/schemas/HistoryReplyContent'
            - $ref: '#/components/schemas/IsCompleteRequestContent'
            - $ref: '#/components/schemas/IsCompleteReplyContent'
            - $ref: '#/components/schemas/KernelInfoReplyContent'
            - $ref: '#/components/schemas/ShutdownContent'
            - $ref: '#/components/schemas/InputRequestContent'
            - $ref: '#/components/schemas/InputReplyContent'
            - $ref: '#/components/schemas/StreamContent'
            - $ref: '#/components/schemas/DisplayDataContent'
            - $ref: '#/components/schemas/ExecuteResultContent'
            - $ref: '#/components/schemas/ErrorContent'
            - $ref: '#/components/schemas/StatusContent'
            - $ref: '#/components/schemas/ClearOutputContent'
            - $ref: '#/components/schemas/CommOpenContent'
            - $ref: '#/components/schemas/CommMsgContent'
            - $ref: '#/components/schemas/CommCloseContent'
        buffers:
          type: array
          description: Optional binary buffers (e.g., for comm messages).
          items:
            type: string
            format: byte
        channel:
          type: string
          description: >-
            The channel this message belongs to when multiplexed
            over a single WebSocket connection.
          enum:
            - shell
            - iopub
            - stdin
            - control
      required:
        - header
        - parent_header
        - metadata
        - content
    MessageHeader:
      type: object
      description: Header for a Jupyter kernel message.
      properties:
        msg_id:
          type: string
          description: Unique message identifier.
        msg_type:
          type: string
          description: >-
            The type of message (e.g., execute_request,
            execute_reply, stream, status).
        username:
          type: string
          description: Username of the message sender.
        session:
          type: string
          description: Session identifier.
        date:
          type: string
          format: date-time
          description: Timestamp when the message was created.
        version:
          type: string
          description: Message protocol version.
          default: '5.4'
      required:
        - msg_id
        - msg_type
        - username
        - session
        - date
        - version
    ExecuteRequestContent:
      type: object
      description: Content for an execute_request message.
      properties:
        code:
          type: string
          description: The code to execute.
        silent:
          type: boolean
          description: >-
            If true, signals the kernel to execute quietly and
            not broadcast on IOPub.
          default: false
        store_history:
          type: boolean
          description: Whether to store this execution in history.
          default: true
        user_expressions:
          type: object
          description: >-
            Mapping of names to expressions to evaluate after
            the code executes.
          additionalProperties:
            type: string
        allow_stdin:
          type: boolean
          description: Whether the frontend can provide stdin.
          default: true
        stop_on_error:
          type: boolean
          description: >-
            Whether to abort remaining execution queue on error.
          default: true
      required:
        - code
    ExecuteReplyContent:
      type: object
      description: Content for an execute_reply message.
      properties:
        status:
          type: string
          description: Status of the execution.
          enum:
            - ok
            - error
            - aborted
        execution_count:
          type: integer
          description: The global execution count.
        user_expressions:
          type: object
          description: Results of user_expressions evaluation.
          additionalProperties: true
        payload:
          type: array
          description: Deprecated payload for page, set_next_input, etc.
          items:
            type: object
            additionalProperties: true
        traceback:
          type: array
          description: Traceback frames if status is error.
          items:
            type: string
        ename:
          type: string
          description: Exception name if status is error.
        evalue:
          type: string
          description: Exception value if status is error.
      required:
        - status
        - execution_count
    InspectRequestContent:
      type: object
      description: Content for an inspect_request message.
      properties:
        code:
          type: string
          description: The code context for inspection.
        cursor_pos:
          type: integer
          description: Cursor position within the code.
        detail_level:
          type: integer
          description: >-
            Level of detail (0 for minimal, 1 for full).
          enum:
            - 0
            - 1
          default: 0
      required:
        - code
        - cursor_pos
    InspectReplyContent:
      type: object
      description: Content for an inspect_reply message.
      properties:
        status:
          type: string
          enum:
            - ok
            - error
        found:
          type: boolean
          description: Whether an object was found at the cursor position.
        data:
          type: object
          description: MIME-type keyed dictionary of inspection results.
          additionalProperties: true
        metadata:
          type: object
          additionalProperties: true
      required:
        - status
        - found
    CompleteRequestContent:
      type: object
      description: Content for a complete_request message.
      properties:
        code:
          type: string
          description: The code to complete.
        cursor_pos:
          type: integer
          description: Cursor position in the code.
      required:
        - code
        - cursor_pos
    CompleteReplyContent:
      type: object
      description: Content for a complete_reply message.
      properties:
        status:
          type: string
          enum:
            - ok
            - error
        matches:
          type: array
          description: List of completion matches.
          items:
            type: string
        cursor_start:
          type: integer
          description: Start of the range to replace with completion.
        cursor_end:
          type: integer
          description: End of the range to replace with completion.
        metadata:
          type: object
          additionalProperties: true
      required:
        - status
        - matches
        - cursor_start
        - cursor_end
    HistoryRequestContent:
      type: object
      description: Content for a history_request message.
      properties:
        output:
          type: boolean
          description: Whether to include output.
          default: false
        raw:
          type: boolean
          description: Whether to return raw input.
          default: true
        hist_access_type:
          type: string
          description: Type of history access.
          enum:
            - range
            - tail
            - search
        session:
          type: integer
          description: Session number for range access.
        start:
          type: integer
          description: Start index for range access.
        stop:
          type: integer
          description: Stop index for range access.
        n:
          type: integer
          description: Number of entries for tail access.
        pattern:
          type: string
          description: Pattern for search access.
        unique:
          type: boolean
          description: Whether to return only unique entries.
          default: false
      required:
        - output
        - raw
        - hist_access_type
    HistoryReplyContent:
      type: object
      description: Content for a history_reply message.
      properties:
        status:
          type: string
          enum:
            - ok
            - error
        history:
          type: array
          description: >-
            List of history entries as [session, line_number,
            input] or [session, line_number, [input, output]].
          items:
            type: array
      required:
        - status
        - history
    IsCompleteRequestContent:
      type: object
      description: Content for an is_complete_request message.
      properties:
        code:
          type: string
          description: The code to check for completeness.
      required:
        - code
    IsCompleteReplyContent:
      type: object
      description: Content for an is_complete_reply message.
      properties:
        status:
          type: string
          description: Completeness status of the code.
          enum:
            - complete
            - incomplete
            - invalid
            - unknown
        indent:
          type: string
          description: >-
            Indent string to use if status is incomplete.
      required:
        - status
    KernelInfoReplyContent:
      type: object
      description: Content for a kernel_info_reply message.
      properties:
        status:
          type: string
          enum:
            - ok
            - error
        protocol_version:
          type: string
          description: Messaging protocol version.
        implementation:
          type: string
          description: Kernel implementation name (e.g., ipython).
        implementation_version:
          type: string
          description: Kernel implementation version.
        language_info:
          type: object
          description: Information about the language the kernel executes.
          properties:
            name:
              type: string
              description: Language name (e.g., python).
            version:
              type: string
              description: Language version.
            mimetype:
              type: string
              description: MIME type for the language.
            file_extension:
              type: string
              description: File extension for the language.
            pygments_lexer:
              type: string
              description: Pygments lexer name.
            codemirror_mode:
              description: CodeMirror mode specification.
            nbconvert_exporter:
              type: string
              description: nbconvert exporter name.
          required:
            - name
            - version
            - mimetype
            - file_extension
        banner:
          type: string
          description: Banner text shown on kernel startup.
        debugger:
          type: boolean
          description: Whether the kernel supports debugging.
        help_links:
          type: array
          description: List of help links.
          items:
            type: object
            properties:
              text:
                type: string
              url:
                type: string
                format: uri
      required:
        - status
        - protocol_version
        - implementation
        - implementation_version
        - language_info
        - banner
    ShutdownContent:
      type: object
      description: Content for shutdown_request and shutdown_reply messages.
      properties:
        restart:
          type: boolean
          description: Whether to restart the kernel after shutdown.
      required:
        - restart
    InputRequestContent:
      type: object
      description: Content for an input_request message.
      properties:
        prompt:
          type: string
          description: Prompt text for the user.
        password:
          type: boolean
          description: Whether the input should be hidden (password).
          default: false
      required:
        - prompt
        - password
    InputReplyContent:
      type: object
      description: Content for an input_reply message.
      properties:
        value:
          type: string
          description: The user's input value.
      required:
        - value
    StreamContent:
      type: object
      description: Content for a stream message (stdout/stderr).
      properties:
        name:
          type: string
          description: Stream name.
          enum:
            - stdout
            - stderr
        text:
          type: string
          description: The stream text output.
      required:
        - name
        - text
    DisplayDataContent:
      type: object
      description: Content for display_data and update_display_data messages.
      properties:
        data:
          type: object
          description: >-
            MIME-type keyed dictionary of display data
            (e.g., text/plain, text/html, image/png).
          additionalProperties: true
        metadata:
          type: object
          description: MIME-type keyed metadata for the display data.
          additionalProperties: true
        transient:
          type: object
          description: >-
            Transient data not persisted (e.g., display_id).
          properties:
            display_id:
              type: string
              description: Display identifier for updating.
      required:
        - data
        - metadata
    ExecuteResultContent:
      type: object
      description: Content for an execute_result message.
      properties:
        execution_count:
          type: integer
          description: The execution count (Out[] number).
        data:
          type: object
          description: MIME-type keyed result data.
          additionalProperties: true
        metadata:
          type: object
          description: MIME-type keyed metadata.
          additionalProperties: true
      required:
        - execution_count
        - data
        - metadata
    ErrorContent:
      type: object
      description: Content for an error message.
      properties:
        ename:
          type: string
          description: Exception name.
        evalue:
          type: string
          description: Exception value.
        traceback:
          type: array
          description: Traceback frames as strings.
          items:
            type: string
      required:
        - ename
        - evalue
        - traceback
    StatusContent:
      type: object
      description: Content for a status message.
      properties:
        execution_state:
          type: string
          description: Current kernel execution state.
          enum:
            - busy
            - idle
            - starting
      required:
        - execution_state
    ClearOutputContent:
      type: object
      description: Content for a clear_output message.
      properties:
        wait:
          type: boolean
          description: >-
            Whether to wait for the next display before clearing.
      required:
        - wait
    CommOpenContent:
      type: object
      description: Content for a comm_open message.
      properties:
        comm_id:
          type: string
          description: Unique comm identifier.
        target_name:
          type: string
          description: >-
            Target name for the comm (e.g., jupyter.widget for
            ipywidgets).
        data:
          type: object
          description: Initial data for the comm.
          additionalProperties: true
      required:
        - comm_id
        - target_name
    CommMsgContent:
      type: object
      description: Content for a comm_msg message.
      properties:
        comm_id:
          type: string
          description: Comm identifier.
        data:
          type: object
          description: Message data.
          additionalProperties: true
      required:
        - comm_id
        - data
    CommCloseContent:
      type: object
      description: Content for a comm_close message.
      properties:
        comm_id:
          type: string
          description: Comm identifier to close.
        data:
          type: object
          description: Optional closing data.
          additionalProperties: true
      required:
        - comm_id