Skip to content

Instantly share code, notes, and snippets.

@foxel
Created March 3, 2018 12:41
Show Gist options
  • Save foxel/baea1b1dd923f32e837c472f778b7b30 to your computer and use it in GitHub Desktop.
Save foxel/baea1b1dd923f32e837c472f778b7b30 to your computer and use it in GitHub Desktop.
{
"definitions": {
"CreateDocumentCommand": {
"type": "object",
"required": ["eventType", "documentName"],
"properties": {
"eventType": {
"type": "string",
"enum": ["CreateDocument"]
},
"documentName": {
"type": "string"
}
}
},
"OpenDocumentCommand": {
"type": "object",
"required": ["eventType", "documentId"],
"properties": {
"eventType": {
"type": "string",
"enum": ["OpenDocument"]
},
"documentId": {
"$ref": "#/definitions/DocumentId"
}
}
},
"DocumentOpenedResponse": {
"type": "object",
"required": ["eventType", "document", "chatHistory"],
"properties": {
"eventType": {
"type": "string",
"enum": ["DocumentOpened"]
},
"document": {
"$ref": "#/definitions/Document"
},
"chatHistory": {
"type": "array",
"items": {
"$ref": "#/definitions/ChatMessage"
}
}
}
},
"DocumentOpenError": {
"type": "object",
"required": ["eventType", "code"],
"properties": {
"eventType": {
"type": "string",
"enum": ["OpenError"]
},
"code": {
"type": "string"
},
"reason": {
"type": "string"
}
}
},
"ChangeUserNameCommand": {
"type": "object",
"required": ["eventType", "name"],
"properties": {
"eventType": {
"type": "string",
"enum": ["SetUserName"]
},
"name": {
"type": "string"
}
}
},
"PostChatMessageCommand": {
"type": "object",
"required": ["eventType", "message"],
"properties": {
"eventType": {
"type": "string",
"enum": ["PostChatMessage"]
},
"message": {
"type": "string"
}
}
},
"NewChatMessageEvent": {
"type": "object",
"required": ["eventType", "message"],
"properties": {
"eventType": {
"type": "string",
"enum": ["NewChatMessage"]
},
"message": {
"$ref": "#/definitions/ChatMessage"
}
}
},
"ChatHistoryRefreshEvent": {
"type": "object",
"required": ["eventType", "chatHistory"],
"properties": {
"eventType": {
"type": "string",
"enum": ["ChatHistoryRefresh"]
},
"chatHistory": {
"type": "array",
"items": {
"$ref": "#/definitions/ChatMessage"
}
}
}
},
"UpdateDocumentCommand": {
"type": "object",
"required": ["eventType", "name", "text", "versionId", "referenceId"],
"properties": {
"eventType": {
"type": "string",
"enum": ["UpdateDocument"]
},
"name": {
"type": "string"
},
"text": {
"type": "string"
},
"versionId": {
"description": "old version ID",
"type": "integer"
},
"referenceId": {
"description": "to be used in response",
"type": "string"
}
}
},
"DocumentUpdatedEvent": {
"type": "object",
"required": ["eventType", "document"],
"properties": {
"eventType": {
"type": "string",
"enum": ["DocumentUpdated"]
},
"document": {
"$ref": "#/definitions/Document"
}
}
},
"DocumentUpdateError": {
"type": "object",
"required": ["eventType", "code", "referenceId"],
"properties": {
"eventType": {
"type": "string",
"enum": ["UpdateError"]
},
"code": {
"type": "string"
},
"reason": {
"type": "string"
},
"referenceId": {
"description": "reference to update request",
"type": "string"
}
}
},
"ChatMessage": {
"type": "object",
"required": [],
"properties": {
"id": {
"type": "string"
},
"author": {
"type": "string"
},
"text": {
"type": "string"
},
"timestamp": {
"type": "string",
"format": "date-time"
}
}
},
"Document": {
"type": "object",
"required": ["id", "name", "text", "versionId"],
"properties": {
"id": {
"$ref": "#/definitions/DocumentId"
},
"name": {
"type": "string"
},
"text": {
"type": "string"
},
"versionId": {
"type": "integer"
}
}
},
"DocumentId": {
"type": "string",
"pattern": "/^\\w+$/"
}
},
"oneOf": [
{"$ref": "#/definitions/CreateDocumentCommand"},
{"$ref": "#/definitions/OpenDocumentCommand"},
{"$ref": "#/definitions/DocumentOpenedResponse"},
{"$ref": "#/definitions/DocumentOpenError"},
{"$ref": "#/definitions/ChangeUserNameCommand"},
{"$ref": "#/definitions/PostChatMessageCommand"},
{"$ref": "#/definitions/NewChatMessageEvent"},
{"$ref": "#/definitions/ChatHistoryRefreshEvent"},
{"$ref": "#/definitions/UpdateDocumentCommand"},
{"$ref": "#/definitions/DocumentUpdatedEvent"},
{"$ref": "#/definitions/DocumentUpdateError"}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment