# Cloud Sketchbook

Arduino IDE provides a Cloud Sketchbook feature that can be used to upload sketches to Arduino Cloud.
![](assets/remote.png)



In order to use this feature, a user must be registered on [Arduino Cloud](https://store.arduino.cc/digital/create) and logged in.
This feature is completely optional and can be disabled in the IDE via the _"File > Advanced > Hide Cloud Sketchbook"_ menu item.

## Developer guide
A developer could use the content of this repo to create a customized version of this feature and implement a different remote storage as follows:

### 1. Changing remote connection parameters in the Preferences panel (be careful while editing the Preferences panel!)
Here a screenshot of the Preferences panel
![](assets/preferences.png)
- The settings under _Arduino > Auth_ should be edited to match the OAuth2 configuration of your custom cloud sketchbook storage
- The setting under _Arduino > Sketch Sync Endpoint_ should be edited to point to your custom cloud sketchbook storage service
### 2. Implementing the Arduino Cloud Store APIs for your custom cloud sketchbook storage
Following the API Reference below:

| API Call  | OpenAPI documentation |
| ------------- | ------------- |
| DELETE create/v2/files/d/$HOME/sketches_v2{posixPath} | https://api2.arduino.cc/create/docs#!/files95v2/files_v2_deletedir |
| DELETE create/v2/files/f/$HOME/sketches_v2{posixPath} | https://api2.arduino.cc/create/docs#!/files95v2/files_v2_deletefile |
| GET create/v2/files/d/$HOME/sketches_v2{posixPath} | https://api2.arduino.cc/create/docs#!/files95v2/files_v2_list |
| GET create/v2/files/f/$HOME/sketches_v2{posixPath} | https://api2.arduino.cc/create/docs#!/files95v2/files_v2_read |
| GET create/v2/sketches | https://api2.arduino.cc/create/docs#!/sketches95v2/sketches_v2_search |
| GET create/v2/sketches/byID/{id} | https://api2.arduino.cc/create/docs#!/sketches95v2/sketches_v2_byID |
| GET create/v2/sketches/byPath{path} | https://api2.arduino.cc/create/docs#!/sketches95v2/sketches_v2_byPath |
| POST create/v2/files/d/$HOME/sketches_v2{posixPath} | https://api2.arduino.cc/create/docs#!/files95v2/files_v2_mkdir |
| POST create/v2/files/f/$HOME/sketches_v2{posixPath} | https://api2.arduino.cc/create/docs#!/files95v2/files_v2_write |
| POST create/v2/sketches/{sketch.id} | https://api2.arduino.cc/create/docs#!/sketches95v2/sketches_v2_edit |
| POST create/v3/files/cp | https://api2.arduino.cc/create/docs#!/files95v3/files_v3_copy |
| POST create/v3/files/mv | https://api2.arduino.cc/create/docs#!/files95v3/files_v3_move |
| PUT create/v2/sketches | https://api2.arduino.cc/create/docs#!/sketches95v2/sketches_v2_create |

## Build the Arduino IDE with this extension

To build the Arduino IDE with this extension, run the following in a terminal. On Windows, use _Git Bash_.
```sh
./bootstrap.sh
```