| @@ -8,21 +8,39 @@ This server does a few things: | |||||
| - Displays a 3D representation of the state | - Displays a 3D representation of the state | ||||
| - Randomly updates the state every five seconds | - Randomly updates the state every five seconds | ||||
| ## Endpoints | |||||
| ## Using the interface | |||||
| Sessions are identified by a UUID such as `oranges-arkansas-mexico-fish`. You can share this URL with other people to share your screen and edit collaboratively. | |||||
| - `/`: Displays the state using Three.js | |||||
| - `graph/`: | |||||
| - Click on the grid to make a new node | |||||
| - Ctrl-click a node to act a Hadamard gate | |||||
| - Select a node, then shift-click another node to act a CZ gate | |||||
| - Press space to rotate the grid | |||||
| ## Python package | |||||
| The underlying graph state simulator is based on Anders' and Briegel's method. Full docs for the Python package are [here](https://peteshadbolt.co.uk/static/abp/). | |||||
| ## API | |||||
| We expose an API so that you can programmatically read and write states to/from the server and simulate mouse clicks. | |||||
| ### Endpoints | |||||
| - `/<uuid>`: Displays the state using Three.js | |||||
| - `/<uuid>/graph`: | |||||
| - `GET` returns JSON representing the state | - `GET` returns JSON representing the state | ||||
| - `POST` accepts JSON in the same format and overwrites the state in memory | - `POST` accepts JSON in the same format and overwrites the state in memory | ||||
| - `/<uuid>/edit`: | |||||
| - `POST` accepts edit commands such as `cz`, `add_node` etc. | |||||
| - `doc/`: Shows this page | - `doc/`: Shows this page | ||||
| ## Data format | |||||
| ### Data format | |||||
| If you do an HTTPS GET against `/graph`, you will receive some JSON. | |||||
| If you do an HTTPS GET against `/<uuid>/graph`, you will receive some JSON. | |||||
| :::bash | :::bash | ||||
| $ curl https://abv.peteshadbolt.co.uk/graph | |||||
| $ curl https://abv.peteshadbolt.co.uk/<uuid>/graph | |||||
| outputs | outputs | ||||
| @@ -56,7 +74,3 @@ Here's an example of a graph `(A-B C)`: | |||||
| 1: {'position': {'x': 1, 'y': 0, 'z': 0}, 'vop': 0}, | 1: {'position': {'x': 1, 'y': 0, 'z': 0}, 'vop': 0}, | ||||
| 2: {'position': {'x': 2, 'y': 0, 'z': 0}, 'vop': 10}}} | 2: {'position': {'x': 2, 'y': 0, 'z': 0}, 'vop': 10}}} | ||||
| ## ABP | |||||
| The underlying graph library is based on Anders' and Briegel's method. Full docs for the Python library are [here](https://peteshadbolt.co.uk/static/abp/). | |||||