Private Conversations

Introduction

In Index Network, you can engage in conversations with one or multiple Indexes. This interaction is facilitated by our storage system, which processes and stores information to allow natural, meaningful dialogue. Whether it's querying for specific information or engaging in an ongoing conversation, the Index Network enables seamless communication with its indexed data.

To start a conversation and interact with the data, follow these steps:

// Create a conversation
const conversationParams = {
  sources: [index.id],
  summary: "Mock summary",
  members: [indexClient.wallet.address],
};
const conversation = await indexClient.createConversation(conversationParams);

// Add a message to the conversation
const messageParams = {
  role: "user",
  content: "How do you do this?",
};
const message = await indexClient.createMessage(conversation.id, messageParams);

// Retrieve messages from the conversation
const { messages } = await indexClient.getConversation(conversation.id);
console.log(messages);

The response should look something like this:

{
  "id": "message-id",
  "content": "How do you do this?",
  "role": "user",
  "createdAt": "timestamp"
}

Listening to Conversation Updates

The Index Client SDK allows you to listen for updates to a conversation in real-time. This is useful for applications that need to react to new messages or changes in a conversation.

Here is an example of how you can use the listenToConversationUpdates method to handle real-time updates in a conversation:

const conversationId = "your-conversation-id";

const handleMessage = (data: any) => {
  console.log("New message received:", data);
  // Handle the new message data
};

const handleError = (error: any) => {
  console.error("Error receiving updates:", error);
  // Handle the error
};

const stopListening = indexClient.listenToConversationUpdates(
  conversationId,
  handleMessage,
  handleError,
);

Interacting Through Conversations

Get indexes by DID

get
Path parameters
didstringRequired

Decentralized Identifier

Responses
200
Successful operation
get
GET /api/dids/{did}/indexes HTTP/1.1
Host: dev.index.network
Accept: */*
200

Successful operation

No content

Create Conversation

post
Authorizations
Body
objectOptionalExample: {"sources":["did:pkh:eip155:1:0x1b9Aceb609a62bae0c0a9682A9268138Faff4F5f","kjzl6kcym7w8yaa2ylkzbqzcgh8str1hnofps4bfganauuk2v90uom48nddcog3"],"members":["did:key:z6Mkvrp9jeDqftYPzknEPnSb6majnfak8LqQfXZhYtF8vSFX","did:key:z6Mki5MGUYbXFNYiVisA9rhjqjJvd1ikBAf2u4qhnKPM5k3a"]}
Responses
200
Successful response
application/json
post
POST /api/api/conversations HTTP/1.1
Host: dev.index.network
Authorization: Bearer DID_SESSION_SERIALIZED
Content-Type: application/json
Accept: */*
Content-Length: 271

{
  "sources": [
    "did:pkh:eip155:1:0x1b9Aceb609a62bae0c0a9682A9268138Faff4F5f",
    "kjzl6kcym7w8yaa2ylkzbqzcgh8str1hnofps4bfganauuk2v90uom48nddcog3"
  ],
  "members": [
    "did:key:z6Mkvrp9jeDqftYPzknEPnSb6majnfak8LqQfXZhYtF8vSFX",
    "did:key:z6Mki5MGUYbXFNYiVisA9rhjqjJvd1ikBAf2u4qhnKPM5k3a"
  ]
}
200

Successful response

No content

Get Conversation

get
Authorizations
Path parameters
conversationIdstringRequired

Conversation ID

Responses
200
Successful response
application/json
get
GET /api/api/conversations/{conversationId} HTTP/1.1
Host: dev.index.network
Authorization: Bearer DID_SESSION_SERIALIZED
Accept: */*
200

Successful response

No content

Update Conversation

put
Authorizations
Path parameters
conversationIdstringRequired

Conversation ID

Body
objectOptionalExample: {"sources":["did:pkh:eip155:1:0x1b9Aceb609a62bae0c0a9682A9268138Faff4F5f"],"summary":"summary of the conversation, just for listing purposes."}
Responses
200
Successful response
application/json
put
PUT /api/api/conversations/{conversationId} HTTP/1.1
Host: dev.index.network
Authorization: Bearer DID_SESSION_SERIALIZED
Content-Type: application/json
Accept: */*
Content-Length: 143

{
  "sources": [
    "did:pkh:eip155:1:0x1b9Aceb609a62bae0c0a9682A9268138Faff4F5f"
  ],
  "summary": "summary of the conversation, just for listing purposes."
}
200

Successful response

No content

Delete Conversation

delete
Authorizations
Path parameters
conversationIdstringRequired

Conversation ID

Responses
200
Successful response
application/json
delete
DELETE /api/api/conversations/{conversationId} HTTP/1.1
Host: dev.index.network
Authorization: Bearer DID_SESSION_SERIALIZED
Accept: */*
200

Successful response

No content

Listen Conversation Updates

get
Authorizations
Path parameters
conversationIdstringRequired

Conversation ID

Query parameters
sessionstringOptionalExample: <YOUR_DID_SESSION_STR_HERE>
Responses
200
Successful response
application/json
get
GET /api/api/conversations/{conversationId}/updates HTTP/1.1
Host: dev.index.network
Authorization: Bearer DID_SESSION_SERIALIZED
Accept: */*
200

Successful response

No content

Create Message

post
Authorizations
Path parameters
conversationIdstringRequired

Conversation ID

Body
objectOptionalExample: {"role":"user","content":"give me a very long hello world python code"}
Responses
200
Successful response
application/json
post
POST /api/api/conversations/{conversationId}/messages HTTP/1.1
Host: dev.index.network
Authorization: Bearer DID_SESSION_SERIALIZED
Content-Type: application/json
Accept: */*
Content-Length: 71

{
  "role": "user",
  "content": "give me a very long hello world python code"
}
200

Successful response

No content

Update Message with Delete After

put
Authorizations
Path parameters
conversationIdstringRequired

Conversation ID

messageIdstringRequired

Message ID

Query parameters
deleteAfterbooleanOptionalExample: true
Body
objectOptionalExample: {"role":"user","content":"What is Index Network and how is it related to Ceramic?"}
Responses
200
Successful response
application/json
put
PUT /api/api/conversations/{conversationId}/messages/{messageId} HTTP/1.1
Host: dev.index.network
Authorization: Bearer DID_SESSION_SERIALIZED
Content-Type: application/json
Accept: */*
Content-Length: 83

{
  "role": "user",
  "content": "What is Index Network and how is it related to Ceramic?"
}
200

Successful response

No content

Delete Message with Delete After

delete
Authorizations
Path parameters
conversationIdstringRequired

Conversation ID

messageIdstringRequired

Message ID

Query parameters
deleteAfterbooleanOptionalExample: true
Responses
200
Successful response
application/json
delete
DELETE /api/api/conversations/{conversationId}/messages/{messageId} HTTP/1.1
Host: dev.index.network
Authorization: Bearer DID_SESSION_SERIALIZED
Accept: */*
200

Successful response

No content

Last updated