Create timeline comment for discounts, products, etc

I’ve noticed that some graphql resources return timeline comments, if you query for connected events, for example this will return up to 10 messages:

query DiscountWithComments {
    discountNodes(first: 5) {
        edges {
            node {
                metafield(key: "key", namespace: "$app:namespace") {
                    id
                }
                events(first: 10) {
                    __typename
                    nodes {
                        __typename
                        message
                        id
                    }
                }
                discount {
                    __typename
                    ... on DiscountAutomaticApp {
                        title
                        discountId
                    }
                }
            }
        }
    }
}

However I didn’t find any way for apps to write comments, it seems that the admin dashboard uses this for creating comments:

mutation TimelineCommentCreate($input: TimelineCommentCreateInput!) {
  timelineCommentCreate(input: $input) {
    event {
      ...TimelineEvent
      __typename
    }
    userErrors {
      field
      message
      __typename
    }
    __typename
  }
}

fragment TimelineEvent on Event {
  id
  createdAt
  criticalAlert
  merchantVisible
  message
  eventLabel
  ... on BasicEvent {
    id
    attributeToApp
    attributeToUser
    additionalContent
    secondaryMessage
    appIcon {
      id
      altText
      imgSrc: url(transform: {maxWidth: 50, maxHeight: 50})
      __typename
    }
    __typename
  }
  ... on NotificationSentEvent {
    id
    createdAt
    deliveryStatus
    deliveryStatusDescription
    merchantVisible
    message
    method
    resendable
    subject
    appIcon {
      id
      altText
      imgSrc: url(transform: {maxWidth: 50, maxHeight: 50})
      __typename
    }
    __typename
  }
  ... on CommentEvent {
    id
    rawMessage
    edited
    author {
      id
      name
      initials
      avatar(fallback: NOT_FOUND) {
        id
        transformedSrc: url(transform: {maxWidth: 50, maxHeight: 50, scale: 3})
        __typename
      }
      __typename
    }
    attachments {
      id
      image {
        id
        transformedSrc: url(transform: {maxWidth: 50, maxHeight: 54, scale: 3})
        __typename
      }
      fileExtension
      size
      name
      url
      __typename
    }
    embed {
      ... on Product {
        id
        title
        featuredImage {
          id
          altText
          transformedSrc: url(transform: {maxWidth: 50, maxHeight: 50, scale: 3})
          __typename
        }
        tracksInventory
        totalInventory
        variants(first: 1) {
          edges {
            node {
              id
              price
              __typename
            }
            __typename
          }
          __typename
        }
        __typename
      }
      ... on ProductVariant {
        id
        title
        image {
          id
          altText
          transformedSrc: url(transform: {maxWidth: 50, maxHeight: 50, scale: 3})
          __typename
        }
        product {
          id
          title
          __typename
        }
        inventoryQuantity
        inventoryItem {
          id
          tracked
          __typename
        }
        __typename
      }
      ... on Customer {
        id
        displayName
        email
        ordersCount
        totalSpentV2: amountSpent {
          amount
          currencyCode
          __typename
        }
        phone
        note
        __typename
      }
      ... on Order {
        id
        name
        createdAt
        totalPriceSet {
          shopMoney {
            amount
            currencyCode
            __typename
          }
          __typename
        }
        customer {
          id
          displayName
          __typename
        }
        lineItems(first: 250) {
          edges {
            node {
              id
              title
              product {
                id
                __typename
              }
              variant {
                id
                __typename
              }
              __typename
            }
            __typename
          }
          __typename
        }
        displayFinancialStatus
        displayFulfillmentStatus
        __typename
      }
      ... on DraftOrder {
        id
        name
        createdAt
        totalPrice
        customer {
          id
          displayName
          __typename
        }
        lineItems(first: 250) {
          edges {
            node {
              id
              title
              product {
                id
                __typename
              }
              variant {
                id
                __typename
              }
              __typename
            }
            __typename
          }
          __typename
        }
        __typename
      }
      ... on PurchaseOrder {
        acceptedQuantity
        destinationTarget {
          id
          name
          __typename
        }
        id
        name
        placedAt
        referenceNumber
        rejectedQuantity
        shipNotices {
          id
          arrivesAt
          __typename
        }
        status
        supplierTarget {
          id
          name
          __typename
        }
        totalQuantity
        __typename
      }
      ... on InventoryMovement {
        id
        name
        transferStatus: status
        origin: source {
          id
          name
          __typename
        }
        transferDestination: destination {
          id
          name
          __typename
        }
        totalQuantity
        acceptedQuantity
        rejectedQuantity
        referenceNumber: externalReferenceId
        transferShipNotices: shipNotices(first: 1) {
          edges {
            node {
              id
              arrivesAt
              __typename
            }
            __typename
          }
          __typename
        }
        __typename
      }
      __typename
    }
    __typename
  }
  __typename
}

Is writing comments a planned feature, or is just because DiscountNodeConnection returns app and store owned discouns that this is present?