Last updated
Last updated
Webside is based on a Smalltalk system implementing the following web API.
It's worth mentioning that this API is not "pure" REST at the moment of writing this documentation. However, extending it to be a REST-full API could bring some benefits to both Webside and other potential consumers interested in inspecting or controlling a Smalltalk system through HTTP. Of course, such a change would require upgrading Webside and this documentation accordingly.
The implementation of API calls, including helper services, is centralized in a class called .
Resources are identified by a unique ID. The production of these IDs rely on the backend implementation and may vary from dialect to dialect. The only requirement is that they should be unique. For the sake of simplicity, they will be 1
, 2
, etc. along this documentation.
These are the different sections of the API.
Note: URL path does not include the base URI. The base URI targeting a particular Smalltalk system will be prompted at the moment of opening Webside.
These are general endpoints that apply to the system as a whole.
These are the endpoints used to retrieve system code: packages, classes and methods.
Endpoints to apply changes and retrieve changes made to the system.
For the sake of simplicity, the API encourages the use of a single endpoint /changes
for applying any change to the system.
However, as this may imply to count on some implementation of refactoring changes on the backend (and might not be the case), a basic set of CRUD operations on main meta-model objects should be provided. The data required for these operations should be the same as the one provided for the corresponding changes.
Endpoints to convert changesets (chunks file) to/from changes.
Endpoints to evaluate expressions and manage active evaluations.
Endpoints to retrieve the objects in the system, either globally accessible or as the result of evaluating an expressions.
Endpoints to manage workspaces.
Endpoints to manage debuggers and interact with them.
Endpoints to run tests and retrieve their results.
Endpoints to manage profilers and access their results.
Retrieve IDE extensions defined by the backend.
GET
Retrieve methods satisfying the condition specified in the query (or all the methods in the system if no condition is provided)
selector
, category
, accessing
, using
, assigning
, sending
, referencingClass
, selectorMatching
, ast
, annotations
, bytecodes
, dissasembly
, count
-
GET
Retrieve all subclasses of a given root class (if no root is provided, the uppermost class in the system is used). It is also possible get a tree-like structure as well as to limit the depth in the classes hierarchy
root
, names
, tree
, depth
, category
-
GET
Retrieve a given class
-
-
GET
Retrieve superclasses a given class
-
-
GET
Retrieve subclasses a given class
-
-
GET
Retrieve instance and class variables of a given class
-
-
GET
Retrieve instance variables of a given class
-
-
GET
Retrieve class variables of a given class
-
-
GET
Retrieve categories of a given class
-
-
GET
Retrieve categories used throughout the hierarchy of a given class
-
-
GET
Retrieve selectors of a given class
-
-
GET
Retrieve methods of a given class
-
-
GET
Retrieve the method with the given selector in the given class
-
-
GET
Retrieve all categories in the system
-
-
GET
Retrieve popular categories used throughout the system
-
-
GET
Retrieve all packages
names
-
GET
Retrieve a given package
-
-
GET
Retrieve actual classes of a given package
extended
, tree
, names
, category
-
GET
Retrieve actual methods of a given package
-
-
GET
Perform a search on the system
text
, ignoreCase
, position
, type
-
GET
Retrieve completion entries for a given code, position and context
-
-
GET
Provide a class template
package
-
GET
Provide a method template
-
-
POST
Find a selector in a piece of source code
-
-
GET
Retrieve changes made to the system
author
-
POST
Apply a change to the system
-
change
GET
Retrieve historical changes on a given method
-
-
POST
Add a new package
-
package
DELETE
Remove a given package.
-
-
POST
Define a new class or change the definition of an existing one.
-
class
DELETE
Remove a given class.
-
-
POST
Compile a method in a given class.
-
method
DELETE
Remove a given method.
-
-
POST
Convert a set of changes (JSON) into a chunk formatted-file
-
[change]
POST
Convert a chunk-formatted file into a set of changes (JSON)
-
string
POST
Evaluate an expression
-
evaluation
GET
Retrieve active evaluations
-
-
GET
Retrieve the evaluation with a given ID
-
-
DELETE
Cancel the evaluation with a given ID
-
-
POST
Pause the evaluation with a given ID
-
-
POST
Resume the evaluation with a given ID
-
-
GET
Retrieve pinned objects
-
-
GET
Retrieve the pinned object with a given ID
-
-
DELETE
Unpin the object with a given ID
-
-
GET
Retrieve the object reached thru the given URI
-
-
POST
Pin the object reached thru the given URI
-
object URI
DELETE
Unpin all pinned objects
-
-
GET
Retrieve active workspaces
-
-
POST
Create a new workspace
-
-
GET
Retrieve the workspace with a given ID
-
-
PUT
Update the workspace with a given ID
-
-
DELETE
Delete the workspece with a given ID
-
-
GET
Retrieve bindings of the workspece with a given ID
-
-
GET
Retrieve open debuggers
-
-
POST
Create a debugger upon an given process (evaluation)
-
evaluation
GET
Retrieve frames of the debugger with a given ID
-
-
GET
Retrieve the i-th frame withing the debugger with a given ID
-
-
GET
Retrieve the bindings of the i-th frame withing the debugger with a given ID
-
-
POST
Step over the current sentence in the debugger with a given ID
-
-
POST
Step through the current sentence in the debugger with a given ID
-
-
POST
Step into the current sentence in the debugger with a given ID
-
-
POST
Restart the debugger with a given ID
-
-
POST
Resume the process of the debugger with a given ID
-
-
POST
Terminate process being debugged and closesthe debugger with a given ID
-
-
DELETE
Closes the debugger with a given ID (terminating the process being debugged)
-
-
POST
Create and run of a test suite
-
suite
GET
Retrieve the status of a given test suite run
-
-
GET
Retrieve the restuls of a given test suite run
-
-
POST
Re-run a given test suite
-
-
POST
Debug a test withing a test suite run
-
-
POST
Stop an active test suite run
-
-
DELETE
Delete a test suite run
-
-
POST
Create a new profiler on a given expression
-
expression
GET
Retrieve active profilers
-
-
GET
Retrieve the profiler with a given ID
-
-
GET
Retrieve a tree-like results of a given profiler
-
-
GET
Retrieve ranked results of a given profiler
-
-
DELETE
Delete a given profiler
-
-
GET
Retrieve list of extensions
-
-
GET
Retrieve the Smalltalk dialect
-
GET
Retrieve system colors
-
GET
Retrieve system logo
-
GET
Retrieve system stats
-
GET
Retrieve custom themes
-
GET
Retrieve system icons
-
POST
Save the image
-