Difference between revisions of "User:Dzonatas Sol/SNOW-375 Resources"

From Second Life Wiki
Jump to navigation Jump to search
Line 1: Line 1:
Documentation as of SNOW-375 patch 0.9.11
== Overview ==


Please see [[../SNOW-375_WGET|WGET]] examples to understand how to access these resources on a patched viewer.
SNOW-375 is an API to the Snowglobe code base to query reflexive information that affects Avatar, Agent, Assets, Inventory, Gestures, and other states of the client as it interacts with the virtual world. In order to enable the widest range of devices and scripts to communicate with the client, the API is language-agnostic. The flexibility of client-side scripting is a significant feature of SNOW-375.


{| border="1" cellpadding="5" cellspacing="0"
SNOW-375 allows for a multi-headed client architecture instead of a single monolithic design. There are many possibilities to this besides client-side scripting, like augmented reality devices, gesture recognition devices, social networking, advanced heads-up displays, integrated desktop programs (desklets), joysticks, machinima tools, and many more. Multi-headed clients are also significant, yet its transport layer may be platform dependent.
|-
| Resource || Method || Description
|-
| rowspan="4" | /ControlGroup
| style="text-align:right;" | GET
| Response is a list of control groups
|-
| style="text-align:right;" | POST
|-
| style="text-align:right;" | PUT
|-
| style="text-align:right;" | DELETE


|-
Another significant feature of SNOW-375 is that it has enabled right-to-left (bidi glyphs) text, which means that the Second most spoken language in the world is enabled by client-side scripted communicator since Snowglobe has only supported left-to-right user interfaces. We used the scripts control toolkits that were already available to display advanced input and output methods for automatic detection of text direction and glyph shaping. This immediately opens up Second Life much larger audience than thought to already have.
| rowspan="4" | /ControlGroup/<group>
| style="text-align:right;" | GET
| Response is a list of valid variables in a controlgroup with default settings
|-
| style="text-align:right;" | POST
|-
| style="text-align:right;" | PUT
|-
| style="text-align:right;" | DELETE


|-
== Technical ==
| rowspan="4" | /ControlGroup/<group>/<identifier>
| style="text-align:right;" | GET
| Response is a detailed and update of current settings for the specific variable identified
|-
| style="text-align:right;" | POST
|-
| style="text-align:right;" | PUT
|-
| style="text-align:right;" | DELETE


|-
SNOW-375 is based on the ReST design paradigm, so the transport layer can be fully abstracted from its default style, HTTP. Each query uses a named resource, a ReST method, and a LLSD formatted payload. Being reflexive, the flow of the query can be unidirectional to an another process, bidirectional between two processes, or internalized to an implementation. The named resources relate to a URL (to normally build a URI) used to process a query method with a payload.
| rowspan="4" | /Agent/ID
| style="text-align:right;" | GET
| Response is UUID of the logged in Agent/Avatar
|-
| style="text-align:right;" | POST
|-
| style="text-align:right;" | PUT
|-
| style="text-align:right;" | DELETE


|-
Resources may overlap functionality with VWRAP, yet VWRAP has not been designed for the dynamics that SNOW-375 demands. VWRAP has assumed a single headed client, yet SNOW-375 has been designed from the start to support multi-headed clients that may not be on the same host. In this sense, the protocol assumes a default channel through the Snowglobe client for maximum ability, yet concurrent application may use their own channel. HTTP Textures is an example where positional data is gathered from the Snowglobe client, yet the tiles are downloaded directly to the concurrent application instead of through the Snowglobe client. This multi-headed design allows the Snowglobe client to preform and not waste time with bandwidth it doesn't need to process.
| rowspan="4" | /Agent/Chat
| style="text-align:right;" | GET
|-
| style="text-align:right;" | POST
| Deliver a message formatted in LLSD to Local Chat
|-
| style="text-align:right;" | PUT
|-
| style="text-align:right;" | DELETE
|-
| rowspan="4" | /Agent/Groups
| style="text-align:right;" | GET
| Response is a list with details of groups joined by the connected agent
|-
| style="text-align:right;" | POST
|-
| style="text-align:right;" | PUT
|-
| style="text-align:right;" | DELETE


== Resources ==


|-
Resources are grouped by major representations. These are still being developed, yet a basic set exists that enables communication and gesture activation.
| rowspan="4" | /Agent/Position
| style="text-align:right;" | GET
| Response is the Region UUID, Position within the region, and global position of the Agent/Avatar
|-
| style="text-align:right;" | POST
|-
| style="text-align:right;" | PUT
|-
| style="text-align:right;" | DELETE


|-
Resources may have more than one method. Each one is described. Parenthesized methods are just a more complex method of the original simpler method being described. Complex queries are usually used to group multiple queries together, yet this action is more of an implementation detail and helpful to know it exists.
| rowspan="4" | /Agent/Typing
| style="text-align:right;" | GET
|-
| style="text-align:right;" | POST
| Start the typing animation
|-
| style="text-align:right;" | PUT
|-
| style="text-align:right;" | DELETE
| Stop the typing animation


|-
* [[User:Dzonatas_Sol/SNOW-375_Resources/ControlGroup|ControlGroup]]
| rowspan="4" | /Asset/Inventory
* [[User:Dzonatas_Sol/SNOW-375_Resources/Agent|Agent]]
| style="text-align:right;" | GET
* [[User:Dzonatas_Sol/SNOW-375_Resources/Asset|Asset]]
|-
* [[User:Dzonatas_Sol/SNOW-375_Resources/AvatarTracker|AvatarTracker]]
| style="text-align:right;" | POST
* [[User:Dzonatas_Sol/SNOW-375_Resources/ChatterBox|ChatterBox]]
| Request an asset transfer/download of an inventory item
* [[User:Dzonatas_Sol/SNOW-375_Resources/GestureManager|GestureManager]]
|-
* [[User:Dzonatas_Sol/SNOW-375_Resources/Inventory|Inventory]]
| style="text-align:right;" | PUT
* [[User:Dzonatas_Sol/SNOW-375_Resources/Interface|Interface]]
|-
| style="text-align:right;" | DELETE
 
|-
| rowspan="4" | /Asset/Notecard/<uuid>
| style="text-align:right;" | GET
| Response is the notecard item specified by UUID converted to XML format (rather than 'linden notecard format')
|-
| style="text-align:right;" | POST
|-
| style="text-align:right;" | PUT
|-
| style="text-align:right;" | DELETE
 
|-
| rowspan="4" | /AvatarTracker/Friends
| style="text-align:right;" | GET
| Response is the UUID list of the agent's friends and basic status of each
|-
| style="text-align:right;" | POST
|-
| style="text-align:right;" | PUT
|-
| style="text-align:right;" | DELETE
 
|-
| rowspan="4" | /AvatarTracker/Friend/<uuid>
| style="text-align:right;" | GET
| Response is a detailed relationship information for a specified friend UUID
|-
| style="text-align:right;" | POST
| Combined query, like GET method, when uuid="s"
|-
| style="text-align:right;" | PUT
|-
| style="text-align:right;" | DELETE
 
|-
| rowspan="4" | /ChatterBox/Message
| style="text-align:right;" | GET
|-
| style="text-align:right;" | POST
| Deliver a message formatted in LLSD to a group/IM channel
|-
| style="text-align:right;" | PUT
|-
| style="text-align:right;" | DELETE
 
|-
| rowspan="4" | /ChatterBox/StartGroupSession
| style="text-align:right;" | GET
|-
| style="text-align:right;" | POST
| Initiate a group chat session with information in LLSD
|-
| style="text-align:right;" | PUT
|-
| style="text-align:right;" | DELETE
 
|-
| rowspan="4" | /GestureManager/Items
| style="text-align:right;" | GET
| Response is a list of UUID of active gestures
|-
| style="text-align:right;" | POST
|-
| style="text-align:right;" | PUT
|-
| style="text-align:right;" | DELETE
 
|-
| rowspan="4" | /GestureManager/Item/<uuid>
| style="text-align:right;" | GET
| Response is the details of a MultiGesture structure for the UUID specified
|-
| style="text-align:right;" | POST
| Combined query, like GET method, when uuid="s"
|-
| style="text-align:right;" | PUT
|-
| style="text-align:right;" | DELETE
 
|-
| rowspan="4" | /GestureManager/PlayGesture/<uuid>
| style="text-align:right;" | GET
|-
| style="text-align:right;" | POST
| Start a gesture identified by <uuid>
|-
| style="text-align:right;" | PUT
|-
| style="text-align:right;" | DELETE
 
|-
| rowspan="4" | /Inventory/Item/<uuid>
| style="text-align:right;" | GET
| Response is the details of an inventory item specified by the UUID
|-
| style="text-align:right;" | POST
| Combined query, like GET method, when uuid="s"
|-
| style="text-align:right;" | PUT
|-
| style="text-align:right;" | DELETE
 
|-
| rowspan="4" | /Inventory/Root
| style="text-align:right;" | GET
| Response is the UUID of the root inventory folder
|-
| style="text-align:right;" | POST
|-
| style="text-align:right;" | PUT
|-
| style="text-align:right;" | DELETE
 
|-
| rowspan="4" | /Inventory/Category/<uuid>
| style="text-align:right;" | GET
| Response is the UUIDs of the descendant categories and items of the specified UUID
|-
| style="text-align:right;" | POST
| Combined query, like GET method, when uuid="s"
|-
| style="text-align:right;" | PUT
|-
| style="text-align:right;" | DELETE
 
|-
| rowspan="4" | /Interface/Connect
| style="text-align:right;" | GET
|-
| style="text-align:right;" | POST
| Attempt to negotiate a connection to enable the above resources
|-
| style="text-align:right;" | PUT
|-
| style="text-align:right;" | DELETE
 
|}

Revision as of 16:05, 30 July 2010

Overview

SNOW-375 is an API to the Snowglobe code base to query reflexive information that affects Avatar, Agent, Assets, Inventory, Gestures, and other states of the client as it interacts with the virtual world. In order to enable the widest range of devices and scripts to communicate with the client, the API is language-agnostic. The flexibility of client-side scripting is a significant feature of SNOW-375.

SNOW-375 allows for a multi-headed client architecture instead of a single monolithic design. There are many possibilities to this besides client-side scripting, like augmented reality devices, gesture recognition devices, social networking, advanced heads-up displays, integrated desktop programs (desklets), joysticks, machinima tools, and many more. Multi-headed clients are also significant, yet its transport layer may be platform dependent.

Another significant feature of SNOW-375 is that it has enabled right-to-left (bidi glyphs) text, which means that the Second most spoken language in the world is enabled by client-side scripted communicator since Snowglobe has only supported left-to-right user interfaces. We used the scripts control toolkits that were already available to display advanced input and output methods for automatic detection of text direction and glyph shaping. This immediately opens up Second Life much larger audience than thought to already have.

Technical

SNOW-375 is based on the ReST design paradigm, so the transport layer can be fully abstracted from its default style, HTTP. Each query uses a named resource, a ReST method, and a LLSD formatted payload. Being reflexive, the flow of the query can be unidirectional to an another process, bidirectional between two processes, or internalized to an implementation. The named resources relate to a URL (to normally build a URI) used to process a query method with a payload.

Resources may overlap functionality with VWRAP, yet VWRAP has not been designed for the dynamics that SNOW-375 demands. VWRAP has assumed a single headed client, yet SNOW-375 has been designed from the start to support multi-headed clients that may not be on the same host. In this sense, the protocol assumes a default channel through the Snowglobe client for maximum ability, yet concurrent application may use their own channel. HTTP Textures is an example where positional data is gathered from the Snowglobe client, yet the tiles are downloaded directly to the concurrent application instead of through the Snowglobe client. This multi-headed design allows the Snowglobe client to preform and not waste time with bandwidth it doesn't need to process.

Resources

Resources are grouped by major representations. These are still being developed, yet a basic set exists that enables communication and gesture activation.

Resources may have more than one method. Each one is described. Parenthesized methods are just a more complex method of the original simpler method being described. Complex queries are usually used to group multiple queries together, yet this action is more of an implementation detail and helpful to know it exists.