Swimlanes.io is a free webapp for making sequence diagrams. You simply edit the text on the left and the diagram is updated in real time. You can download your sequence diagrams as images or distribute with a link.
Title: NoSequel: Client-Backend Set up API _: **1. Create new user (MUST BE DONE IN PRIVATE SESSION FOR NOW UNTIL WE HAVE WEB INTERFACE)** Client -> Backend: **Send** note:`registerUser(username, password)` - Takes a username and password provided by client and sends to backend Client <- Backend: **Receive** note: Returns success or failure (bool) _: **2. Sign in** note: Signing in has to be done before anything else **besides creating user account** can be done. Client -> Backend: **Send** note: `signIn(username,password,userPubKey)` - Hash this with `serverPublic.pem` Client <- Backend: **Receive** note: - Receives the request and decrypts it using `serverPrivate.pem`. - Returns the `uid`, and list of `[indexs]`, and a 32 byte `aeskey`, encrypted using the `userPubKey` supplied. Client will have to decipher this encryption on their end. - The `uid` is the unique user identifier that has applications in index, collection, and even document naming. - `aeskey` will be used henceforth for all encrypting and decrypting of traffic. - `indexs` here refer to the entire index, including metadata and such. - `aeskey` keys will be periodically flushed. This feature will be implemented only for production builds. During development, we can assume `aeskey`s do not get flushed. Note that flushing is typically done to minimize the risks associated to the symmetric key getting stolen. _: **3. Create new index** Client -> Backend: **Send** note:`registerIndex(indexName, username, password)` - If this index hasn't been created, it will create a new index. If it has already been created, the associated `index` pair will already have been pulled from `signIn()`, so we don't create a new index in this instance. - Takes an `indexName`, `username`, and `password`. - `indexName`, and `password` are AES encrypted using `aeskey`. 'username' is sent as plain text. - `indexName`s have to be unique. The suggested usage is to name your index as your project name. - Currently no way to update this name however implementation should be trivial. - Default name for this key is `<uid>-<iid>` where <iid> will be returned from the backend. Client <- Backend: **Receive** note: Returns success or failure message _: **4. Create new collection** Client -> Backend: **Send** note:`Collection(indexName, colName, username, password)` - If this collection hasn't been created, it will create a new collection. If it has already been created, the associated `index: collection` pair will already have been pulled from `signIn()`, so we don't create a new collection in this instance. - Takes an `indexName` and `colName` where `colName` is one given by the user. Note that `colName` stands for collection name. - `colName`s have to be unique in this index, ie. in a single index, you may not have more than one identical `colName`. You may have identical `colNames` across different indices, however. - `indexID`= `<uid>-<iid>` where <uid> is the user ID, and <iid> is the id of the index. - Only `indexName`, `colName`, and `password` are AES encrypted using `aeskey`. `Username` is sent plainly. - There is currently no way to update the collection name. Meaning, once created, this is the name it is stuck with forever. Client <- Backend: **Receive** note: Returns success or failure message