# Basic Messages

A `BasicMessage` is an arbitrary textual message sent over DIDComm connection. It allows for basic communications between the cloud agent and an established [connection](/guides/decentralized-identity/cloud-agent/cloud-agent-admin-api/connections.md).

## Send a basic message to a connection

The cloud agent creates a new `BasicMessage` and sends the message to the specified connection.

```graphql
mutation MyMutation {
  sendBasicMessage(
    connectionId: "001fe530-3562-41d6-a631-3df9c7ae1f38"
    content: "Hi Bob. I've sent you your updated credential offer. If you don't accept it within the next week, I'll have to withdraw the offer. Please let me know if you changed your mind. Thanks"
  ) {
    id
    content
    timestamp
    direction
  }
}
```

## Broadcast a basic message to multiple connections

The cloud agent sends a message to an array of connections. This operation creates multiple `BasicMessage`(s) with identical `content`, one for each specified connection. The operation returns an array of `connectionIds` to whom the message was successfully sent.

```graphql
mutation MyMutation {
  broadcastBasicMessage(
    connectionIds: ["001fe530-3562-41d6-a631-3df9c7ae1f38", "01560d79-712a-42d5-91f6-8ded03c7e549"]
    content: "An upgraded version of your credential is now available. See website for details."
  ) {
    connectionIds
  }
}
```

## View basic messages for a connection

View basic messages, with pagination and a required `connectionId` filter. Returns a `nextToken` which can be passed into the same query in order to fetch subsequent pages.

```graphql
query MyQuery {
  basicMessages(
    page: {
      nextToken: null
    }
    filter: {
      connectionId: "001fe530-3562-41d6-a631-3df9c7ae1f38"
    }
  ) {
    items {
      id
      content
      timestamp
      direction
    }
    nextToken
  }
}
```

Alternatively, when querying a `Connection`, it is possible to fetch basic messages associated with that connection. The following query fetches a page of connections who have basic messages associated with them, and returns the latest basic message for each of those connections.

```graphql
query MyQuery {
  connections(
    page: {
      nextToken: null
    }
    filter: {
      hasBasicMessages: true
    }
  ) {
    items {
      id
      alias
      basicMessages(page: {
        limit: 1
        nextToken: null
      }) {
        items {
          id
          content
          timestamp
          direction
        }
        nextToken
      }
    }
    nextToken
  }
}
```

## Delete basic messages

Delete multiple basic messages. The operation returns an array of `messageIds` which were successfully deleted.

```graphql
mutation MyMutation {
  deleteBasicMessages(
    messageIds: ["ebf7dbd4-38e0-4109-ad44-aa0c06a4a8c7", "f133e282-8817-4959-ac16-39cba8954b4e"]
  ) {
    messageIds
  }
}
```

Alternatively, delete all basic messages for a specified connection.

```graphql
mutation MyMutation {
  deleteBasicMessagesForConnection(
    connectionId: "001fe530-3562-41d6-a631-3df9c7ae1f38"
  )
}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.sudoplatform.com/guides/decentralized-identity/cloud-agent/cloud-agent-admin-api/basic-messages.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
