Difference between revisions of "Current login protocols"

From Second Life Wiki
Jump to navigation Jump to search
(Undo revision 65060 by Saijanai Kuhn (Talk))
Line 81: Line 81:
::unknown
::unknown


==Return Value==
==Response==
The valid (non-error) value returned by the login call is in standard xmlrpc name, value format. The most important of these is the [[Current_login_protocols#Login_Seed-Capability|"Login Seed-Capability"]] discussed below (not to be confused with the new "seed capability" for the new login procedure):
The valid (non-error) value returned by the login call is in standard xmlrpc name, value format. The most important of these is the [[Current_login_protocols#Login_Seed-Capability|"Login Seed-Capability"]] discussed below (not to be confused with the new "seed capability" for the new login procedure):


::Note: Values associated with the optional string parameters are preceded by a "*" and placed at the end of the list.
:Note: all return values are in "name: value" format as used in [http://docs.python.org/lib/typesmapping.html Python 2.5 dictionaries] unless otherwise noted.
 
::Note: [[Login_Return_Values|A complete dump of return values]] was moved to another page for clarity.
::Note: [[Login_Return_Values|A complete dump of return values]] was moved to another page for clarity.


===Required Response===


:• '''last_name: lastname'''
:• '''last_name: lastname'''
Line 127: Line 127:
:• '''login: true'''
:• '''login: true'''


:• '''*inventory-root: [{'folder_id': '547448bd-4b66-4bc9-bb87-2dc5c7a1fa8b'}]'''
===Optional Response===
 
:• '''*inventory-skeleton: [Array of parent folder UUID, version number, name, folder type and folder UUID]'''


:'''*inventory-lib-root: [{'folder_id': '1c7a7fd0-104e-a8b1-51c6-32ea9b08e38b'}]'''
:'''inventory-root'''
:UUID of the agent’s root inventory folder.
{ 'inventory-root': [{'folder_id': <uuid>}]


:• '''*inventory-lib-owner: [{'agent_id': 'ba2a564a-f0f1-4b82-9c61-b7520bfcd09f'}]'''
'''inventory-skeleton'''
:Initial list of folders in agent’s inventory. Returned as an array of five-entry dictionaries. Each dictionary element describes a folder with its name, version, type, its UUID, and the UUID of the containing folder.
{'inventory-skeleton': [{'parent_id': <uuid>, 'version': <int>, 'name': <name>, 'type_default': <int>, 'folder_id': <uuid>},  .... ]}


:• '''*inventory-skel-lib: Array of parent UUID, version number, name, type and folder ID'''  
'''inventory-lib-root'''
:folder_id of library root inventory folder.
{ 'inventory-lib-root': [{'folder_id': <uuid>}] }


:• '''*gestures: Array of asset UUID, item UUID'''  
'''inventory-lib-owner'''
:agent_id of owner for inventory lib. 
{ 'inventory-lib-owner': [{'agent_id': <uuid>}] }


:'''*event_categories: Array of: category ID number and category name'''  
'''inventory-skel-lib'''
:Initial list of folders in agent’s inventory. Returned as an array of five element dictionaires. Each dictionary describes a folder with its name, its UUID, the UUID of the containing folder, its type, its version.
{'inventory-skeleton': [{'parent_id': <uuid>, 'version': <int>, 'name': <name>, 'type_default': <int>, 'folder_id': <uuid>},... ]}


:• '''*event_notifications:  []'''
'''gestures'''
:List of active gestures. An array of two element dictionaries with the inventory item uuid and the asset uuid.
{ 'gestures':  [{'item_id': <uuid>, 'asset_id': <uuid>},...] }


:• '''*classified_categories: Array of category ID number, category name'''


:• '''*buddy-list: [Array of buddy UUID, and numerical values for: buddy rights given, buddy rights has]'''  
'''event_categories''' 
:List of different event categories, mapping category id (an integer) to a category name. Returned as an array of two element dictionaries. Each dictionary describes a category’s id and it’s name.
{ 'event_categories': [{'category_id': <int>, 'category_name': <name>},...] }


:'''*ui-config: [{'allow_first_life': 'Y'}]'''
'''event_notifications'''
:List of events for which the agent has pending notifications. An array of eight-element dictionaries containing: event_id, event_name, event_desc, event_date, grid_x, grid_y, x_region, y_region.
{'events': [{"event_id":<uuid>, "event_name"<name>,"event_desc":<string>, "event_date":<date>, "grid_x":<float>, "grid_y":<float>, "x_region":<float>, "y_region":<float>}, ...]}
                 
'''classified_categories"'''
:List of classifieds categories, mapping category id (an integer) to a category. Returned as an array of two element dictionaries with a category’s id and it’s name.
{ 'event_categories': [{'category_id': <int>, 'category_name': <name>},...] }
         
'''buddy-list'''
:List of friends with granted and given rights masks. Returned as an array  of three-element dictionaries with riend’s agent id, granted rights mask, given rights mask.
{ 'buddy-list':[{'buddy_id': <uuid>', 'buddy_rights_given': <int>, 'buddy_rights_has': <int>}, ....] }
           
'''ui-config'''
:list of UI enabled/disabled states, currently: allow_first_life ('Y' or 'N') for teens. 
{ 'ui-config': {'allow_first_life': if allow first life} }


:• '''*login-flags:   [{'daylight_savings': 'N', 'stipend_since_login': 'N', 'gendered': 'Y', 'ever_logged_in': 'Y'}]'''
'''login-flags''' 
:Several flags about the state of the agent.
{ 'login-flags': {'stipend_since_login': <'Y'|'N'>, 'ever_logged_in': <'Y'|'N'>, 'gendered': <'Y'|'N'>, 'daylight_savings': <'Y'|'N'>} }


:• '''*global-textures: [{'sun_texture_id': 'cce0f112-878f-4586-a2e2-a8f104bba271', 'cloud_texture_id': 'fc4b9f0b-d008-45c6-96a4-01dd947ac621', 'moon_texture_id': 'd07f6eed-b96a-47cd-b51d-400ad4a1c428'}]'''
'''global-textures'''
:The asset ids of several global textures.
{ 'global-textures': {'sun_texture_id': <uuid>, 'moon_texture_id': <uuid>, 'cloud_texture_id': <uuid>} }


==Login Seed-Capability==
==Login Seed-Capability==

Revision as of 14:45, 23 April 2008

Rationale

The current login involves sending an xmlrpc message to a Second Life login server and parsing the returned value.

Example code that shows how to do this is found here: Example_protocol_code.

The login parameters are all "structs": key, value pairs. All keys and values are simple key, value pairs, except the value associated with "options" which is an array of zero or more character strings. The order of the required structs doesn't seem to matter. Likewise, the character strings in the options array may appear in any order.

The information on this page will eventually be superseded by a new login protocol, such as the login proposal by AWG or the strawman proposal from Linden Lab.

Conventions

On this page the following conventions are used:

"in quotes is a literal string"
[ represents a list of choices | separated by a vertical bar ]
< represents a value which can be substituted by an appropriate string described inside >
'represents a string that must be quoted, but how will be implementation specific' for example in LSL "" denotes a string and " will be used in place of the single quote (').
+ means to concatenate the two parts, though how will be implementation specific, for example + can be used to concatenate strings.

Input parameters

Required parameters

The following explains the standard key value pairs, with an explanation of "options" at the end:

"first": <first>
first name of the avatar.
"last": <last>
last name of the avatar.
"passwd": '$1$' + <passwd_md5>
the avatar password encrypted using MD5 encryption.
"start": ["first" | "last" | <specific location> ]
attempt to log in to this sim, though if it is full or not available, or the agent is not allowed, another sim will be selected by the grid from its list of choices. "First" means home location. If home is filled then the grid will try last. If last is filled and home is set, the grid will try home. In either case the last choice will be from a list of telehubs. For a log in to a specific location the format is "uri:<existing region name>&<x>&<y>&<z>".
"channel": <channel name>
the name of the client. Used to differentiate official viewers from third party clients.
"version": <version string>
version number of the client.
"platform": ["Lin" | "Mac" | "Win"]
the platform of the client.
"mac": <MAC Address>
the MAC address associated with the client's computer.
"options": <optional_login>
optional array of character strings. (See below)
"id0": "00000000-0000-0000-0000-000000000000"
hardware hash (based on the serial number of the first hard drive in Windows) used for uniquely identifying computers.
"agree_to_tos": ["true" | "false" | ""]
whether or not the user has agreed to the Terms of Service.
"read_critical": ["true" | "false" | ""]
whether or not the user has read important messages such as Terms of Service updates.
"viewer_digest": "00000000-0000-0000-0000-000000000000"
MD5 hash of the viewer executable, only relevant when the channel is set to an official Second Life viewer.

Optional Parameters

Zero or more of the following character strings may appear in any order in the array following the "options" keyword:

"inventory-root"
refers to the UUID of the root inventory folder in the client's inventory window
"inventory-skeleton"
"starter kit" inventory (?)
"inventory-lib-root"
unknown
"inventory-lib-owner"
unknown
"inventory-skel-lib"
LL supplied library of inventory items
"gestures"
refers to the list of UUIDs that an avatar will perform
"event_categories"
unknown
"event_notifications"
unknown
"classified_categories"
unknown
"buddy-list"
unknown
"ui-config"
unknown
"login-flags"
unknown
"global-textures"
unknown

Response

The valid (non-error) value returned by the login call is in standard xmlrpc name, value format. The most important of these is the "Login Seed-Capability" discussed below (not to be confused with the new "seed capability" for the new login procedure):

Note: all return values are in "name: value" format as used in Python 2.5 dictionaries unless otherwise noted.
Note: A complete dump of return values was moved to another page for clarity.

Required Response

last_name: lastname
sim_ip: 64.129.40.58
inventory-lib-owner: [{'agent_id': 'ba2a564a-f0f1-4b82-9c61-b7520bfcd09f'}]
start_location: last
seconds_since_epoch: 1195447316
message: -=- http://blog.secondlife.com -=- Visit the Official Linden Blog for the latest world status updates!
first_name: first_name
circuit_code: 245160577
sim_port: 13005
secure_session_id: fdb501ca-22f1-4470-b515-2650f54b8117
look_at: [r-0.85717299999999996274,r0.51502899999999995906,r0]
agent_id: d5f403c7-7981-425d-a0b5-c65a3d0a4693
inventory_host: inv12-mysql
region_y: 244992
region_x: 247808
seed_capability: https://sim2054.agni.lindenlab.com:12043/cap/d373fdc9-d275-e484-3ad2-4a9b231f4e34
agent_access: M
session_id: 65a7213a-723a-4fcf-baca-7b247c4b43c5
login: true

Optional Response

inventory-root
UUID of the agent’s root inventory folder.

{ 'inventory-root': [{'folder_id': <uuid>}] }

inventory-skeleton

Initial list of folders in agent’s inventory. Returned as an array of five-entry dictionaries. Each dictionary element describes a folder with its name, version, type, its UUID, and the UUID of the containing folder.

{'inventory-skeleton': [{'parent_id': <uuid>, 'version': <int>, 'name': <name>, 'type_default': <int>, 'folder_id': <uuid>}, .... ]}

inventory-lib-root

folder_id of library root inventory folder.

{ 'inventory-lib-root': [{'folder_id': <uuid>}] }

inventory-lib-owner

agent_id of owner for inventory lib.

{ 'inventory-lib-owner': [{'agent_id': <uuid>}] }

inventory-skel-lib

Initial list of folders in agent’s inventory. Returned as an array of five element dictionaires. Each dictionary describes a folder with its name, its UUID, the UUID of the containing folder, its type, its version.

{'inventory-skeleton': [{'parent_id': <uuid>, 'version': <int>, 'name': <name>, 'type_default': <int>, 'folder_id': <uuid>},... ]}

gestures

List of active gestures. An array of two element dictionaries with the inventory item uuid and the asset uuid.

{ 'gestures': [{'item_id': <uuid>, 'asset_id': <uuid>},...] }


event_categories

List of different event categories, mapping category id (an integer) to a category name. Returned as an array of two element dictionaries. Each dictionary describes a category’s id and it’s name.

{ 'event_categories': [{'category_id': <int>, 'category_name': <name>},...] }

event_notifications

List of events for which the agent has pending notifications. An array of eight-element dictionaries containing: event_id, event_name, event_desc, event_date, grid_x, grid_y, x_region, y_region.

{'events': [{"event_id":<uuid>, "event_name"<name>,"event_desc":<string>, "event_date":<date>, "grid_x":<float>, "grid_y":<float>, "x_region":<float>, "y_region":<float>}, ...]}

classified_categories"

List of classifieds categories, mapping category id (an integer) to a category. Returned as an array of two element dictionaries with a category’s id and it’s name.

{ 'event_categories': [{'category_id': <int>, 'category_name': <name>},...] }

buddy-list

List of friends with granted and given rights masks. Returned as an array of three-element dictionaries with riend’s agent id, granted rights mask, given rights mask.

{ 'buddy-list':[{'buddy_id': <uuid>', 'buddy_rights_given': <int>, 'buddy_rights_has': <int>}, ....] }

ui-config

list of UI enabled/disabled states, currently: allow_first_life ('Y' or 'N') for teens.

{ 'ui-config': {'allow_first_life': if allow first life} }

login-flags

Several flags about the state of the agent.

{ 'login-flags': {'stipend_since_login': <'Y'|'N'>, 'ever_logged_in': <'Y'|'N'>, 'gendered': <'Y'|'N'>, 'daylight_savings': <'Y'|'N'>} }

global-textures

The asset ids of several global textures.

{ 'global-textures': {'sun_texture_id': <uuid>, 'moon_texture_id': <uuid>, 'cloud_texture_id': <uuid>} }

Login Seed-Capability

The current Login Seed-Capability is a Capability associated with the login sim. It should not be confused with the Seed-Capability proposed for the new protocols.

See Current Sim Capabilities for more info.

External Links

[1] -- libsl login page, includes sample code.